FAQ
ArcGIS Desktop のための ArcGIS アドインの構築

ナレッジ番号:2610 | 登録日:2023/05/29 | 更新日:2024/11/21

内容


アドインについて

ArcGIS 10 は、ArcGIS Desktop のカスタマイズや拡張を容易にする、新しく革新的な機能を取り入れており、そのひとつに新しい Desktop アドイン モデルがあります。新しいアドイン モデルは、ひとつの圧縮されたファイル内に都合よくパッケージ化されたカスタマイズの数々を作成するための、宣言型ベースのフレームワークを提供しています。アドインはインストール プログラムや COM への登録を必要とせずに、ユーザ間で簡単に共有できます。つまり、アドインは既知のフォルダに単純にコピーするだけでシステムに追加され、このフォルダから削除することでシステムから取り除かれます。また、アドインは集約されたネットワーク共有を利用して組織内のユーザで共有することもできます。

アドインは、拡張マークアップ言語(XML)とともに .NET を利用して記述されます。
XML はカスタマイズの内容を記したものです。一方、.NET のクラスはカスタムな振る舞いを提供します。ArcObjects ソフトウェア開発キット(SDK)には Microsoft Visual Studio、フリーのVisual Studio Express Edition などの開発環境と統合された、開発を容易にするためのアドイン ウィザードが含まれています。

いつアドインを使うべきか

ArcGIS アドインはデスクトップのカスタマイズの構築と共有を容易にします。しかし、構築しようとしているソリューションの目的と仕様によっては、以下の選択肢の方が適している場合もあります。

Python

すべての ArcGIS Desktop アプリケ-ションには Python という埋め込まれたスクリプト言語が含まれています。ArcGIS の多くの機能-特にジオプロセシング-は単純化された Python アプリケーション プログラミング インタフェース(API)を通してアクセス可能であり、一般的なタスクを記述し、自動化するのを容易にしています。Python スクリプトは簡単に共有でき、外部の開発環境なしで作成することが可能です。科学、エンジニアリング、数学といった分野に焦点を当てたさまざまな公開ドメインの Python モジュールが存在しています。

その強みがあるにもかかわらず、Python はすべてのプログラミング タスクに向いているわけではありません。対象は広がりつつありますが、現在ArcGIS のすべての分野が Python から利用できるわけではないのです。加えて、Python の編集とデバッグの技術は、Visual Studio のような商用の開発環境に含まれているものほど洗練されておらず、また使いやすいわけでもありません。最後に、Python を利用して ArcGIS イベントを取得したり、それに呼応したりすることはできず、COM のインタフェースを実装したり、Esri の多くの COM 拡張点にプラグインすることもできません。

従来の COM 拡張

アドインのフレームワークは ArcGIS によって定義されている、すべての拡張をサポートしているわけではありません。たとえば、カスタム レンダラ、カスタム ワークスペース、カスタム フィーチャはアドインとしてコーディングすることはできません。ソリューションがアドインのフレームワークでサポートされていないコンポーネント タイプを含む場合は従来の COM 拡張によるアプローチを採用する必要があります。さらに、アドインの共有はレジストレーションのステップを含まないので、ライブラリやアセンブリ、レジストレーションや管理者権限の介在が必要なサービスなどの外部的な依存を当てにするアドイン ベースのソリューションは利用することができません。

アドイン タイプ

すべての ArcGIS Desktop アプリケ-ションは、あらかじめ定められているアドイン タイプ一式をサポートしています。その中には、ArcGIS の以前のバージョンで導入された、従来の COM ベースの拡張モデルで使用されている、もっとも一般的な型が含まれています。以下のアドイン タイプが現在のリリースでサポートされています。

  • ボタンとツール
    ボタンとツールはツールバーやメニュー(※ボタンの場合)に表示される単純なコントロールです。
  • コンボ ボックス
    コンボ ボックスは項目のドロップダウン リストを提供し、オプション機能で編集可能な入力エリアも提供できます。
  • メニューとコンテキスト メニュー
    メニューはボタン、サブメニュー、そしてマルチ アイテムのドロップダウン リストを表示します。メニュー項目は、組み込みの機能、アドインの機能、またはその両方からもたらされます。メニューは一般的にツールバーにホストされますが、ショートカット メニューやルート メニューとして独立して表示することもできます。
  • マルチ アイテム
    マルチ アイテムは実行時に生成されるメニュー項目の動的なコレクションです。マルチ アイテムはメニュー上の項目が実行に先立って決定されない場合や、システムの状況に応じて項目を変更する必要がある場合に便利です。
  • ツールバー
    ツールバーはボタン、ツール、メニュー、ツール パレット、コンボ ボックスをホストします。メニューと同様に、ツールバーに表示されるコントロールは組み込みの機能、アドインの機能、またはその両方の組み合わせからもたらされます。ツールバーはアプリケーションに最初に追加された時に、ユーザにその存在がよくわかるよう、自動的に表示される設定にすることができます。
  • ツール パレット
    ツール パレットは関連するツール一式をグループ化するコンパクトな方法を提供します。一番最近使用されたツールは小さなドロップ ダウン ボタンを伴ってツールバーに表示され、そのドロップ ダウン ボタンを利用してグループ内の他のツールにアクセスします。メニューと同様に、ツール パレットに現れるツールは組み込みの機能、アドインの機能、またはその両方の組み合わせからもたらされます。
  • ドッカブル ウィンドウ
    ドッカブル ウィンドウはフローティングまたはドッキング状態のウィンドウで ArcGIS Desktop アプリケ-ション内に現れます。ドッカブル ウィンドウは、チャート、スライド ショー、ビデオ、ミニ マップ、Esri コントロールをはじめとする他のコントロールを含んだカスタム ダイアログ ボックスなどのコンテンツを入れることができます。アドインの開発者は、ドッカブル ウィンドウが最初に表示される場所や他のドッカブルウィンドウとグループ化されるかどうかに関して、多くの制御を行うことが可能です。
  • アプリケーション エクステンション
    アプリケーション エクステンションは、自身が含まれているアドイン内でボタン、ツール、ドッカブル ウィンドウなどの他のコンポーネントと連係して振舞うために利用されます。アプリケーション エクステンションは全体として、通常はアドインに関連する状態の保存に関与し、ホスト アプリケーションによって引き起こされるさまざまなイベントを受信し、呼応するために利用されます。アプリケーション エクステンションは必要なときに読み込まれ、あるいは関連するアプリケーションが開始した時に自動的に読み込まれる設定にすることができます。エクステンションは標準の ArcGIS エクステンション ダイアログ ボックスに表示されるように設定することもできます。
  • エディタ エクステンション
    エディタ エクステンションを使用すると、編集フレームワークに直接プラグ インすることで編集のワークフローをカスタマイズすることができます。アプリケーション エクステンションとは反対に、エディタ エクステンション アドインは編集セッションが開始した時に読み込まれます([エディタ] ツールバー → [エディタ] → [編集の開始])。エディタ エクステンションを作成することで、編集セッションの振る舞いをカスタマイズする(例:編集イベントを受信する)こともできます。

アドインの操作

アドインは、ウェブベースのリポジトリを含め、電子メールを経由したり、ファイル システムやネットワークをブラウズする方法など様々なソースから手に入れることができます。Windows エクスプローラで、アドイン ファイルを単純にダブル クリックすることでアドインをインストールすることができます。ダブル クリックをすると、Esri が提供する Add-In Installation Utility がアドインを有効化し、適切な既知のフォルダにアドインをコピーします。ユーザには、処理を進める前に作成者や説明、バージョン、電子署名の情報を確認する機会が与えられます。この有効化のステップでは、ファイルが適切な場所にコピーされ、名前の競合が対処され、そのアドインの既存のバージョンが存在している場合に、古いバージョンで上書きされないことを保証します。このユーティリティは、電子メールの添付や Web ページのリンクから直接実行することもできます。

Image

アドインは、ArcGIS Desktop アプリケ-ションの [ユーザ設定] カスタマイズ ダイアログ ボックスの [ファイルから追加] ボタンを利用してインストールすることもできます。

Image

[カスタマイズ] メニューから [ユーザ設定] ダイアログ ボックスにアクセスすることができます。ダブル クリックまたは [ファイルから追加] ボタンを使用してインストールされたアドインは、ローカル アドインに分類されます。ローカル アドインは、ローカル マシンのユーザ別の既知のフォルダに記録されます。

ESRI Add-In Utility を使用しなくても、アドイン ファイルを既知のフォルダに手作業でコピーすることはできますが、ファイル名の競合、バージョンの上書きなどを避けるために注意が必要です。この方法は、一般的にネットワーク上でアドインを共有するときに使用されます。

従来の COM コンポーネントと同様に、個々のアドイン タイプは [ユーザ設定] ダイアログ ボックスを用いてアクセスすることができます。たとえば、アドイン内で定義されたボタンは COM コマンドと同じ様に振る舞います。どちらもコマンド タブ上で、指定されたカテゴリの下にリスト表示されます。この場所から、どのコマンドもツールバーやメニューにドラッグすることができます。

ArcGIS Desktop アプリケ-ションは、[カスタマイズ] メニューから利用できるアドイン マネージャ ダイアログ ボックスを提供しています。このダイアログ ボックスのアドイン タブは実行しているアプリケーションで現在利用可能な、インストールされているすべてのアドインの詳細な情報を提供します。たとえば、ArcGlobe をターゲットとするアドインは ArcMap 内には現れません。

Image

アドイン マネージャのオプション タブで、ユーザは既知のアドイン ファルダを独自に追加することができます。アドイン フレームワークは、アプリケーションが開始される度に、これらのカスタムフォルダ内のアドインを自動的に探します。このオプションは組織内でアドインを共有するために、セントラル ネットワーク ロケーションが使用されている場合は特に便利です。クライアント マシンへ介在することなく、これらのロケーションでアドインの追加、削除、更新が可能です。アップデートは、関連するアプリケーションが次回起動したときに、クライアント マシンに自動的に反映されます。オプション タブではすべてのアドインの機能を使用できないようにすることも可能です。

Image

ユーザはアドイン マネージャから特定のアドインをアンインストールすることもできます。アドインをアンインストールすると、必要な時にあとで元に戻すことができるよう、選択されたアドイン ファイルはシステムのごみ箱(Recicle Bin)に移動します。

[アンインストール] ボタンはローカルアドインに対してのみ利用できます。カスタムのアドイン フォルダにあるアドインをアンインストールするには、単純にアドインを共有フォルダから削除するか、[フォルダの削除] ボタンを使用して、カスタム アドイン フォルダを削除します。

アドイン ファイルの構造

アドインは多くの部品で構成されています。その中には、カスタマイズの他に、アドインそれ自身について記述した XML 形式のメタデータ、画像、カスタマイズで使用するその他の種類のシンプルなデータ、コンパイルしたコードなどが含まれています。これらの関連するファイルを一緒にまとめるために、アドインは内蔵型の ZIP アーカイブとして esriAddIn のファイル拡張子でパッケージ化されています(例:Acme.esriAddIn)。

アドインは、宣言型と命令型の両方のプログラミング技法を用いています。上で述べた XML ファイルはこの宣言部分で、キャプション、ツールチップ、ヘルプ、画像、初期のレイアウトの詳細を含む、アドインのすべての静的側面を記述しています。命令(すなわち動作/実行部分)は従来の命令に基づいたプログラミング モデルで、.NET 言語の利用が可能です。

宣言的側面とプログラミング的側面への分割は柔軟性を高め、開発者にとってのコーディングの負担を減らし、簡略化します。そして一般的に開発と保守をより容易にします。たとえば、ボタンのキャプションと画像をコードの再コンパイルなしで変更することができます。ツールバーやツール パレット、メニューは完全に宣言部であり、実行部はありません。

以下の XML コードの例はひとつのボタンを含むツールバーを宣言するアドインを示しています。

<ESRI.Configuration
  xmlns="http://schemas.esri.com/Desktop/AddIns"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Name>
    ESRIジャパン カスタム マッピング エクステンション
  </Name>
  <AddInID>{6fa0df73-57ab-491e-a73d-e58ce07af414}</AddInID>
  <Description>カスタム マッピング ツールバー。</Description>
  <Version>1.0</Version>
  <Image>Images\Acme.png</Image>
  <Author>山田太郎</Author>
  <Company>ESRIジャパン</Company>
  <Date>2010年12月8日</Date>
  <Targets>
    <Target name="Desktop" version="10.0"/>
  </Targets>
  <AddIn language="CLR" library="Acme.dll" namespace="Acme">
    <ArcMap>
      <Commands>
        <Button
          id="Acme_ToggleDockWinBtn"
          
          caption="ドッカブル ウィンドウ"
          category="ESRIジャパン ツール"
          image="Images\ToggleDockWinBtn.png"
          tip="ドッカブル ウィンドウの表示。"
          message="ドッカブル ウィンドウを表示します。">
          <Help heading="Toggle">ESRIジャパン ドッカブル ウィンドウを表示・非表示します。</Help>
        </Button>
      </Commands>
      <Toolbars>
        <Toolbar id="Acme_Toolbar" caption="ESRIジャパン ツールバー">
          <Items>
            <Button refID="Acme_ToggleDockWinBtn"/>
          </Items>
        </Toolbar>
      </Toolbars>
    </ArcMap>
  </AddIn>
</ESRI.Configuration>

以下のコード例は、ボタンの実行部を示しています。すべての ArcObjects は、使用しているプログラミング環境の豊富な資源と同様に、開発者が直接使用することができます。

public class ToggleDockWndBtn: Button
{
    public ToggleDockWndBtn(){}

    protected override void OnClick()
    {
        //ドッカブル ウィンドウの取得
        UID dockWinID = new UIDClass();
        dockWinID.Value = @"ESRI_SelectionSample_SelCountDockWin";
        s_dockWindow = ArcMap.DockableWindowManager.GetDockableWindow(dockWinID);
    }
}
Public Class ToggleDockWinBtn
    Inherits ESRI.ArcGIS.Desktop.AddIns.Button
    
    Public Sub New()
        
    End Sub
    
    Protected Overrides Sub OnClick()
    
    'ドッカブル ウィンドウの取得
    Dim dockWinID As UID = New UIDClass()
    dockWinID.Value = "ESRI_SelectionSample_SelCountDockWin"
    s_dockWindow = ArcMap.DockableWindowManager.GetDockableWindow(dockWinID)
End Sub

アドインの構築

アドインは .NET  開発用のVisual Studio Express といった統合開発環境(IDE)を使用して構築することが可能で、ArcObjects SDK とともに簡単なウィザードとテンプレートが提供されており、それによって必要な関数が適切に挿入されたアドイン プロジェクトが自動的に生成され、生成されたプロジェクトには XML ファイルとクラス ファイルが含まれています。

さらにこれらのプロジェクトがビルドされると、アドイン ファイルが自動的に生成され、既知のフォルダにコピーされます。XML のほとんどの部分は、ウィザードによって記述されます。しかし、XML を手動で書き換える必要がある場合でも、インテリセンスと動的に検証する機能が備わっているので関連するスキーマ ファイルによる編集は容易です。アドインの開発およびこれらのウィザードやテンプレートの使用についてのさらに詳しい情報は、アドインを使用したカスタム UI エレメントの作成 を参照していください。

参照:

How to migrate from COM components to add-ins


この文書は、ArcObjects Help for .NET Developers 内のトピック Building add-ins for ArcGIS Desktop を元に翻訳したものです。

メタデータ

種類

製品

バージョン