1.5. プログラミング開発環境#
1.5.1. Python 開発環境#
プログラムを作成して実行するには、開発環境(development environment)や実行環境(runtime environment)を整える必要があります。たとえば、Python でプログラムを開発・実行するには、Python の開発および実行環境を準備する必要があります。Python の開発においてよく使われる環境には、Visual Studio Code (VS Code, vscode)、PyCharm、Jupyter Notebook、Google Colaboratory (Google Colab) などがあります。
VS Code は、Python をはじめとしたさまざまなプログラミング言語に対応した多機能な開発環境です。拡張機能(プラグイン)をインストールすることで、機能を柔軟にカスタマイズできます。たとえば、GitHub Copilot を導入すれば、AI によるコーディング補助を受けることができ、開発効率が大幅に向上します。VS Code は MIT ライセンスのもとで公開されたオープンソースソフトウェア(open source software; OSS)であり、商用を含めて無償で利用できます。なお、名前が似ている Microsoft Visual Studio という開発環境もありますが、こちらは主に C# や C++ などを用いた大規模開発向けのツールであり、有償利用となります。
PyCharm は、Python に特化した開発環境であり、コード補完、デバッグ、プロジェクト管理など、高度な機能がそろっています。特に大規模な Python プロジェクトの開発に適しています。PyCharm には、Community Edition と Professional Edition の 2 つのエディションがあります。Community Edition は基本的な機能を備えており、Apache License 2.0 もとので公開されたオープンソースソフトウェアです。これに対して、Professional Edition は、ウェブアプリケーション開発やデータベース連携など、より高度な機能を提供し、有償で利用できます。
このような多機能な開発環境を統合開発環境(integrated development environment; IDE)と呼びます。便利な反面、機能が多いため、初学者にとってはやや扱いづらい場合もあります。そのため、初めてプログラミングを学ぶ場合は、統合開発環境の導入よりも、次に紹介する Jupyter Notebook や Google Colab などの簡易な環境から始めるのがよいかもしれません。
Jupyter Notebook は、Python を使ったデータ分析や可視化、機械学習の実験などに広く利用されているインタラクティブな開発環境です。コードを「セル」単位で実行できるため、エラーが出ても該当部分だけを修正・再実行でき、試行錯誤に向いています。また、markdown をサポートしているため、コードの説明や数式をドキュメントとして記述できます。Jupyter Notebook は、学習資料や研究記録としても優れています。Jupyter Notebook は 3-Clause BSD ライセンスのもとで公開されたオープンソースソフトウェアであり、商用利用も含め無償で使用できます。ただし、利用するにはまず Python をインストールし、次に Jupyter Notebook をインストールする必要があります。初心者にはこの作業がやや難しく感じられるかもしれません。
Google Colab は、Google が提供するクラウドベースの開発・実行環境です。Jupyter Notebook と同様のインターフェースを備えており、ウェブブラウザ上で Python のコードを記述・実行することができます。インターネット接続さえあれば、インストールや初期設定なしで使い始められるため、初心者にも非常に使いやすいのが特長です。Google アカウントがあればすぐに利用可能で、作成したノートブックは Google ドライブ上に保存されます。無償プランでも日常的なデータ解析や学習用途には十分な性能が提供されていますが、より高い計算リソースや長時間の実行が必要な場合には、Colab Pro や Colab Pro+ といった有料プランも選択できます。
プログラミングを初めて学ぶ方には、Google Colab をおすすめします。設定不要で始められ、コンピューターへのインストール作業も不要なため、手軽に学習をスタートできます。一方、インターネット接続に制限のある企業や研究機関などでは、Jupyter Notebook のローカルインストールが適しています。一度インストールすれば、オフラインでも利用可能であり、外部サービスに依存せずに開発を進められます。初心者が Jupyter Notebook をインストールする際には、組織内のコンピュータに詳しい人やサポート部門の手を借りるとよいでしょう。
1.5.2. Python 実行環境#
Python の実行環境を整える方法の一つに、Python 公式ウェブサイトからインストーラーをダウンロードし、手順に従って OS に直接インストールする方法があります。ただし、この方法には注意が必要です。たとえば、システムがすでに使用している Python を上書きしてしまったり、プロジェクトごとに異なるバージョンを使い分けるのが難しくなったりするなど、さまざまな問題が発生する可能性があります。
こうした問題を回避するため、Python の導入時には OS に直接インストールするのではなく、仮想環境(virtual environment)を作成し、その中に Python をインストールして運用するのが一般的です。仮想環境を利用すれば、プロジェクトごとに異なるバージョンの Python やライブラリを独立して管理することができます。たとえば、あるプロジェクトでは Python 3.8 を、別のプロジェクトでは Python 3.10 を使うといった切り替えも容易に行えます。これにより、プロジェクト間の依存関係の衝突を防ぎ、安定した開発環境を維持できます。
仮想環境の構築やバージョン管理に使われる代表的なツールとして、Miniconda や pyenv などがあります。
Miniconda は、Anaconda の軽量版で、主にデータ解析や機械学習などの用途を想定して設計されたパッケージ管理・仮想環境管理ツールです。Python の仮想環境を作成するためのツールと見なされることが多いですが、Miniconda は Python に限らず、R 言語やシステム関連のライブラリなども仮想環境内にインストール・管理することができます。作成した環境はコマンド一つで簡単に有効化・無効化ができ、直感的な操作が可能です。また、Miniconda のインストールもシンプルで、コマンド 1 つまたは GUI インストーラーを用いて短時間で完了します。初心者にも扱いやすいツールとなっています。
pyenv は Python 専用のバージョン管理ツールです。Miniconda と異なり、Python に特化しているため、システムの他のライブラリには影響を与えません。複数の Python バージョンを一台のコンピュータにインストールし、プロジェクトやディレクトリごとに使用するバージョンを切り替えることが可能です。操作は基本的にコマンドラインで行いますが、慣れてしまえば直感的に使えるようになり、公式ドキュメントも充実しているため導入も比較的容易です。Python にある程度慣れてきた段階で導入するとよいかもしれません。
Python の実行環境という観点から Miniconda と pyenv の違いを見ると、仮想環境の有効化方式に特徴があります。たとえば、「angelwings」と「sugarhalo」という 2 つのプロジェクトがあり、それぞれのプロジェクトに対応する仮想環境として「ENV_AW」と「ENV_SH」を用意したとします。
Miniconda の場合、作業ディレクトリに関係なく任意の仮想環境を手動で有効化することができます。たとえば、angelwings ディレクトリ内で ENV_SH という別の仮想環境を有効化して作業を行うことも可能です。このように、ディレクトリにとらわれずどこでも仮想環境を切り替えられるため、複数のディレクトリにまたがるような大規模なプロジェクトに向いています。ただし、環境の切り替えを手動で行う必要があるため、切り替え忘れや誤った環境で作業をしてしまうリスクもあります。
一方、pyenv ではプロジェクトごとに .python-version
ファイルを用意し、そのプロジェクトのディレクトリで使用する Python バージョンや環境を明示的に指定します。たとえば、angelwings ディレクトリに .python-version
ファイルを設置し、その中で ENV_AW を指定しておけば、そのディレクトリに移動するだけで自動的に ENV_AW が有効になります。また、この設定を変更しない限り、ENV_SH など別の環境に切り替わることはありません。このような仕組みは、一つのディレクトリ内で完結するような小規模プロジェクトに適しており、プロジェクトと仮想環境の対応関係を明確に保てるため、作業ミスを防ぎやすいという利点があります。
どちらのツールも、Python のバージョン管理や仮想環境の構築に大いに役立ちます。用途や開発スタイルに応じて適切な方法を選ぶとよいでしょう。