サーバ オブジェクト エクステンションとは
SOE(サーバ オブジェクト エクステンション)を利用すると、ArcGIS for Server の基本機能を拡張できます。ほとんどの SOE は、ArcObjects コードを使用して GIS データとマップを操作することで、これらの拡張を行います。ArcObjects は ArcGIS を構築するための中心的なコンポーネントであり、これを利用することで GIS 機能を最も柔軟に記述できます。
明確に定義されたビジネス ロジックを実行するときに、ArcGIS Web API では簡単に実現できない場合は SOE を使用することが適切です。SOE には以下の利点があります。
-
SOE を REST(Representational State Transfer)または SOAP(Simple Object Access Protocol)Web サービスとして公開し、ArcGIS Web API を基に構築されたクライアントがこれらを簡単に呼び出せるようにできます。実際に、REST SOE は ArcGIS Services Directory に表示され、ArcGIS Web API が認識できる一般的なオブジェクト タイプを(ほとんどの場合は、JSON 形式で)公開できます。
-
SOE を構築するときには、ArcGIS Server で作業を実行する汎用的なメソッドを提供して、クライアントからサーバに大量の呼び出しが発生しないようにします。SOE は ArcObjects ロジックを効果的にカプセル化し、呼び出しをすばやく実行するための理想的な環境を提供します。
他の方法(標準のジオプロセシング ツールや ArcGIS Server サービス)では利用できない ArcObjects 機能、またはすばやく実行する必要がある ArcObjects 機能を公開するときは、SOE の開発が有効な場合があります。
SOE は経験を積んだ開発者向けに提供されており、さまざまな開発プラットフォームに関する知識が必要です。ArcObjects SDK for Java には、検証に利用できるさまざまな SOE のサンプルが用意されています。
SOE は主にマップ サービスを拡張する目的で設計されています。
SOE の開発に必要な知識
SOE 開発者には、Java で ArcObjects を使用する方法についての知識が必要です。REST または SOAP の基本原理についての知識も必要です。
また、自動的に生成されるプロパティ ページ以外に SOE のカスタム プロパティ ページを記述する場合は、Java Swing の知識(ArcCatalog ページの場合)や、HTML(Hypertext Markup Language)を使用した Web フォームの開発と JavaScript の知識(Manager ページの場合)が必要です。
SOE の必要性
SOE を使用するには、Web サービス開発と ArcObjects に関する知識が必要であり、サーバで利用できるようにするには配置プロセスまで実行する必要があります。サーバ オブジェクト エクステンションの開発を行う前に、他に簡単な方法がないか検討してください。
SOE 開発の代わりとして最も簡単な方法は、ビジネス ロジックを実行するジオプロセシング モデルを作成してから、これをサービスとして公開することです。ArcObjects コードを記述する代わりに、ModelBuilder を使用して必要なツールを対話的にドラッグ、ドロップ、および接続することができます。ジオプロセシング サービスでは非同期実行も可能であるため、ジョブを開始してからも、他の作業をしながら、実行結果を確認することができます。
ジオプロセシング サービスの短所として、メモリのフットプリントが比較的大きく、SOE より実行に時間がかかることが挙げられます。プロセスの実行回数が 1 日に数回だけであれば、これらの点は問題にならないでしょう。ただし、プロセスを 1 日に何度も実行する場合や多数の同時ユーザが発生する場合は、時間をかけて SOE を構築する価値があります。
ArcObjects を使用しなくても現在は達成できるさまざまなタスクに対して、これまで多くの開発者が ArcObjects コードを作成してきました。ArcObjects を使用せずに Web マッピングを利用する方法の詳細については、「サーバ オブジェクト エクステンションの代替手法」をご参照ください。