ArcGIS API for Python のコアコンセプト その 2:Anaconda、Conda、Jupyter Notebook、そしてArcGIS Pro

Document created by hiromu_nakamuraesrij-esridist Employee on Jul 10, 2019
Version 1Show Document
  • View in full screen mode

はじめに

先月、ArcGIS API for Python のコアコンセプト その 1ArcGIS API for Python のコアコンセプト その1:Python、API、そしてREST を掲載いたしましたが、本稿はその続きです。前回は PythonAPIREST など、ArcGIS API for Python を理解する上での前提となる技術やコンポーネントについて紹介しましたが、今回は Anaconda Conda について、また ArcGIS API for Python の環境を構築する上でのベストプラクティスについてご紹介します。前回の記事をまだご覧になっていない方は、併せてお読みいただければ幸いです。

 

以降の文章は、米国 Esri 社のブログ記事「ArcGIS API for Python Core Concepts Part 2: Anaconda, Conda, Jupyter Notebooks and ArcGIS Pro」を翻訳したものです。

 私達は ArcGIS API for Python とは何かについて前回のブログで把握しました。今回は、特に ArcGIS Pro Jupyter Notebookのような他のソフトウェアと組み合わせて、API をインストールして利用するためのベスト プラクティスへと話を進めましょう。

はじめに、AnacondaConda について、そしてこれらが ArcGIS Pro 及び ArcGIS API for Python とどのように関係しているかについて、少しだけ回り道をする必要があります。

 

AnacondaConda、そして ArcGIS Pro

Anaconda は、ユーザー インターフェイスと共に Python 及び 各種 Python パッケージをバンドルしたフリーのオープン ソース ソフトウェアで、ユーザーが Python 環境とパッケージを管理することができます。

Anaconda は Conda も含んでおり、これはパッケージ管理と環境を管理するためのシステムです。Conda は、Anaconda や ArcGIS Pro のような他のプログラムが、複数の環境を管理できるようにするためのバックエンド プログラムでもあります。

さらに、Conda は各環境内のパッケージ管理も可能にし、あなたのパッケージを最新に保つ他、パッケージ間の依存関係も把握します。例えば、もし arcpy が特定のバージョンの numpy を必要とする場合、Conda はあなたが numpy をアップデートしないようにしてくれます。そのため、Conda Anaconda の中心的な役割を果たしています。

また、Conda Anaconda の間には Miniconda と呼ばれるバンドルもあります。Anaconda CondaPythonの基本インストール、その他 150 のモジュール、そしてユーザー インターフェイス (訳注:以下、複数回インターフェイスという単語が現れますが、厳密には GUI を指すものと思われます。) を含むのに対し、Miniconda Conda Python の基本的なインストールだけを含んでいます。

ArcGIS Pro のバック グラウンドで動くためユーザーは直接利用することはありませんが、Miniconda ArcGIS Pro と一緒にインストールされます。

 

Conda、MinicondaAnacondaの違い

 

Python 環境の管理

環境の管理について話を続けましょう。環境の管理とはどういう意味でしょうか?シンプルに言うと、「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 をどこで探せばよいか伝える必要がありました。これを、環境を変えるたびに行う必要があったのです。

このワークフローにはいくつかの問題があります。すなわち、

 

  • ユーザーが、Path 変数を変更するとは何なのかを把握している必要がある
  • Python プログラムの全てに影響が及ぶ
  • 特に複数の Python を利用するプログラムを持っている場合や、複数の Python のインストールがある場合、ソフトウェアに問題が起きる可能性がある
  • ユーザーが何の環境を持っているのか、それらがどこにあるのかを把握している必要がある
  • パッケージのインストールがユーザーに依存する
  • パッケージの自動アップデートや管理がされないため、パッケージの依存関係を損なう可能性がある

 

Conda はこれらの問題を全て解決します。

 

  • ユーザーがシステム環境を変更する必要が無い
  • プログラムごとに異なる Python 環境を利用できる
  • ユーザーが Python のパスを変えないため、ソフトウェアが影響を受ける可能性が減る
  • ArcGIS Pro と Anaconda は環境とパッケージ管理のための直感的なインターフェイスを持っている
  • Conda がパッケージのバージョン アップデートを把握し、ユーザーがコンフリクトを起こす相互依存パッケージをインストールすることを防止する

 

Conda の機能にアクセスするためには、AnacondaArcGIS Pro、もしくはコマンド プロンプトが利用できます。

 

Anacoda

Anaconda では、インターフェイスにより環境の作成、クローン、インポート、切り替えができます。さらに、パッケージのインストール、アンインストール、そしてアップデートも可能です。

一つだけ留意することは、ArcGIS API for Python (arcgis パッケージ) Anaconda でインストールする場合、Esri のチャネルを Anaconda に追加する必要があります。これにより、Conda arcgis のインストールとパッケージのアップデートにアクセスできるようになります。

 

Anaconda のインターフェイス

 

ArcGIS Pro

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-cheatsheet.pdf を参照ください。

Python コマンド プロンプトについて、もう少し掘り下げましょう。コマンドは 4 つのパートに別れます。

 

  1. Environment:行の最初の () 内に記載され、exe があるフォルダーの場所を示しています。
  2. Directory:インプット ファイルが検索されたり、アプトプット ファイルが保存されたりするフォルダーの場所です。
  3. Toolset:コマンドを実行するためのパッケージ
  4. Command またはパッケージに実行させたいこと:コマンドはパラメーターを含みます

 

以下のスクリーンショットでは、デフォルトの ArcGIS Pro 環境をディレクトリとしても使用していることがわかります。これは必ずしもそうしなければいけないわけではなく、ディレクトリを変更してファイルを別の場所に保存することが可能です。

 

 コマンド プロンプトのコンポーネント

 

では、いつ Anaconda を使い、いつ 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 ArcGIS API for Python

ここまでで、私達は 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 はあなたがスクリプトを書いて実行できるようにするためのプログラムです。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 のコンテンツ (英語):

Attachments

    Outcomes