ArcGIS Pro SDK (以下 Pro SDK) は、ArcGIS Pro を拡張することができる開発キットです。Pro SDK では、現在ベータ版で提供されている ArcGIS Pro アシスタントを拡張するためのテンプレートである、「ArcGIS Pro SDK AI Assistant Function テンプレート」を提供しています。本記事では Pro SDK のテンプレートを使用して、ArcGIS Pro アシスタントの機能を拡張する方法をご紹介します。
本記事は、ArcGIS で利用できる AI を紹介する AI Weeks 10 日目の内容です。ぜひ他の投稿もチェックしてみてください。
本記事で取り上げる AI は 2025 年 9 月現在ベータ版での提供となっております。
ESRIジャパンで提供する Esri 製品サポート サービスや開発者サポート サービスはご利用いただけませんので、予めご了承ください。
また、本記事で紹介するプロンプトを使用しても、内部の処理や状況によって出力が異なる場合があります。
ArcGIS における AI の信頼性についてはこちらの記事をご参照ください。
目次
ArcGIS Pro SDK とは
ArcGIS Pro SDK は、ArcGIS Pro のアドイン開発や構成の拡張をコンセプトにしたソフトウェア開発キットです。Pro SDK を利用することで ArcGIS Pro の画面上に表示されている既存のタブ メニューの変更や、独自の機能を持ったタブ メニューの開発など、業務フローを効率的に実行できるように ArcGIS Pro をより使いやすく機能拡張することができます。
ArcGIS Pro SDK AI Assistant Function テンプレートの使い方
テンプレートで拡張できること
Esri Japan AI Weeks 9 日目のブログ記事「一足早く体験してみよう!ArcGIS Pro アシスタント (ベータ版) のご紹介」で ArcGIS Pro アシスタントではアクションの実行ができることをご紹介しました。現在、実行できるアクションが限られていますが、Pro SDK を使用して独自の処理を開発することで、アクションで実行できる機能の拡張が可能です。
ArcGIS Pro アシスタント、および ArcGIS Pro SDK AI Assistant Function テンプレートで作成したアドインは、ArcGIS Pro 3.5 日本語版の環境にもインストールすることは可能ですが、UI は英語で会話も英語のみの対応です。
テンプレートのインストール
テンプレートは、ArcGIS Pro アシスタントと同様に、Early Adopter Community に参加をすることで、早期にアクセスできるようになります。 アンケートに回答することで参加をリクエストすることができます。Early Adopter Community については、昨日のブログ記事でもご紹介していますので、併せてご確認ください。
招待されたページで入手できる Visual Studio の拡張機能「proapp-sdk-ai-assistant.vsix」を実行し、[Install] をクリックすると、Visual Studio にテンプレートが追加されます。
テンプレートを使用したアドイン作成
テンプレートを使用してアドインを作成します。今回は、アクティブなマップを使用してレイアウトを作成する処理を ArcGIS Pro アシスタントに追加する方法をご紹介します。
- Visual Studio 2022 を開き、新しいアドイン プロジェクトを作成します。ArcGIS Pro モジュール アドインのプロジェクト テンプレートを選択し、プロジェクト名や格納場所などを入力します。今回は、「CreateLayoutAIFunction」という名称でプロジェクトを作成しています。
- ソリューション エクスプローラーのプロジェクトを右クリックし [追加] > [新しい項目] を選択します。
- [ArcGIS] > [ArcGIS Pro Add-ins] メニューで [ArcGIS Pro AI Assistant Function (Beta)] をクリックして、任意の名前を入力し、[追加] を選択します。本記事では、レイアウト作成機能を実装するため「CreateDefaultLayout」としています。
追加が完了すると、AI アシスタントを拡張するための上記で入力した名称のクラス (本記事では CreateDefaultLayoutClass) が生成されます。
- 作成された CreateDefaultLayout.cs に AI アシスタントを使用してレイアウトを生成するコードを追加します。まず、AIAssistantFunction を以下のように変更します。
internal class CreateDefaultLayoutClass
{
// 変更ここから
[AIAssistantFunction, Description("Create a default layout using the current map")]
public static async Task<AIFunctionResult> CreateDefaultLayout([Description("The optional name of the layout")] string layoutName = "Default Layout")
// 変更ここまで
{
関数の Description を「Create a default layout using the current map」に、CreateDefaultLayout の Description を「The optional name of the layout」に変更しました。これは、AI が関数の目的を判断するために使用されます。また、作成されるレイアウト名を「Default Layout」としています。
- 次にレイアウトを作成する以下のコードを追加します。
[AIAssistantFunction, Description("Create a default layout using the current map")]
public static async Task<AIFunctionResult> CreateDefaultLayout([Description("The optional name of the layout")] string layoutName = "Default Layout")
{
// 追加
// アクティブなマップ ビューを取得
var map = MapView.Active.Map;
// レイアウトの作成
var layout = await QueuedTask.Run(() =>
{
var layout = LayoutFactory.Instance.CreateLayout(8.5, 11, LinearUnit.Inches);
layout.SetName(layoutName);
// マップ フレームを追加
var mf_env = EnvelopeBuilderEx.CreateEnvelope(0.77, 1.3, 7.7, 9.7);
var mf = ElementFactory.Instance.CreateMapFrameElement(
layout, mf_env, map, "Default Map", false);
// タイトルを追加
var title_sym = SymbolFactory.Instance.ConstructTextSymbol(
ColorFactory.Instance.BlackRGB, 36, "AvenirNext LT Pro Medium", "Italic");
var title_text = new Coordinate2D(0.77, 9.7);
ElementFactory.Instance.CreateTextGraphicElement(
layout, TextType.PointText, title_text.ToMapPoint(), title_sym,
layoutName, "Title Text1", false);
// 方位記号を追加
var na_frame = EnvelopeBuilderEx.CreateEnvelope(7.1, 1.3, 7.7, 1.9);
var north_arrow_info = new NorthArrowInfo()
{
MapFrameName = mf.Name
};
ElementFactory.Instance.CreateMapSurroundElement(
layout, na_frame, north_arrow_info, "", false,
new ElementInfo() { Anchor = Anchor.BottomRightCorner });
// 縮尺記号を追加
var sb_frame = EnvelopeBuilderEx.CreateEnvelope(3.09, 0.914, 5.4, 1.41);
var sbar_info = new ScaleBarInfo()
{
MapFrameName = mf.Name
};
ElementFactory.Instance.CreateMapSurroundElement(
layout, sb_frame, sbar_info, "", false,
new ElementInfo() { Anchor = Anchor.BottomMidPoint });
return layout;
});
ここで追加したコードは、通常のアドインを作成する際と同様にレイアウトの作成に必要な LayoutFactory クラスの CreateLayout メソッドとエレメントの作成に必要な ElementFactory クラスを使用しています。
今回は作成するレイアウト内のエレメントに、マップ フレーム、タイトル、方位記号、縮尺記号を使用しており、マップ フレームは CreateMapFrameElement メソッド、タイトルは CreateTextGlaphicElement メソッド、方位記号と縮尺記号は CreateMapSurroundElement メソッドを使用しています。Pro SDK でのレイアウトやエレメント作成についての詳細は GitHub のドキュメントをご参照ください。
- 最後に作成したレイアウトを開く処理を追加します。
});
// 追加
// 作成したレイアウトを開く
await FrameworkApplication.Current.Dispatcher.InvokeAsync(async () =>
{
await ProApp.Panes.CreateLayoutPaneAsync(layout);
});
return new AIFunctionResult("Layout created and opened");
}
}
}
CreateDefaultLayout.cs の変更は完了です。
- 次にソリューション エクスプローラーから Config.daml を開き、updatecategory 要素を以下のように変更します。
<updateCategory refID="esri_core_ai_assistant_extension_category">
<insertComponent id="CreateDefaultLayout_CreateDefaultLayout" className="CreateDefaultLayoutClass">
<content searchDescription="CreateDefaultLayout skill function class">
<aiAssistantFunction name="CreateDefaultLayout" searchDescription=" Create a default layout from the current map" condition="esri_mapping_mapPane">
</aiAssistantFunction>
</content>
</insertComponent>
</updateCategory>
updateCategory 要素の refID を esri_core_ai_assistant_extension_category にする必要があります。また AI アシスタントの拡張機能ごとに insertComponent 要素や aiAssistantFunction 要素が含まれています。今回の場合は一つの拡張機能を実装したため、aiAssistantFunction 要素の name を CreateDefaultLayout に変更しています。
また insertComponent 要素の className は、拡張機能のクラス名と一致する必要があります。今回の場合は、CreateDefaultLayoutClass となります。
最後に、マップが利用可能かどうか判断するために aiAssistantFunction 要素の condition を esri_mapping_mapPane と追記しています。
アドインの作成はこれで完了です。
アドインの実行
作成したアドインを実行してみます。
- Visual Studio の [ビルド] メニューの [ソリューションのビルド] でソリューションをビルドします。
- [デバッグ] ボタンをクリックして作成したアドインを実行すると ArcGIS Pro が起動します。
AI アシスタント機能を有効化している組織の ArcGIS Online/ArcGIS Enterprise 指定ユーザーで ArcGIS Pro にサイン インする必要があります。組織サイトで AI アシスタント機能を有効化する方法はこちらの記事をご参照ください。
- マップを含む任意のプロジェクトを開き、[Help] タブ > [AI Assistant (Beta)] ボタン をクリックすると、[AI Assistant (Beta)] ウィンドウが表示されます。
- [AI Assistant (Beta)] ウィンドウで [Actions] をクリックし、アクション セッションを開始します。プロンプトを入力することで、今回 Pro SDK で実装した機能を実行できます。
- 現在のマップからレイアウトの作成を指示する、「Please create a default layout using the current map」とプロンプトを入力し、Enter キーで実行します。今回実装した AI アシスタントの拡張機能を通じて、レイアウトが作成されます。
アドインで機能拡張をしていない AI アシスタントで同じプロンプトを入力すると、結果としてレイアウトを作成するための手順が返却されるため、Pro SDK でアクションの機能拡張ができたことがわかります。
さいごに
本記事では Pro SDK のテンプレートを使用して ArcGIS Pro の AI アシスタントの機能を拡張する方法をご紹介しました。今回はレイアウトを作成する機能を実装しましたが、他にも Pro SDK で提供されている機能で ArcGIS Pro アシスタントのアクションを拡張することができます。Early Adopter Community に参加することで、一足早く最新の AI アシスタントの機能に触れることができますので、ぜひ体験してみてください。
これまで Esri Japan AI Weeks と題し、ArcGIS で使える AI の基礎や、お手元で試していただける AI アシスタントの利用方法、今後リリースされる予定の AI 機能の記事を 2 週にわたってご紹介してきました。ArcGIS における AI は今後さらに強化されていく予定です。日々の業務をより効率的に進めるための支援として、ぜひご活用ください。