情報処理学会第69回全国大会

4D-2

複合 Web サービスにおける動的バインディング- 言語グリッド複合 Web サービスの実装 中口孝雄†

NTT アドバンス
テクノロジ株式会社†

村上陽平††

灘本

独立行政法人情報通信研究機構††

１． はじめに
近年複数の Web サービス(以下原子 Web サービス)の組み合わせで新しい Web サービスを構成す
る，複合 Web サービス技術が注目を集め，利用されている．代表的なものとしては，BPEL4WS[1]が 挙 げ ら れ る ． 組 み 合 わ さ れるサービスには様々なものがあり，BPEL4WS では顧客からの注文処理を行うために製造計画と出荷計画サービスの連携を行う例が紹介されている．
現在多くの企業がインターネット上で Web サービスを公開しており，その数は増え続けている．各々の Web サービスはそれぞれ公開元が定めた異なる利用規約を持っており，利用目的によってアクセスが制限される場合もある．そのため，これらの Web サービスを組み合わせる場
合には，各々の Web サービスに対してアクセス権管理を適切に行う必要がある．通常複合 Webサービスから呼び出す原子 Web サービスは予め決定されているため，一つの複合 Web サービス
では，呼び出す原子 Web サービス全ての利用規約に合うユーザしか実行できない．そのため，様々なユーザや原子 Web サービスに対応するためには，同じフローを持ち呼び出す原子 Web サービスが異なる複合 Web サービスを複数用意する必要がある．
言語グリッドプロジェクト [2] は，インターネット上に散在する言語資源をサービス化し，複合 Web サービスにより連携させることで，新たな言語サービスを構築することを目指している．
各々の原子 Web サービスはその権利者が異なり，様々な種類のライセンスが存在する．本稿では，明代†††

独立行政法人情報通信研究機構†††

営利か非営利かというユーザの利用目的を対象にする．また，サービス化された言語資源は，その種類によってインタフェースが定義されている．翻訳サービスの場合は翻訳元言語と翻訳先言語，翻訳する文章を引数にとり，形態素解
析の場合は言語と解析する文章を引数にとる．
日英翻訳や日本語形態素解析など，各種類において利用できる Web サービスは複数存在する．
本稿では，言語グリッドプロジェクトが対象としている原子 Web サービスを組み合わせた複合 Web サービスを BPEL4WS で作成し，その実行時にユーザの利用目的を元に実際に呼び出す原子 Web サービスを決定するシステムを構築する．

２． システム構成
本稿で構築したシステムは，複合 Web サービ
ス実行エンジン，機能拡張モジュール，Web サー
ビスバインディングモジュール，Web サービス情報管理リポジトリ(エンドポイント URL やインタフェース，利用許諾情報を格納)，からなる．図1にシステム構成を示す．
複合 Web サービス実行エンジンは，BPEL4WS で記述された複合 Web サービスを実行するソフトウェアである．通常複合 Web サービス実行エン

Dynamic binding of concrete web services at composite webservices† Takao Nakaguchi, NTT Advaced Technology Corporation.
†† Yohei Murakami, National Institute of Information andCommunication Technology.
††† Akiyo Nadamoto, National Institute of Information andCommunication Technology.

1-399

複合 Web サービス実行エンジン
挿入
機能拡張モジュール呼び出し
Web サービスバインディングモジュール参照
Web サービス情報管理リポジトリ
図 1 システム構成
システム構成情報処理学会第69回全国大会

ジンは予め指定された原子 Web サービスを呼び出すが，機能拡張モジュールを挿入し，Web サービスバインディングモジュールを呼び出すことで，この振る舞いを変更する．Web サービスバインディングモジュールでは，Web サービス情報管理リポジトリを参照し，ユーザの利用目的を元に実際に呼び出す原子 Web サービスを決定する．
なお，複合 Web サービス実行エンジンにはActiveBPEL[3] を，機能拡張モジュールの挿入には，AspectJ[4]を用いた．

３． 外部サービスの動的バインディング
通常複合 Web サービスでは，外部サービス呼出の呼び出し先はあらかじめ指定される．本稿
ではこれを拡張し，実行時に実際に呼び出すサービスを決定する．本稿での複合 Web サービス実行シーケンスを図 2に示す．
図中に示したアクティビティのうち，色つき部分が本稿において拡張した部分である．ここでは，外部サービス呼出処理を実行する前に，利用許諾に応じた外部 Web サービスの検索を行っている．本来指定されている外部 Web サービスと同等のインタフェースおよび機能を持つ Webサービス群から，この複合 Web サービスを呼び出したクライアントの利用目的に適合する Webサービスを検索する．ここで同等の機能とは，対応している言語情報を意味する．日英翻訳の場合，日本語から英語に翻訳するサービスが呼び出しの候補となり，日本語形態素解析の場合は日本語を対象とした形態素解析が呼び出しの候補となる．適切な原子 Web サービスが見つかった場合，その Web サービスを呼び出す．

クライアントの利用目的としては，営利利用，非営利利用を扱う．言語サービスの登録時にそのサービスがどちら，或いは両方で利用できるかを登録し，クライアントからの利用時にどちらで利用するかを選択する．原子言語サービス
呼び出し時にこれらの情報から実際に呼び出すサービスを検索し，決定する．言語サービス以外の Web サービスへの対応を可能とするため，これらの情報は言語サービス本来のインタフェースから切り離し，HTTP ヘッダを通して受け取る．そのため，本システムは SOAP のトランスポートプロトコルとして HTTP(もしくは HTTPS)を使用する．

４． おわりに
原子 Web サービスの利用条件と機能をベースとした，複合 Web サービスにおける外部 Web サービス呼出の動的バインディング機能を実装した．利用条件が異なる様々な原子 Web サービスが利用できる環境下では，静的にバインドされた複合 Web サービスは，呼び出される原子 Webサービスの利用条件に合ったユーザしか利用できない．そのため，様々なユーザやサービスに対応するには，同じロジックで呼び出す原子 Webサービスのみが異なる複合 Web サービスを複数作成する必要があった．実際に呼び出す原子 Webサービスを実行時に決定することで，対応する原子 Web サービスが存在すれば，異なる利用目的を持ったユーザが同じ複合 Web サービスを利用できる．
今後は営利/非営利利用以外の様々な利用条件を対象として原子 Web サービスの検索処理を行う，同等の機能を持つサービス間での負荷分散を実現する等の拡張を予定している．

参考文献

図 2 複合 Web サービス実行
サービス実行シーケンス
実行シーケンス[1] F. Curbera, Y. Goland, J. Klein, et al.,“Business Process Execution Language for Web
Services (BPEL4WS) Version 1.1,” May. 2003.
[2] Toru Ishida. “Language Grid: An Infrastructure
for Intercultural Collaboration,” IEEE/IPSJ
Symposium on Applications and the Internet (SAINT06), pp. 96-100, keynote address, 2006.
[3] http://www.activebpel.org/[4] G. Kiczales, E. Hilsdale, J. Hugunin, M.
Kersten, J. Palm, W. Griswold., “An overview ofAspectJ,” In ECOOP 2001 - Object-Oriented
Programming, LNCS 2072, Springer (2001), pp.327353, 2001.

1-400