サンプルプログラム

佐藤 一郎

参考のために幾つかのサンプルプログラムが用意されています。

Editor.agent (テクストエディタ)

ソースプログラム

Editor.java

Makefile

Editor.mk

エディタに何か書き込み、別のコンピュータに移動をさせるとその書き込んだ 内容もそのまま移動します。また、このエージェントに関するすべての状態も 同時に移動するので、例えばウィンドウサイズの変更や選択箇所(ハイライト) なども移動します。

転送したいファイルをこのエディタに読み込み、他のコンピュータに移動する ことにより簡易ftp としても利用できます。

Chat.agent (電子会議)

ソースプログラム

Chat.java

Makefile

Chat.mk

会話相手のコンピュータ(もちろんAgentSpaceが動作している必要がある)のア ドレスを記入し、「Start」ボタンを押してください。この電子会議エージェ ントのクローンが作られ、その一方が相手のコンピュータに移送します。この あと、電子会議エージェントの下のウィンドウに文字を書き込むと、その文字 が相手のコンピュータ上の電子会議エージェントに送られます。

これはモーバイルエージェントの応用例の一つであるトンネル化エージェント ないしカプセル化エージェントを実現したものです。エージェントの移動によ り、相手側に電子会議プログラムがなくても会議ができるだけでなく、電子会 議用通信プロトコルの隠蔽を可能にしています。このエージェントではUDPを 利用した独自通信プロトコルを利用して会話内容を転送していますが、その通 信プロトコルに対応したモーバイルエージェントを相手先に移動させることに より、相手先コンピュータがその通信プロトコルを知っている必要はなくなり ます。つまり、独自通信プロトコルが容易に実現できるようになるのです。

Clock.agent (時計)

ソースプログラム

Clock.java

Makefile

Clock.mk

アクティブなエージェントの移動例です。ただし、時報に不具合があります。

Loader.agent (エージェントグループを管理するエージェント)

ソースプログラム

Loader.java

Makefile

Loader.mk

モーバイルエージェントを管理・制御するモーバイルエージェントです。この モーバイルエージェントを通じて他のモーバイルエージェントを起動させたり、 別のコンピュータに移動させることができます。また、AgentSpaceではケーパ ビリティの概念をもち、あるエージェントから別のエージェントを生成したと きは、前者は親エージェント、後者は子エージェントとなります。そして、親 エージェントは子エージェントの移動や永続化、終了などを制御できます。こ の「Loader.agent」を別のコンピュータに移動させると、この「Loader.agent」 を通じて起動したエージェント、つまり子エージェントも一緒に移動します。

Desktop Transporting(デスクトップ環境のネットワーク移動)を実現するた め作成されました。このエージェントの中でエディタや時計エージェントを起 動し、その後、このエージェントを移動させると、移動先ではエディタや時計 をそのまま使用できるようになり、ネットワーク位置に透過なデスクトップ環 境を構築できます。

MailBox.agent(メール管理エージェント)

ソースプログラム

MailBox.java

Makefile

MailBox.mk

簡易Mailシステム用エージェント。このエージェントをそれぞれの AgentServerシステムに起動させて下さい、「New Mail」ブタンよりメール用 エディタが生成されますので、メール作成の上、別のAgentServer宛に「Send」 ブタンで送信します。このメールシステムはメール文書自体がエージェントと して実現されています。また、メール文書エージェントとこのMailBoxは常に 通信をし、到着したメールはMailBoxエージェントによってリストアップされ ます。

MGrep.agent (分散検索)

ソースプログラム

MGrep.java

Makefile

MGrep.mk

このエージェントの中から、検索ロボットを他のコンピュータに送り、その検 束結果を受け取り表示します。検索ロボットは「GrepRobot.agent」で、 「MGrep.agent」から検索依頼を受けると、自ら移動して検索をします。そし て、その結果を保持したままもとのコンピュータに戻ります。そして、 「MGrep.agent」に通知します。

ソースプログラム

GrepRobot.java

Makefile

MGrep.mk

「MGrep.agent」は一度に一カ所のコンピュータしか検索できませんが、 「MobileGrep.agent」は一度に複数のコンピュータに検索ロボット 「GrepRobot.agent」を送り、並列検索を行います。

ソースプログラム

MobileGrep.java

Makefile

MobileGrep.mk

Painter.agent (お絵かきプログラム)

ソースプログラム

Painter.java

Makefile

Painter.mk

フリーハンドの絵が描けます。また、このエージェントが移動すると その絵を保持したまま移動し、移動先で続きを書くことができます。

RoundTriper.agent (転送時間計測プログラム)

ソースプログラム

RoundTriper.java

Makefile

RoundTriper.mk

5秒おきに測定用エージェント(Triper.java)を送り、それが戻ってくる までの時間、つまり、ラウンドトリップ時間を計ります。

LifeGame.agent (ライフゲーム)

ソースプログラム

LifeGame.java

Makefile

LifeGame.mk

その他のエージェント

上記以外にもサンプルエージェントが幾つか用意されていますので、参考にして下さい。

Ichiro Satoh (Ph.D.)
Associate Professor,
Deparment of Information Sciences
Ochanomizu University
2-1-1 Ootsuka Bukyo-ku Tokyo 112, JAPAN
Tel: +81-3-5978-5388, Fax: +81-3-5978-5705
Email: ichiro@is.ocha.ac.jp