ArcGIS Server 10.1 開発の展望 (1)

※本記事の内容は、現在の ArcGIS Server 10.1 の開発段階における情報で、ArcGIS Server 10.1 のリリースまでに予告なく変更される可能性があることを予めご了承ください。

2012 年にリリースが予定されている ArcGIS Server 10.1 は、 ArcGIS Server 10 から大きく改良されるとともにアーキテクチャが変更されます。 ArcGIS Server 10.1 のリリース前ですが、本ブログでは 2 回に分けて主な変更点のご紹介および既存アプリケーションに与える影響と代替案を提示することにより、開発者の皆様がスムーズに ArcGIS Server 10.1 を導入いただけるような情報を提供いたします。


Web サービスを提供する GIS サーバ

ArcGIS Server 10.1 は Web サービスを提供する純粋なサーバとなります。これまでの ArcGIS Server は DCOM を使用したローカル接続を基にした開発が可能でしたが、ArcGIS Server 10.1 では ローカル接続 (DCOM) を行うことができなくなります。この変更点は、これまで ローカル接続を基にした開発を行ってきた開発者に大きな影響をもたらします。特に プールされないサービスを利用する Web ADF アプリケーションは大きな影響が及びます。すでに、ArcGIS Web Mapping (JavaScript、Flex、Silverlight)と REST サービスを使用して開発されている方に大きな影響はありません。

001

以下ではArcGIS Server 10.1 での開発方法の要点の紹介と促進を目的とし、Web サービス パターンを使用した ArcGIS Server の通信/開発方法への移行パスをいくつかご紹介します。また、ArcGIS Server 10.1 の変更点に関する追加情報もいくつかご紹介します。

ArcGIS Server が初めてリリースされた際は、HTTP 経由で Web サービスにアクセスする方法と DCOM 経由のローカル接続でアクセスする2通りの方法で ArcGIS Server へ接続することができました。 ローカル接続は主に out-of-the-box の Web サービスが システムやアプリケーションで必要とされる機能を満たさない場合に使用されました。実際に、サーバ上で実行される ArcObjects のコードを Web アプリケーションに組み込むことが可能です。サーバ上で ArcObjects のロジックを実行するコンセプトは非常に有効的なコンセプトですが、それを実行する方法は ArcGIS Server 10.1 では変更されます。多くの開発者の心配事は、ArcObjects へのアクセスに関連するものです。Web ADF を使用した ArcObjects へアクセスするパターンはよく知られていますが、ArcGIS Web Mapping を使用してどのようにArcObjects へアクセスするのかまだあまりよく知られていません。では、ローカル接続が行えない ArcGIS Server 10.1 ではどのようにArcObjects にアクセスするのでしょうか。

ArcGIS Server の開発者が、一般的にどのように ArcObjects のプログラミングを行い、ArcGIS Server にローカル接続を行っていたか、いくつか解説します。また、いくつかのケースでは、ArcGIS Web Mapping を使用して、どのように同じことを実現するか紹介します。

ArcGIS Server のローカル接続を使用する理由と、いくつかの代替案

GIS コミュニティフォーラムや米国 Esri のユーザ会・フォーラム上で、私たちは開発者が Web アプリケーションでローカル接続を使用する理由を聞くことができます。ここではその中のいくつかの理由とその代替案を紹介します。

印刷のレイアウト作成

ArcObjects を使用しマップ サービスの Layout オブジェクトにアクセスするケースがあります。特に、Web アプリケーションで高品質な印刷機能を実装する場合は、ArcObjects を使用して、 ArcMap と同様の品質のマップとその関連エレメントを印刷したり、大判印刷用のドキュメントを作成したりします。

ArcGIS 10.0 では、レイアウトの設定やマップの印刷が可能な Python ベースの ArcGIS 開発ツールである arcpy.mapping が登場しました。arcpy.mapping を使用したスクリプトをジオプロセシング サービスとして公開し、使用することで、動的にレイヤをマップに追加したり、シンボルを更新したり、高品質なマップを作成することが可能です。また、マップのレイアウトにアクセスしたり、テキストや画像などのエレメントも作成したりすることも可能です。

ここでは、簡単な arcpy.mapping の紹介と、ArcGIS Server で使用する用法を紹介します。(英語記事)

ArcGIS Server 10.1 では、arcpy.mapping の機能がさらに拡張されます。特に、arcpy.mapping を使用してマップ サービスやグラフィックなどの Web マッピング アプリケーションのコンテンツを、より簡単に動的にマップドキュメントにロードすることが可能になります。

シンボルとレンダラの変更点

開発者は、マップ サービス内の特定のレイヤのシンボルを変更するためにローカル接続を使用しています。このワークフローは、プールされないマップ サービスを必要とする場合があり、アプリケーションのスケーラビリティが制限されます。何人かの開発者は、複数のユーザからのリクエストのステートを管理してプールされたマップ サービスを使用することを可能にしていますが、この方法はパフォーマンスに問題が生じたり、マップ サービスのステートを保持するための責任を開発者が背負ったりすることになります。

ArcGIS Web Mapping はクライアント側でレンダリングのプロパティが変更可能なフィーチャ レイヤまたはグラフィックス レイヤを使用し簡単にフィーチャのシンボル設定が可能な方法を提供します。この方法では表示されるフィーチャのジオメトリと属性がクライアントにすべてダウンロードされ、アプリケーション開発者が設定した通りの色、線幅、数値分類方法でフィーチャを描画できます。

フィーチャレイヤを使用した方法は特に主題図やフィーチャの強調表示を行いたい場合に効果的です。しかし、数千のフィーチャや複雑な形状のポリゴン フィーチャを描画する場合は、この方法は最良の手段ではありません。このような場合の最良な方法は、サービス レベルでシンボル変更のリクエストを行い、サーバ側でマップの画像を生成する方法です。この方法は、ArcGIS Server 10 では ArcObjects を使用しなければ実現できません。

ArcGIS Server 10.1 ではマップ サービスが拡張され、リクエストごとにマップのコンテンツとそのシンボルを変更することが可能となります。この方法では、マップ サービスのレイヤのシンボル変更を行うためにプールされないマップ サービスや ArcObjects を使用せずに、リクエスト毎に生成するマップのコンテンツやシンボルを設定することが可能です。

002

この拡張により、より簡単な開発とメンテナンスで ArcGIS Server システムのスケーラビリティを劇的に向上できます。この方法でマップサービスのレイヤのシンボルを設定するには、表示レイヤや範囲などの情報と共にマップの描画情報をリクエストに含む必要があります。すべての ArcGIS Web Mapping は、コンテンツ、数値分類方法、シンボルなどを簡単に設定可能にするための実用的なクラスが含まれます。

Web編集

ArcGIS Server 10 以前のバージョンでは、ローカル接続を使用するカスタムの ArcObjects を使用することでデータの編集を実現できました。 ArcGIS Server 9.2 では、Web ADF  にエディタ タスクが追加され、フィーチャの作成、移動、削除などの基本的な編集が可能になりました。このタスクのカスタマイズやスクラッチからの編集ツールの作成は膨大な ArcObjects プログラミングが必要でした。

REST サービスの使用をベースとしている ArcGIS Web Mapping は当初 Web 編集機能を実装していませんでしたが、ArcGIS Server 10 ではフィーチャ サービスが導入され Web 編集を行うことが可能となりました。REST サービスを使用して Web 編集が可能になっただけではなく、切断、形状変更、延長、切詰めなどの一般的な編集機能を可能とするジオメトリ サービスを使用することにより、効率的な編集を行うことが可能となりました。REST サービスを使用して Web 編集を行う場合、プールされたサービスを使用することができます。この機能により、パフォーマンスの観点でも大きなメリットがあります。

REST サービスを使用した Web 編集について理解するには、ArcGIS API for JavaScript を用いた Web 編集についてのヘルプ(英語)をご確認頂くことをお勧めします。このヘルプで紹介されている多くのコンセプトは ArcGIS API for Flex や ArcGIS API for Silverlight でも適用できます。

ArcGIS Server 10.1 でサポートされなくなるワークフローの一つとして、ロング トランザクションを使用した編集が挙げられます。Web ADF では、ロング トランザクション モデルに沿った編集をプールされないマップ サービスを使用して実装することができました。このワークフローではフィーチャの編集をいつでも戻すことが可能でした。フィーチャ サービスを使用した場合、すべての操作はステートレスで実行されるため、データベース レベルで編集を戻すことができません。ロング トランザクション モデルに沿った Web 編集は ArcGIS Server で代替策を提供できないごく限られた機能の一つとなります。

しかし、ロング トランザクションのサポートがないということが、戻る・進むの操作を実装できないということではありません。ArcGIS Web Mapping のバージョン 2.2以降では、アプリケーション レベルの API から戻る・進むの操作が可能となっています。

プールされないマップ サービスが可能とするユニークな機能の一つとして、編集中に編集対象データのバージョンを変更できる点が挙げられます。この機能は、例えばユーザが異なるバージョンのデータに変更を保存し、後に ArcGIS Desktop からの競合検知を可能とします。フィーチャ サービスはバージョン対応とバージョン非対応データの Web 編集をサポートしますが、ArcGIS Server 10.0 では編集時にバージョンを変更することはできません。これは、Web クライアントが編集可能なバージョンがマップ サービス公開時に使用されたバージョンのみということです。ArcGIS Server 10.1 では、Web アプリケーションから編集を行う際に、編集対象のバージョンを変更できるように開発が進められています。

今回は、ArcGIS Server 10.1 のシンボル設定や印刷機能の開発についてご紹介いたしました。次回はジオプロセシング サービスの使用やジオメトリ サービスの使用についてご紹介いたします。