システムアーキテクチャ

言語グリッドシステムアーキテクチャ

言語グリッドとは,インターネット上に分散した言語サービス*1(辞書や対訳集,機械翻訳等)を自由に連携させることで, エンドユーザが目的に合った新たな言語サービスを容易に構築することのできるプラットフォームである.このようなプラットフォームを実現するには, 言語サービスの利用方法を標準化し,言語サービスへのアクセシビリティやユーザビリティを向上させる必要がある.そのために,言語サービス提供者は, 各自の言語サービスを標準インタフェースに従ってWebサービスとして開発し配備し,そのサービスのインタフェース情報*2(WSDL)とプロファイル*3を言語グリッドに登録する. 一方,言語サービスユーザは,言語グリッドの中から必要な言語サービスを検索し,そのサービスを実行する.また,検索した既存の言語サービスをワークフローで組み合わせて複合言語サービスを新たに構築し, その言語サービスを言語グリッドに配備し登録する.

このように言語グリッドは,標準インタフェース*4に従った言語サービスを利用することで,言語サービス提供者, 言語サービスユーザに対して,上記のような機能を提供することができる.一方,標準インタフェースを採用していない言語サービスの場合でも, 第三者(以降ラッパー提供者と呼ぶ)によるラッパー*5の配備を可能にすることで,言語グリッド上で言語サービスユーザの利用可能な言語サービスを拡充することができる. ただし,この場合の言語サービスのサービス実体は言語グリッドの外部に存在し,ラッパーによって起動される.これらの言語グリッドのユースケースを図1にまとめる.

usecase
図1:言語グリッドのユースケース

図1が示すように,言語サービスは言語グリッドに登録されることで,言語サービスユーザにとって利用可能となり, 他の言語サービスと連携させることができる.したがって,言語グリッドには言語サービスを提供するだけのノードと, 言語サービスの登録情報を管理しワークフローにより言語サービスを連携させるノードの2種類のノードが存在する. 我々は前者を言語グリッドサービスノード*6,後者を言語グリッドコアノード*7と呼んでいる.

このような言語グリッドを実現するために構築した言語グリッドのシステムアーキテクチャを図2に示す.システム全体は,言語グリッドコアノード,言語グリッドサービスノード,言語グリッドクライアントの3つのコンポーネントから構成される.以下では各コンポーネントについて説明する.

syste-architecture=
図2:言語グリッドのシステムアーキテクチャ

言語グリッドコアノード

言語グリッドコアノードは,大きく「言語サービス登録・配備機能」「言語サービス検索機能」「複合言語サービス実行機能」の3つの機能と, 言語サービスのWSDLやプロファイル,ワークフローなどのリポジトリから構成される.

言語サービス登録・配備機能

言語サービス提供者から送られてきた言語サービスのインタフェース情報およびプロファイルを言語グリッドに登録し,登録された言語サービスを言語グリッドサービスノードとして言語グリッド上で利用可能にする.また,言語サービスユーザの記述したワークフローを複合言語サービスとして言語グリッドに登録することもできる.

言語サービス検索機能

言語グリッド上に登録された言語サービスの中から利用者の要求に適合する言語サービスを検索する.具体的には,言語サービスで処理可能な言語や言語サービスの種類による検索を提供する.検索した結果,利用者の要求に該当する言語サービスが存在すれば,その言語サービスのインタフェース情報とプロファイルを言語サービスユーザに提供する.

言語サービス実行機能

言語サービスユーザの要求に従って,言語グリッド上に登録された原子言語サービス*8複合言語サービス*9を実行する.言語サービスユーザの要求が原子言語サービスの実行であった場合,言語サービス実行機能内のサービスロケーターが,そのサービスを配備している言語グリッドサービスノードのうち最も負荷の低いものを選択し,原子言語サービスを呼び出す.一方,要求が複合言語サービスの実行であった場合,まずワークフローリポジトリからユーザの要求するサービスに対応したBPELファイルを取り出し,複合言語サービス実行エンジンによって実行する.複合言語サービス実行エンジンは,ワークフローに従って,言語グリッドサービスノードの原子言語サービスや他の言語グリッドコアノードの複合言語サービスを呼び出す.なお,呼び出す各サービスの特定は,サービスロケーターが負荷情報に基づき行う.

言語サービス情報リポジトリ

言語サービス登録・配備機能により登録された言語サービスのインタフェース情報(WSDL)やプロファイルを管理する.リポジトリ内で管理される情報は言語サービスの検索に利用される.

ワークフローリポジトリ

言語サービス登録・配備機能により配備されたワークフロー(BPEL)を管理する.リポジトリ内で管理される情報は,複合言語サービス実行機能中の複合言語サービス実行エンジンにより実行される.

言語グリッドサービスノード

言語グリッドサービスノードは,原子言語サービスを実行するためのエンジンと,原子言語サービスの実体とラッパーを配備するための機能を備える.サービスの実体とラッパーは共に標準インタフェースの形で原子言語サービス実行エンジンに配備され,Webサービスとして利用可能になる.ただし,ラッパーにはサービスの実体がないため,外部の既存のサービス実体を呼び出す.ラッパーはその結果を標準インタフェースの形に整形し,呼び出し元に返す.

言語グリッドクライアント

言語グリッドクライアントは,言語グリッドコアノードを容易に利用するためのツールである.CUI,GUIの両方のユーザインタフェースを提供している.言語グリッドクライアントの機能は,言語グリッドコアノードの提供する各機能と一対一で対応し,言語グリッドクライアントから言語グリッドコアノードの全ての機能を利用できるようになっている.さらに,言語グリッドクライアントには複数の言語サービスを連携させるためのワークフロー編集機能が備わっている.これにより作成されたワークフローは,言語グリッドコアノードのインタフェースを利用して,言語グリッドクライアントからコアノード上に配備することができる.なお,ワークフローはビジネスプロセスの実行言語として業界標準になりつつあるBPELを利用しているため,他のBPELエディタで作成した言語サービスの連携ワークフローも言語グリッドコアノード上に配備可能である.

用語説明

言語サービス*1 辞書や用例対訳などの言語資源と機械翻訳や形態素解析などの言語処理技術の機能をサービスとして提供しているもの.
インタフェース情報*2 言語サービスの入出力情報やアクセス先,通信方法などを規定した言語サービスを利用するための情報.言語グリッドに言語サービスを登録する際に必須の情報.
プロファイル*3 言語サービスの種類や提供者,知財や著作権の所有者といった言語サービスに関連する情報.言語グリッドに言語サービスを登録する際に必須の情報.
標準インタフェース*4 言語グリッド上に登録される言語サービスのインタフェースに関して,サービスの種類ごとに規定したもの.
ラッパー*5 標準インタフェースと異なるインタフェースを持った既存のサービス実体に対し,標準インタフェースを外付けで提供するプログラム.ラッパーを用いることで,既存のサービス実体は標準インタフェースを持った言語サービスとして扱うことが可能になる.
言語グリッドサービスノード*6 言語サービスの提供のみを行う言語グリッド上のノード.言語サービスの実体だけでなくサービス実体の持たないラッパーも言語グリッドサービスノード上に配備される.
言語グリッドコアノード*7 言語サービスの登録情報(インタフェース情報およびプロフィール)を管理し,検索機能や言語サービスの連携機能を提供する言語グリッド上のノード.言語サービスを連携するための,BPELで記述されたワークフローが言語グリッドコアノード上に配備される.
原子言語サービス*8 言語サービスに関する一つのサービス実体から構成されたWebサービス.
複合言語サービス*9 言語サービスに関する複数のサービス実体から構成されたWebサービス.ワークフローによって複数の言語サービスを連携し実現された言語サービス.