前編では、エージェント・プラットフォーム標準化の略歴と、FIPA仕様の特徴について紹介した。後編では、Javaで実装されたFIPA仕様準拠のエージェント・プラットフォームであるJADE ( Java Agent DEvelopment framework)の特徴と最近の動向について紹介する。
JADEの特徴
JADEは、Java上で実装されたFIPA仕様準拠のエージェント・プラットフォームとしてデファクト・スタンダードと言ってよい開発/実行環境である。オープン・ソース(GNU LGPL 2.1)の形態で提供されており、FIPA仕様で規定されたほとんどの機能を実装している上に、JADE独自の特徴も備えている。また、実行環境だけでなく、GUIベースの便利な開発/運用支援ツール群も一緒に提供されており、ユーザ・ガイドやチュートリアルなどのドキュメント類も比較的充実している。
JADEでは、FIPA仕様で言うところの「プラットフォーム」は複数の「コンテナ」によって構成されるものと考える(図 1 )。ネットワークにより接続された物理的なノード(PC、携帯端末、PDAなど)の上に複数のコンテナが配置され、そのコンテナの環境上で個々のエージェントが動作する。同一プラットフォーム内の通信はJavaのRMIを使って軽量/高速に処理される。プラットフォームを跨る通信は、FIPA仕様準拠の形式で相互運用性を確保している。同一プラットフォーム内でのみ、ノードを超えたエージェントの移動もサポートされている。
図1 コンテナとプラットフォーム
JADE環境上で動作する個々のエージェントには、エージェントひとつに対してひとつずつJavaスレッドが割り当てられる。各エージェントは、自身に割り当てられたスレッドを使ってアクティブ・オブジェクトとして活動する。ところが、エージェントの仕事の多くは並行的に実行する必要がある。たとえば、あるエージェントは、何らかのリソースの状態を定期的に監視しつつ、同時に、複数の他のエージェントとの間で別々の対話をこなさなければならないだろう。このような課題に対応するため、JADEではBehaviourフレームワークと呼ばれる仕組みが提供されている。エージェントが実行すべき個別の作業(またはその断片)をBehaviourオブジェクトとして実装し、それらをエージェント自身に登録しておく。エージェントは、自身に登録されている複数のBehaviourを、自身に割り当てられているJavaスレッドを使ってノン・プリエンプティブ&ラウンドロビン方式で順に呼び出していくことで、それぞれの処理を「少しずつ(見かけ上、並行に)」進めていく(図 2 )。
図2 Behaviourフレームワーク
より細かな処理に分解された複数のBehaviourによって構成された複合的なBehaviourも定義することができるため、JADE上の個々のエージェントは一種の並行状態遷移マシンとして動作すると言ってもよいだろう。この並行状態遷移マシンの枠組みは非常に強力で応用範囲が広く、かつ、エージェントが持つべき特性の実現手段として適している。
最近のJADEの動向
JADEプロジェクトは、Telecom Italia, Motorola, Whitestein Technologies AG, Profactor GmbH, France Telecom R&Dの5社をメンバとするJADE Boardという団体の管理の下で、おもに欧州の開発者が中心となって現在も地道に進歩を続けている。本記事執筆時点でのJADEの最新版はバージョン4.1(2011年7月13日公開)である。最新のJADEはJADEホームページからダウンロードすることができる(ユーザ登録が必要)。興味のある人は、ぜひ実際に動かして試してみて欲しい。
JADEホームページでは、コア・パッケージの他にさまざまなアドオンやサード・パーティ・ソフトウェア群もダウンロードすることができる(表 1 )。
表1 代表的なアドオン/サード・パーティ・ソフトウェア
名称 |
概要 |
Leap |
携帯端末やPDAなど、リソースが制限された環境でJADEエージェントを動作させるためのパッケージ。最近では、Android(2.1以降)や.NET Framework(1.1以降)での実行/連携もサポートされている。 |
JADE-OSGi |
OSGiフレームワーク上でJADEエージェントを動作させるためのパッケージ。OSGiのバンドルとして提供されている。 |
WSIG |
Web Service Integration Gateway。DF (Directory Facilitator)に登録されたエージェントのサービスを自動的にWebサービスとして公開することができる。 |
WSDC |
Web Service Dynamic Client。Webサービスの動的な呼び出しをサポートする。 |
WADE |
Workflows and Agents Development Environment。ワークフローのメタファーを使って定義された仕事を複数のエージェントで協調しながら実行する。 |
Security |
認証されたユーザによって所有されるエージェントやコンテナを配置できるようにする。 |
Trusted Agents |
妥当性確認が可能なトークンを持つエージェントだけしか受け付けないようにする。 |
JadeSharp |
Microsoft .NET Compact Framework上のアプリケーションとJADEエージェントとの間でACLメッセージによる対話ができるようにする。 |
Persistence |
Hibernateを介してRDBにエージェントを(現在の状態を含めて)永続化/復元する。 |
FIPA仕様に対する追加/更新がほとんど行われなくなった2003年以降、FIPA仕様準拠の第二世代エージェント・プラットフォームのいくつか(FIPA-OSやAAP(April Agent Platform)など)の開発は実質的な停止状態に追い込まれていった。しかし、JADEを始めとするいくつかのエージェント・プラットフォームの進歩は、地味ながらも着実に続けられており、適用可能範囲の拡大と使い勝手の向上などが図られてきている。「エージェントは(まだまだしぶとく)生き残っている」と言ってよいだろう。
以上
関連情報:
- FIPA:http://www.fipa.org/
- JADE:http://jade.cselt.it/
- 【豆蔵】エージェント技術支援:http://www.mamezou.com/service/agent.html