エージェントの概要

臼井義美

 エージェントは、これまで人工知能の分野を初めとするいくつかの技術分野で提案され、さまざまな研究開発が進められている。近年、コンピュータシステムや情報通信技術の飛躍的な発展を背景として、エージェントを具体的に実現するための基盤技術や構築環境が徐々に整備されてきた。ソフトウェア工学の分野でも、ソフトウェアエージェント、インテリジェントエージェント、ネットワークエージェントなどの言葉が氾濫するようになり、エージェント技術に対する期待が一段と高まりつつある。


エージェントの概念


エージェント研究の動向

SHADEプロジェクト

 米国ARPAの知識共有/再利用に関する研究プロジェクトでは、エージェントの枠組みに基づくソフトウェアインタオペレーションに関する研究を行っている。

 このプロジェクトでは、種々のソフトウェアの相互運用を実現する手段として、既存のソフトウェアコンポーネントをエージェントとして再構成するための技法や、これらのエージェントが相互作用する際に用いられるコミュニケーション言語を開発している。

 ここで開発されたコミュニケーション言語はACL(Agent Communication Language)と呼ばれ、次の3種類の要素から構成される。

 このうちのSHADE(Shared Dependency Engineering)プロジェクトでは、このエージェント技術を使って、コンカレントエンジニアリングにおける情報共有や協調設計支援の研究を行っている。

 主なものに、定型的なパラメトリック設計を対象とした設計エージェントであるParManや、エージェントの協調によるロボットマニュピレータの分散シミュレーションと再設計を対象としたPACT(Palo Alto Collaborative Testbed)などのプロジェクトがある。

 

Java Agent Template

 Stanford大学で研究しているJava Agent Templateは、スタンドアローンのアプリケーションや、ブラウザを介したJava Appletsとして実行できる自律的ソフトウェアエージェントに対して構造的なフレームワークを提供するものである。

 それぞれのエージェントは、利用者とのインタラクティブのためのGUIと、他のエージェントとのKQML仕様のメッセージの交換のためのソケット型の通信インターフェースを持っている。

  Java Agent Templateは、完全にJava言語で書かれており、オブジェクト指向のテンプレートで設計されたモジュールは、通信とユーザインターフェースの両方に容易に置きかえることができる。利用者が望む独自のエージェントは、提供された汎用クラスのサブクラスとして作られる。

 Java Agent Templateのアーキテクチャは、次の4つの主要なオブジェクトから成っている。

(1)エージェントコンテキスト
エージェントコンテキストは、エージェントと関係する通信インターフェースのための枠組みを提供する。
 
(2)エージェント
エージェントは、アーキテクチャの中における主な機能要素を表し、通信インターフェースを介して同期的にKQMLのメッセージを入出力するブラックボックスとして表現される。エージェントの知識や性質は、リソースオブジェクトによって表現され、アドレス、言語、オントロジー、クラスを含んでいる。
 
(3)通信インターフェース
通信インターフェースは、KQMLメッセージを確実に伝達し合うメカニズムを提供する。
 
(4)メッセージ出力エージェント
メッセージ出力エージェントとそのコンテキスト間の通信は、メッセージ出力オブジェクトを用いて行なわれる。このオブジェクトは、エージェントにシステムとKQMLメッセージの両方を出力することを許しており、あるコンテキストメソッドを実行する。

 

 エージェント・テンプレートの重要な機能は、インターネット上に分散しているエージェント間で、KQMLメッセージの同期的な交換を自動的に行なうことである。メッセージエージェント間を行き来するすべてのメッセージは最上位レベルでは、KQMLメッセージとみなされるが、容易に非KQMLメッセージを送るように変更することもできる。

 メッセージの内容は、シンタックス(言語)とセマンテックス(オントロジー)の両方で定義される。エージェントは、メッセージを受け取るとオントロジーで示された仕様が理解できるかどうかをチェックし、エージェントがオントロジーを理解できれば、メッセージを実行する。

 以上のように、このJava Agent Templateは、Java言語で書かれており、この研究例は本研究の結果として開発する設計支援ツールの構築に指針を与えてくれる。ただ、Java Agent Templateは本研究の目的であるソフトウェアの仕様エージェントのような特別な分野を対象としたものではなく、エージェントを生成するための基盤を提供したものといえる。

進化するソフトウェア・エージェント

 東芝の本井田らは、解放型ネットワーク環境において、ユーザや他のソフトウェア・モジュールからの要求の変化に自律的に適応するソフトウェアの枠組みを提供しようとしている。

 解放型ネットワークでは、ソフトウェアに対してメッセージやコマンドなどで送られてくる要求が事前に予期しない形で変化することがある。こうした変化に対して、ソフトウェア自身が稼働時に動的かつ自動的に対応することを目指した、進化するエージェントという概念を提唱している。

 この研究で扱っているエージェントは、各ノード(1つのコンピュータ)を移動しながらユーザの要求を満たすような部品を探すことによって、より多機能なエージェントへと進化する。

 このような進化するエージェントを実現するソフトウェア・アーキテクチャを記述する枠組みとしてフィールド指向言語Flagを考案し、利用している。

進化するエージェントの模式図

 

 ここで取り上げられているエージェントは、自ら他のコンピュータを訪れて必要な情報を取り込んで来るという形式で行動するものであり、我々の目的としている仕様エージェントは、利用者が設計作業を行っているコンピュータに他のコンピュータから必要な仕様エージェントを呼び込んでくるところが異なっている。


エージェント技術の展望

 今後のシステム開発にいては、多数の構成要素からなる情報通信システムを介して多様な利用者に適合するような利用者指向のシステム開発を効果的に支援する方法論/技術の確立が求められている。

 システム開発過程において、エージェント指向パラダイムを導入することにより、解放型システムや非均質分散システムなどのシステム構築に用いられる種々の部品やソフトウェア資産の継承、共有、再利用技術を実現できるものと期待されている。

 最近では、ソフトウェアモジュールの再利用性を高める手段として、VBXやOLEなどのコンポーネントウェアの提供、あるいはオブジェクトクラスライブラリなどを管理するリポジトリなどの研究が進んでいる。これは、リポジトリをベースとしたソフトウェア部品の再利用の促進や、開発言語に依存しない分散オブジェクトによるシステムの構築など、エージェント指向のソフトウェア基盤で要請される概念や技術に極めて近いものが提供されつつある。

 したがって、このような新しいビジネス・アプリケーションの開発に適した環境にエージェント機能を導入するという目的は、時期を得たものであると言える。