はじめに
ArcGIS Platform は 2021 年 5 月に国内サービスを開始した地図アプリ開発者のための PaaS 製品です。
ArcGIS Platform の詳細は、ブログ記事「ArcGIS Platform (PaaS) の国内サービスを開始しました!」をご覧ください。
「ArcGIS Platform の紹介 ~ロケーションサービスの機能と価格~ 」の記事では、ArcGIS Platform で利用できるロケーションサービスについて紹介しました。この記事では、そのロケーションサービスを使用するための API/SDK のラインナップと選択する際のポイントについて紹介していきます。ArcGIS Platform には利用用途によって使い分け可能な API/SDK がいくつか用意されています。用途を大きく分けると次の4つに分けられます。
① 組み込み/自動化
② Web
③ モバイル/デスクトップ
④ ゲームエンジン
「② Web」と「③ モバイル/デスクトップ」 用にはコーディング量を抑えて開発可能なローコードツールも用意されています。
API/SDK のラインナップ
① 組み込み/自動化
組み込み処理や自動化処理などで利用できます。例えば、センサーの位置や計測情報を ArcGIS Platform の Web サービスに更新するような機能や、定期的にデータを更新・バックアップする機能、サーバーサイドでジオコーディングを行う機能などの用途で利用できます。これらの用途で利用可能な API には以下のものがあります 。
ArcGIS Platform で提供される全ての API/SDK は、この ArcGIS REST API をベースに開発されています。REST エンドポイントを提供しており、ArcGIS Platform の Web サービスに対して HTTP リクエストを送り、その結果が JSON で返されます。JSON の結果を解析して、自身のプログラムに組み込んで利用できます。
ArcGIS REST API では、ArcGIS Platform のロケーションサービスで利用可能な全ての機能を提供しています。また範囲を指定して地図画像(JPEG/PNG形式)を出力することもできます。
ArcGIS REST API をより使いやすくするためにラッピングされた JavaScript ライブラリです。JavaScript ライブラリなので、Node.js との親和性も高く、サーバーサイドでロケーション機能を利用できます。
利用できる機能は、ジオコーディング、交通ネットワーク解析、データのクエリ・編集、認証(API キー、OAuth)等で、地図の描画機能はありません。
ジオコーディングのコード例
GIS データの作成・更新・バックアップ等のバッチ処理や自動化処理を行う際や、Python 特有の演算ライブラリと組み合わせて空間解析を行う際に利用できる機能が豊富に用意されています。
Jupyter Lab 上で利用できる地図表示のためのコンポーネントもあります。
Jupyter Lab 上での利用
組み込み/自動化用の API の選択のポイント
サーバーサイドの処理で Node.js と連携する場合は ArcGIS REST JS、データ更新等の自動化処理に利用する場合は ArcGIS API for Python を利用できます。それ以外での用途や、ArcGIS REST JS 及び ArcGIS API for Python で用意されていない機能を使いたい場合は、ArcGIS REST API を利用するのが一般的な使い方です。
② Web
Web ブラウザ上で地図表示やロケーション機能を利用するアプリを開発する際に利用できる API が用意されています。オープンソースを含む ArcGIS の API、および、サードパーティの API を使用して地図アプリを開発できます。利用可能な API には以下のものがあります。
2D/3D 対応、豊富なビジュアライゼーション、高度なロケーション機能、ウィジェットを使用した開発などが特長の API です。様々なロケーション機能がウィジェットとして提供されており、コーディング量を抑えてアプリを開発できます。また、ESモジュールも公開されているので、React や Vue.js などでの開発もシームレスに行えます。
ArcGIS Platform を使用してはじめて地図アプリを開発する場合は、この API を利用することをお勧めします。
Leaflet はオープンソースでメジャーな軽量な地図ライブラリです。その Leaflet で ArcGIS Platform のロケーションサービスを利用するために、Esri Leaflet と呼ばれる Leaflet のプラグインが用意されています。ArcGIS Platform の一部のロケーション機能については、ArcGIS REST JS のライブラリを読み込んで使用します。
Mapbox GL JS 及び OpenLayers で開発したアプリ上で、ArcGIS Platform のロケーションサービスを利用できます。アプリ上で ArcGIS REST JS のライブラリを読み込んでロケーション機能を使用します。
下図では Mapbox GL JS と OpenLayers で開発したアプリ上で ArcGIS Platform のジオコーディング機能を使って住所検索しています。図ではそれぞれのライブラリのネイティブのベースマップ(Mapbox:ゼンリン地図、OpenLayer:OpenStreetMap)を表示していますが、代わりに ArcGIS Platform のベースマップを表示することもできます。
Web アプリ開発用のローコードツール
Web アプリ開発用のローコードツールには ArcGIS Experience Builder と ArcGIS Web AppBuilder の2つがあります。それぞれ専用のツールを使いウィジェットを構成していくことで、UI 操作のみでアプリを作成できます。コーディングでの機能拡張(ウィジェットを開発)にも対応しています。
※ 両ツールとも現在 API キーには対応していませんが、今後対応予定です。
ウィジェットの配置位置やサイズ変更などを行い、アプリのレイアウトを自由に設定することができます。コーディングで機能拡張する際は、主に React を使用します。新しいツールのため、ArcGIS Web AppBuilder と比較すると利用可能な機能(ウィジェット)が少ないですが、随時拡充されています。
地図が中心の組み込みのテーマからアプリのレイアウトを選択できます。コーディングで機能拡張する際は、主に Dojo を使用します。
Web 用の API の選択のポイント
使い慣れているライブラリ(Leaflet、Mapbox、OpenLayers)がある場合はそちらを利用します。初めて地図アプリを開発する場合は、ArcGIS Platform のロケーション機能の実装が容易で機能も豊富な ArcGIS API for JavaScript を利用することをお勧めします。
Web アプリ上で地図表示が不要(ジオコーディングの処理結果だけが必要など)な場合は、ArcGIS REST JS も利用できます。
また、ノンコーディングで作成したい、コーディング量を抑えたいといった場合はローコードツールも利用可能です。ArcGIS Experience Builder は自由なレイアウト設定と React での開発に対して、ArcGIS Web AppBuilder は地図が中心のレイアウトと Dojo での開発が大きな違いとして挙げられます。
③ モバイル/デスクトップ
モバイルやデスクトップ端末上で地図の表示やロケーション機能を利用するネイティブ アプリを開発する際に利用できる SDK が用意されています。
ArcGIS Platform の Web サービスを利用したアプリだけでなく、完全なオフライン環境でも利用できるアプリを開発できるのが特長の SDK です。Android、iOS、.NET、Java、Qt の開発プラットフォームごとにそれぞれ SDK が用意されています。AR/VR アプリ開発用のオープンソースのツールキットも公開されています。
下図では各 ArcGIS Runtime SDK の実行環境と開発環境をまとめています。アプリでサポートする OS や開発者のスキル等を考慮して、最適な SDK を選択できます。
各 SDK の実行環境と開発環境
※ Java と Qt 用の SDK は ESRIジャパンにおける製品保守サポート等の対象外です。利用方法に関するご質問は Esri Community (Java / Qt) から直接お問い合わせをお願いいたします。
モバイル/デスクトップ アプリ開発用のローコードツール
機能やレイアウトごとに用意されたテンプレートを用いて、UI 操作だけでネイティブ アプリを開発できます。Qt を使用したコーディングによる機能拡張も行えます。クロスプラットフォームにも対応しており、ひとつのソースコードで Windows、Ubuntu、macOS、Android、iOS 向けにアプリをビルドできます。
※ ArcGIS AppStudio はESRIジャパンにおける製品保守サポート等の対象外です。利用方法に関するご質問は Esri Community から直接お問い合わせをお願いいたします。
モバイル/デスクトップ用の SDK の選択のポイント
ArcGIS Runtime SDK の各 SDK(Android / iOS / .NET / Java / Qt)は基本的に同じロケーション機能が提供されているので、開発するアプリの要件や開発者のスキル等の条件を考慮して最適な SDK を選択できます。
ノンコーディングで作成したい、コーディング量を抑えたいといった場合はローコードツールである ArcGIS AppStudio も利用できます。
④ ゲーム エンジン
Unity 及び Unreal Engine 用にそれぞれプラグインが用意されています。プラグインを使用することで、ArcGIS Platform で公開されるベースマップ、標高データ、3D データを Unity 及び Unreal Engine 上で表示できます。現在はベータ版で利用可能な機能も限定的ですが、今後機能が拡充されていく予定です。
※ ArcGIS Maps SDK (Unity/Unreal Engine) はベータ プログラムとして米国Esri社が提供しているものであり、ESRIジャパンにおける製品保守サポート等の対象外です。ご質問やご不明点はベータ プログラム ページ の User Forums から直接お問い合わせをお願いいたします。
ゲームエンジン用の SDK の選択のポイント
Unity 及び Unreal Engine 用のプラグインには、同じロケーション機能が用意されているので、使い慣れているゲームエンジンを選択できます。
最後に
ArcGIS Platform で利用可能な API/SDK のラインナップと選択のポイントについて紹介してきました。組み込み/自動化、Web、モバイル/デスクトップ、ゲームエンジンなどの利用用途によって最適な API/SDK を選択できます。今回紹介した全ての API/SDK は開発者アカウントを作成することで、無償で開発・評価していただけます。ぜひお試しください!
参考
- ArcGIS Platform
- ArcGIS Developer 開発リソース集
- API/SDK
- 組み込み/自動化
- ArcGIS REST API
- ArcGIS REST JS
- ArcGIS API for Python
- Web
- ArcGIS API for JavaScript
- Esri Leaflet
- Mapbox GL JS 連携
- OpenLayers 連携
- ArcGIS Experience Builder (Developer Edition)
- ArcGIS Web AppBuilder (Developer Edition)
- モバイル/デスクトップ
- ArcGIS Runtime SDK
- ArcGIS AppStudio
- ゲーム エンジン