先月、ArcGIS API for Python のコアコンセプト その 1ArcGIS API for Python のコアコンセプト その1:Python、API、そしてREST を掲載いたしましたが、本稿はその続きです。前回は Python、API、REST など、ArcGIS API for Python を理解する上での前提となる技術やコンポーネントについて紹介しましたが、今回は Anaconda や Conda について、また ArcGIS API for Python の環境を構築する上でのベストプラクティスについてご紹介します。前回の記事をまだご覧になっていない方は、併せてお読みいただければ幸いです。
私達は ArcGIS API for Python とは何かについて前回のブログで把握しました。今回は、特に ArcGIS Pro や Jupyter Notebookのような他のソフトウェアと組み合わせて、API をインストールして利用するためのベスト プラクティスへと話を進めましょう。
はじめに、Anaconda、Conda について、そしてこれらが ArcGIS Pro 及び ArcGIS API for Python とどのように関係しているかについて、少しだけ回り道をする必要があります。
Anaconda は、ユーザー インターフェイスと共に Python 及び 各種 Python パッケージをバンドルしたフリーのオープン ソース ソフトウェアで、ユーザーが Python 環境とパッケージを管理することができます。
Anaconda は Conda も含んでおり、これはパッケージ管理と環境を管理するためのシステムです。Conda は、Anaconda や ArcGIS Pro のような他のプログラムが、複数の環境を管理できるようにするためのバックエンド プログラムでもあります。
さらに、Conda は各環境内のパッケージ管理も可能にし、あなたのパッケージを最新に保つ他、パッケージ間の依存関係も把握します。例えば、もし arcpy が特定のバージョンの numpy を必要とする場合、Conda はあなたが numpy をアップデートしないようにしてくれます。そのため、Conda は Anaconda の中心的な役割を果たしています。
また、Conda と Anaconda の間には Miniconda と呼ばれるバンドルもあります。Anaconda が Conda、Pythonの基本インストール、その他 150 のモジュール、そしてユーザー インターフェイス (訳注:以下、複数回インターフェイスという単語が現れますが、厳密には GUI を指すものと思われます。) を含むのに対し、Miniconda は Conda と Python の基本的なインストールだけを含んでいます。
ArcGIS Pro のバック グラウンドで動くためユーザーは直接利用することはありませんが、Miniconda は ArcGIS Pro と一緒にインストールされます。
Conda、Miniconda、Anacondaの違い
環境の管理について話を続けましょう。環境の管理とはどういう意味でしょうか?シンプルに言うと、「Python 環境」とは Python とパッケージを動かすために必要な全てのファイルを含んだコンピューター上のフォルダーです。
もし、あなたが ArcMap をインストールしたら、デフォルトでは Python 2.7の環境が C:\Python27\ArcGISXX フォルダーに作成されます。これが、あなたが ArcMap と ArcMap バージョンの arcpy で利用できる唯一の環境です。
一方、あなたが ArcGIS Pro を Miniconda と一緒にインストールした場合、arcgispro-py3 と呼ばれるデフォルトの Python 環境が、C:\Program Files\ArcGIS\Pro\bin\Python\envs フォルダーの中に作成されます。しかし、ArcMap とは異なり、あなたが必要なだけ別の環境を作成することが可能です。あなたは、ArcGIS Pro が使う環境を切り替えることもできます。これにより、あなたは異なるパッケージの組み合わせを使うことが可能になります。これは、コンフリクトを起こす相互依存パッケージに対応する際便利です (例えば、2 つの異なるパッケージが、共通する第 3 のパッケージの異なるバージョンを使っている場合など)。
これは、ArcMap と ArcGIS Pro の両方を利用している場合、特に便利です。あなたが 2 つのバージョンの Python をマニュアルでインストールしていなかったとしても、あなたは既に異なる 2 つの Python 環境を持っていることになります。
ArcMap と ArcGIS Pro をコンピューターにインストールした場合の Python
あなたがどのバージョンの Python を利用しているのかをスクリプトや IDE (統合開発環境) に知らせるためにはどうしたら良いでしょうか?
Conda が登場する以前は、異なる Python 環境を切り替えることは困難でした。環境を切り替えるためには、個々のスクリプトに対して正しい環境を伝えるか、環境変数 (PATH か PYTHONPATH) を変更してコンピューターに python.exe をどこで探せばよいか伝える必要がありました。これを、環境を変えるたびに行う必要があったのです。
このワークフローにはいくつかの問題があります。すなわち、
Conda はこれらの問題を全て解決します。
Conda の機能にアクセスするためには、Anaconda、ArcGIS Pro、もしくはコマンド プロンプトが利用できます。
Anaconda では、インターフェイスにより環境の作成、クローン、インポート、切り替えができます。さらに、パッケージのインストール、アンインストール、そしてアップデートも可能です。
一つだけ留意することは、ArcGIS API for Python (arcgis パッケージ) をAnaconda でインストールする場合、Esri のチャネルを Anaconda に追加する必要があります。これにより、Conda が arcgis のインストールとパッケージのアップデートにアクセスできるようになります。
Anaconda のインターフェイス
ArcGIS Pro では、[設定] > [Python] (以前のバージョンの場合、[ArcGIS Pro について] > [Python]) に進むとパッケージと環境の管理が可能です。
以下の画像では、arcgispro-py3 と arcgispro-py3-clone の 2 つの環境を持っていることがわかります。
ArcGIS Pro では、Esri のチャネルがデフォルトで追加されます。しかし、現段階では、その他のチャネルを ArcGIS Pro の中で追加する方法はありません。
Python 環境を ArcGIS Pro で管理する
最後に、コマンド プロンプトで Conda にアクセスすることも可能です。
Conda を操作する最も簡単な方法は、ArcGIS Pro と共にインストールされる Python コマンド プロンプトを使うことです。Python コマンド プロンプトは通常のコマンド プロンプトと同じですが、すでにデフォルトの環境とディレクトリがセットアップされています。
Python 環境を Python コマンドプロンプトで管理する
上のスクリーンショットでは、環境のリストとパッケージのリストをリクエストしています。コマンド プロンプトの中では、Conda のコマンドによりAnaconda や ArcGIS Pro のユーザー インターフェイスと同じような管理を実行することができますが、これらのコマンドを知っている必要があります。
Conda のコマンドについて詳しく知りたい方は、https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-chea... を参照ください。
Python コマンド プロンプトについて、もう少し掘り下げましょう。コマンドは 4 つのパートに別れます。
以下のスクリーンショットでは、デフォルトの ArcGIS Pro 環境をディレクトリとしても使用していることがわかります。これは必ずしもそうしなければいけないわけではなく、ディレクトリを変更してファイルを別の場所に保存することが可能です。
コマンド プロンプトのコンポーネント
これは、あなたの目的によります。Esri では通常 ArcGIS Pro を利用することをお勧めします。ArcGIS Pro の Miniconda は通常の Anaconda 単体のインストールよりもサイズが小さく、ArcGIS Pro 2.2 の時点では arcpy と arcgis (ArcGIS API for Python) の両方が自動的にインストールされています。ArcGIS Pro 2.2 以前のバージョンでは、ArcGIS API for Python は手動でインストールする必要がありました。arcpy は ArcGIS (訳注:ArcGIS Pro ないし ArcMap) をインストールした場合のみ利用できます。
一つだけ認識しておくべき重要なことは、あなたは Anaconda か ArcGIS Pro のどちらかが必要だということです。どちらかで構いません。しかし、 Anaconda と ArcGIS Pro の両方を単一のマシンにインストールすることは推奨しません。これは、複数の Python を Conda 無しでインストールすることと同じように、PATH の問題を引き起こすためです。
ここまでで、私達は Conda について深く掘り下げてきました。では Conda は ArcGIS API for Python とどのように関わっているのでしょうか?Conda は ArcGIS API for Python のシステム要件ではありません。しかし、arcgis パッケージは年に複数回アップデートされ、他の Python パッケージと複数の依存関係にあるため、Conda を使うことで arcgis パッケージの管理がより簡単になります。もしあなたが ArcGIS Pro の ArcGIS API for Python を使用しているなら、あなたは arcgis パッケージを含む全てのパッケージ管理のために Conda を使用していることになります。
.
最後に、「統合開発環境」もしくは「IDE」について話しましょう。IDE とは何でしょうか?
基本的に IDE はあなたがスクリプトを書いて実行できるようにするためのプログラムです。IDE はデバッグする際に非常に便利で、通常はスクリプトの記述を容易にするためにオートコンプリート機能を備えています。
ArcGIS API for Python は Python 3.5 に対応していれば、どの IDE でも実行可能です (訳注:ArcGIS API for Python のシステム要件https://www.esrij.com/products/arcgis-api-for-python/environments/は Python 3.5 以上のバージョンです。)。もしあなたが複数の環境を使っているのであれば、私達は Spyder や PyCharm のような環境の切り替えをサポートする IDE をお勧めします。
いくつかお勧めとして挙げたものの、ArcGIS API for Python と一緒に使う IDE としては Jupyter Notebook が推奨されます。Jupyter Notebook は Python のコードを対話的に実行し、マップ、チャート、テーブルといったアウトプットを可視化できます。また簡単にスクリプトを共有することもできます。あなたが ArcGIS Pro または Anaconda をインストールした時、Jupyter Notebook も同様にインストールされるでしょう。
Jupyter Notebook に埋め込まれたマップ
Jupyter Notebook は Python だけでなく、複数の言語をサポートしているため、開発者にとっては更に便利でしょう。
以上が ArcGIS API for Python のコアコンセプトです!まとめると、ArcGIS API for Python を利用するには様々な方法がありますが、ArcGISプラットフォームと十分に統合するために、Esri は ArcGIS Pro と共にインストールされる Miniconda と Jupyter Notebook を利用することをお勧めします。Happy Scripting!
米国 Esri 社ブログ (英語)
ArcGIS 関連ページ
ArcGIS 開発リソース集
関連する ArcGIS Blog のコンテンツ (英語😞