エージェント・システムとは何だろう。 一般にもっとも馴染みのあるエージェントは、 マイクロソフト・オフィス・アシスタントではなかろうか。 ワードやエクセルを使うとき、画面の隅にうろうろするあのイルカである。
オフィス・アシスタントはユーザーエージェントと呼ばれるソフトウェアのひとつである。 ソフトウェア工学では、「プログラム+データ+通信」 をひとまとまりとしてモデル化するシステムをエージェントシステムと呼んでいる。 エージェントシステムは、ユーザからみると一個の人格を持つもののように見える。 すなわち目指すレベルはともかくとしても、 人工知能へのアプローチのひとつとして分類できるシステムである。
ネットワークエージェント研究の歴史
ネットワーク上で動作するエージェントはネットワークエージェントと呼ばれ、 分散人工知能研究の流れを汲むものである。 分散人工知能研究の起源は1970年代に遡り、 1980年代になるとエキスパートシステムの限界と相まって急激な盛り上がりを見せた。 その背景には、問題解決には複数の主体が必要との思想がある。 その後も順調に発展が進み、1990年には、日本ソフトウェア科学会において 「マルチエージェントと協調計算(MACC)」研究会が始まっている。
ところが1990年代半ばから分散人工知能研究は停滞しはじめた。 通信のオーバヘッドを無視することができず、 計算主体の間でのコミュニケーションがボトルネックとなることに気が付きはじめたからだ。代わって台頭してきたものがネットワークエージェントである。
自律的なエージェント
実は分散協調人工知能とマルチエージェントシステムの定義は微妙に異なる。 どちらも複数の計算主体が分散して人工知能を形成する点で同様のシステムではあるが、 前者は分散システムを集中管理するものであり、 後者は自律的に動作するエージェントがゆるい繋がりでまとめあげられるとの違いがある。 ここで、「自律性」がひとつのキーワードとなる。 マルチエージェントでは例えばネットワークが寸断されたとしても、 すぐさまシステムダウンに繋がることはない。
ネットワーク上のマルチエージェントを身近にしたひとつに Java の普及を挙げることができる。 サーバからダウンロードされるアプレットが各クライアントで個別に動作する、 その仕組みこそ最も初歩的なマルチエージェントの具体化である。
またマルチエージェントシステムの分かりやすい例として、 「SETI@home」を挙げよう。 このプロジェクトは地球外生命からのメッセージをたくさんのコンピュータで解析しようとする試みで、 多量の計算資源を必要とするパワーコンピューティングなのだが、 その解析を行なうコンピュータの用意の仕組みが面白い。 インターネット上にデータを散布してボランティアによる協力を募るのである。 そしてプロジェクト全体では、大量のエージェントが個別に分担して問題解決にあたる、 自律的なマルチエージェントモデルとなっている。
エージェント技術は携帯電話Javaでブレイク?
近々NTTドコモから発売される携帯電話の503シリーズには、 Java が搭載されるという。 携帯電話用Javaといってもまずはゲームくらいしか無いのではという評判もあるなかで、 携帯電話用のJava実行環境は、 エージェントプログラムの格好なプラットフォームになる可能性を秘めている。
通話毎のデータを管理する、住所録と電話番号を管理する、電話の用件を情報として仲間で共有する…、 携帯電話とJavaを活用したエージェントシステムには、さまざまなアプリケーションが期待できる。 携帯電話エージェントの利点はコミュニケーション手段を備えている強みにある。 ようするに携帯電話用のエージェントシステムとは携帯電話の中に雇った自分の秘書であり、 それらの秘書がエージェントとなって各々でコミュニケーションを行なう。
エージェントシステム研究の最先端では、 携帯電話のインフラ整備の時流に乗った、新たなる価値の創造が期待されている。