[とみ研ホームへ][English]

Rubiret

Rubiret: Ruby で作ったモバイルエージェントシステム

Rubiret(るびれっと)は Ruby で 実装したモバイルエージェントシステムです。 Ruby はオブジェクト指向のスクリプト言語です。 モバイルエージェントのプログラムも Ruby で書きます。 簡単なエージェントのプログラムはこんな感じです。

class RoundRubiret < Rubiret
  def init
    # 移動先のホスト名
    @hosts = [ "clotho", "lachesis", "atropos" ]
    @where = 0
  end
  def run
    puts "I'm here"
    sleep 1
    @where += 1
    @where = 0 if @where == 3
    moveto(@hosts[@where])
  end
end

clotho という名前のホストからスタートして、 このエージェントは指定された3つのホストをぐるぐる回りながら、 その度にそれぞれのホストで「I'm here」というメッセージを出力します。 エージェントのメソッド initrun はコールバックメソッドです。 init はエージェントのインスタンスが生成されたときに呼び出されます。 run はエージェントが新しいホストに移動したときに呼び出されます。

モバイルエージェントに必要なメソッド(moveto など)はクラス Rubiret に定義してありますので、 ユーザは好きなエージェントクラス(上の例では RoundRubiret)を継承を使って簡単に作れます。

なお、現在のバージョンの Rubiret はコードとデータ(ヒープ)だけを次のホストに移動させます。 スタックや制御ポイントなどは移動しません。

ソフトウェア

アルファ版の処理系を実装しましたが、公開はしていません。 このソフトはモバイルエージェントの基本機能と、いくらかのセキュリティを実現しています。 現在開発中のバージョンは視覚的なインタフェースを持っています。

実行例

開発中バージョンの動作画面です。

screen snap of Rubiret runtime

[拡大表示 (1280x1024, 100KB)]

「Rubiret Main Window」というタイトルのついた左上にあるウィンドウは、エージェント処理系の監視画面です。 5つのエージェントが走っていることを示しています。 このウィンドウを使ってエージェントを管理します。

それぞれのエージェントは独自のウィンドウを持つことができます。 ウィンドウにはいくつかの種類があります。 三角関数のグラフが表示されたウィンドウはグラフィックウィンドウで、 このウィンドウはエージェント Graph が表示しています (エージェント名が監視画面に表示されています)。 中央上にある2つのウィンドウは、RocketRubiretUpperRocketRubiret の出力です。 カレンダーは入力インタフェースのためのウィンドウで、Schedule が表示しています。 画面真ん中にある、大きなボタンひとつでできた単純なウィンドウも入力ができるウィンドウです。 FileSender3 というエージェントが表示している画面左下のウィンドウ (ボタンが3つあり、そのひとつには「Attach」などと書いてある)は、 エージェントにファイルを添付できる組み込み機能を使って実現してあります。 (電子メールのように、エージェントにはファイルを添付することができます。)

ドキュメント

まだありません。公開できるバージョンができたときに作るつもりです。

論文

メンバ

[とみ研ホームへ]

(更新 $Date: 2005/02/01 01:46:07 $)