成蹊大学理工学研究報告
J. Fac. Sci. Tech., Seikei Univ.
Vol.42 No.1 (2005) pp.27-32

自律分散処理モニタと分散処理エディタの開発
小川大介*1，甲斐宗徳*2

Implementation of Monitor and Editor for Autonomic Distributed Processing SystemDaisuke OGAWA*1, Munenori KAI*2
ABSTRACT：In autonomic distributed processing, it is difficult because of the autonomy for an
administrator or a user to grasp the behavior and state inside the system correctly, and even if a certain
obstacle is encountered in a system, intervention of an administrator is difficult. So, in this research, amonitor of autonomic distributed processing and an editor for distributed processing are designed andimplemented. An autonomic distributed processing monitor offers the interface which acquires theinformation inside distributed processing system, and displays them, or operates a mobile agent. A user
can grasp and control the behavior and state inside a system through this monitor. The editor for
distributed processing can support description of the application program for distributed processing using
communication. At the time of communication command creation, a sending command and a receiving
command, corresponding to each other, can be described simultaneously and a communication error byuser’s easy mistake can be reduced.
Keywords：Autonomic Distributed Processing, System Monitoring Editor Communication, Programming,,(Received March 25, 2005)

１．はじめにの変化に対応しながら分散処理を行うシステムである。
一般に分散システム上で，タスクの負荷分散や停止した

近年，IT 化が進んでおり，それと共に情報も複雑・多タスクの再生処理等の作業にはシステム全体の状況把握様化されてきている。また，パソコン自体が，一般家庭や管理が必要であり，それらのコントロールをすべて含にも広く普及し，個人でも複数のマシンを LAN などでめてユーザがアプリケーションプログラムを記述するの接続して同時に利用する人が増加している。この様なこは非常に困難であると考えられる。システムの自律性をとから，マシンに解かせる問題も，さまざまな形となっ満たすためには，システム内で動く各ソフトウェアが，て現れてきた。高性能のマシンであれば，様々な問題に他からのメッセージに応じた行為と自ら取得した外部の対応することも可能であろうが，そのようなマシンは個情報に応じて判断を行い，その結果によって行動を計画

人に限らず，企業等でもコストがかかりすぎてしまう。

し，その計画に基づき行動できる必要がある。そこで，そこで，複数のマシンを使うことによって，低コストで，自律分散処理システムを実現するにあたって，モバイル誰にでも簡単に使うことができる分散処理システムの実エージェント

現が望まれる。当研究室では特に，システム全体を管理タスクエージェントをはじめ様々な機能を持つ独立したしながら，成長を続けていく，自律分散処理システムのモバイルエージェントが存在し，それら全体でひとつの構築を目指して開発してきた。

12*を利用することにした。システム上には，システムを形成する。不足しているとわかった機能は，[1]

自律分散処理システムとは，自律的にシステムの状況*[ 2]

その機能を持ったモバイルエージェントをシステムに投入することで実現することが出来る。モバイルエージェ

情報処理専攻大学院生

ントは，ネットワークを通じてマシン間を移動できるソ

情報処理専攻助教授(kai@st.seikei.ac.jp)

フトウェアである。またエージェントとは，人間の代理

Associate Professor, Dept. of Information Sciences−27−

３．システムの特色人となってシステム環境を認識し与えられた目標を達成するため自律的に行動するソフトウェアのことである。
分散処理内部の動きは不透明で，システム内部でトラまず，開発したシステムの目的は「分散処理の手法にブルがあった場合でもユーザの介入が困難である。そこついて知らない人でも簡単に分散処理の恩恵を受けられで，各マシンの情報を視覚的にとらえ，エージェントをるシステムを構築すること」である。そこで，本システ

多少なりとも操作できるインタフェースをもったものをムは GUI を用いて操作を簡略化することにより初めて作る。それを分散処理モニタと呼ぶ。ここでのモニタは，使う人でも容易に使用できるようにする，システムの稼分散処理の手助けまたは監視に使いたいものなので，分動状態を分かりやすく表示するなど，初心者にも使いや散処理に大きな影響を及ぼし，分散処理システムへの妨すいように工夫することにした。

害はもちろん，それ自身が大きなオーバーヘッドになるシステムのもうひとつの特徴として，「様々な種類のプことがあってはならない。

ログラムを実行可能な汎用性の高いシステム」を目指す

分散処理において，障害が最も起こりやすいのは，デことにした。当初このシステムは「ユーザにとって書きータ転送時における通信である。通信を分散処理システ

易く分散処理する事により処理時間の短縮が可能なムの中で高速性や効率，自由度を考えて実装するのは最SIMD 形式の Java プログラムを分散処理できるシステも困難な作業の１つである。さらに通信の記述は送信側ム」を目指していた。しかし「SIMD 形式 Java プログラと受信側の対応を考えて，引き数の種類や数，どの相手ム」のみを分散処理の対象としたのでは汎用性が高いとのどのメソッドと通信するかといった点に注意せねばなは言えない。せっかくシステムをモバイルエージェントらず，容易ではない。記述後も，エラーが起きたときなで実装しているのだから「モバイルエージェントとしてど，通信命令がどのソースの，どの通信命令と通信を行の機能をユーザが自由に利用できる高度なタスクプログっているのが分かりづらい。そこで，通信の記述をサポラム」も記述して分散処理できるようにすべきである。

ートし，コーディング時，およびデバック時にも通信相

そこで，SIMD 形式の Java プログラムだけでなく，エー手の対応する通信コード部分がどこに入ればよいか，簡ジェント同士が自由に通信を行い，データをやり取りで単に分かるような機能を持った，分散処理用エディタのきるような MIMD 形式のプログラムにも対応できるよ開発を行った。

うにする。SIMD 形式のプログラムは Java の class ファイ
ルで作成し，MIMD 形式のプログラムは jar ファイルに２．AgentSpaceまとめてタスクファイルとして使用できるようにする。
図１は本自律分散処理システムの構成例を示している。

本システムでは国立情報学研究所の佐藤一郎氏が開発した AgentSpace[ 2]

システムは LAN 環境で接続された複数のマシンからなる。というモバイルエージェントシステムを利用している。幾つかある既存のモバイルエージェ

エージェントは AgentSpace 上でしか存在できないのントシステムの中から AgentSpace を選んだ理由は，で，利用したいマシンで AgentSpace を起動させる必要がAgentSpace はエージェント移動時にエージェントの情報ある。

を圧縮して送るため，エージェントの移動が速いというタスクエージェント点と，オープンソースであるためにシステムを拡張しやMediatorすかったらからである。

AgentSpace

本システムを構築する上では高性能なエージェントの機能はそれほど必要ではなく，我々が目的とする分散処理に特化し易いモバイルエージェントであることが望ましい。従ってエージェントの生成，高速な移動といった，基本機能を満たしているモバイルエージェントシステムであればよい。分散処理を行う上では通信部分，つまりエージェントの移動部分がボトルネックになる可能性があり，そのためエージェントの移動が高速であるということは重要と考えられる。

図１

−28−

自律分散処理システム構成例

ユーザは本システムを用いて分散処理を行いたいと思こで，そのための情報を管理者に伝えることが，分散処ったとき任意のマシンの AgentSpace 上で Mediator という理モニタの役割である。

プログラムを起動する。Mediator はユーザとのインタフ

分散処理モニタの画面を図２に示す。

ェースとなるエージェントで，ユーザからタスクファイ

図２に示すとおり，ボタンが 8 個用意されている。そルなど必要な情報を入力されるとその情報に従いタスクの内訳は，プログラムを分散処理するタスクエージェントを生成する。
タスクエージェントは Mediator によってうまく負荷分・情報表示に関して 1 個(更新)・ 他のマシン情報に関して 2 個(派遣情報，滞在情報)散されるようにネットワーク上のマシンに振り分けられて移動する。それぞれのマシンに移動後，タスクエージ
ェントはタスクプログラムを実行して解を求める。解を求めたタスクエージェントは Mediator のあるマシンに返り，Mediator に解を教えて消滅する。最後に Mediator が全ての部分解を統合して全体解を出力した後，一連の処理は終了する。
また，佐藤氏が開発したオリジナルの AgentSpace は，他のマシン上に起動している AgentSpace の情報を知ることはできない。そこで，システム全体に関する動的な情報の取得・更新を行うために，まず AgentSpace が定期

図２

分散処理モニタの画面的に性能値を更新して他の AgentSpace にブロードキャストする方法が挙げられる。しかし，この更新間隔を調・節することが困難であり，さらに AgentSpace の数が増加

・ 管理エージェントに関して 2 個(存在指定，全体停するにつれて，ブロードキャストによる通信回数が増加

エージェントに関して 3 個(生成，派遣，消去)止)となっている。

してしまう問題点がある。
4. 2

そこで，すべての AgentSpace を巡回する管理エージェ

情報の表示についてントを設けて，その管理エージェントが AgentSpace から分散処理モニタは以下の情報を表示するとともに，ユ情報を受け取り，他の AgentSpace に伝えて回ることで，ーザが操作をする時は，常にその操作を行った時刻の表

AgentSpace 同士でのブロードキャストが必要なくなり，示をするようにしてある。

通信回数を削減することができる。
その結果，負荷バランスを考慮したタスク分散，使用①

自分のマシン（IP アドレス，性能値）②

自分のマシンに存在しているエージェントの情可能なマシンの識別や，ダウンしたタスクの再送信，再報（名前，エージェント ID）配置など，本来ユーザが管理しなければならない事象を③

他のマシンリスト（IP アドレス，性能値）自律的に管理することが可能となり，システムの効率④

他のマシンの静的情報（IP アドレス，性能値，名性・安全性が向上すると考えられる。

前，エージェント ID ）⑤

４．分散処理モニタ

他のマシンの動的情報（エージェント出発時間，到着時間など）や新しくリストに加わったマシン，リストから外れたマシンの情報

4. 1

分散処理モニタの目的①〜③は，「更新」ボタンで，④は，「派遣表示」ボタ

分散処理モニタとは，現在システムがどのように動いンで，⑤は，「滞在表示」ボタンで表示できる。ているのかシステムの振る舞いをわかりやすく表示する

管理者が分散処理中に，異常の疑いがあるマシンに気ためのものである。

がついた時，そのマシンにエージェントを直接送りこん

管理エージェントの役割は，分散処理が効率よく行わで，情報を取得できるように以下のものを実装した。
•れるようにシステムを管理したり，また，分散処理が進

派遣情報表示：目的のマシンにエージェントを派行しなくなったときに自動的に処理を復旧することであ遣し，情報を取得後すぐに自分のマシンに帰ってきて，る。しかしながら，システムに何らかのトラブルがあっそのマシンの情報を表示する。
•たときに，管理者が介入して対処したいときがある。そ−29−

滞在情報表示：目的のマシンに指定時間滞在し，

5. 4

時間内にそのマシンで全てのエージェントがどのような動きをしているのか，動的な情報を取得し，その分散処理用エディタ画面

Java の Swing を利用したもので，GUI となっている。

情報を表示する。

もちろんエディタとしての基本機能は全て備えていて，保存などのファイル操作や，切り取りや，貼り付けとい５．分散処理用エディタ
5. １

った編集も使用可能である。

分散処理用エディタの目的

分散処理用エディタは，分散処理用アプリケーションを記述するときに，通信命令を記述しやすいようにサポートし，作成後も，通信命令がどのソースの，どのメソッドと通信しているかが簡単に見てとれる機能を提供する。
5. 2

AgentSpace での通信

AgentSpace でサポートされているエージェント間通信は同一 AgentSpace 内のエージェント同士でしか通信が行えない。しかし，あるエージェントがタスク実行中に，他の AgentSpace にある別エージェントへデータを送っ

図３たり，あるいは相手エージェントの動作を要求する必要
5. 5が起こったとする。エージェントが移動したのではタス

分散処理用エディタ画面

通信命令挿入クの実行が中断されてしまう。よって，エージェントがど通信命令挿入というのは，通信命令を記述するものでこにいようとお互いに通信ができる機構が必要となる。

ある。ここでは，開発者のコーディング時のミスをできそこで通信要求の生じたエージェントはエージェントるだけ予防できるように，ダイアログにしたがって記述間通信専用のエージェントを生成し，送りたいメッセーしていくだけで命令が完成するようになっている。例え

ジと，送りたい相手先のエージェント ID やエージェン

ば「エージェント名による送信命令」を記述する場合にト名を渡す。送信元エージェントが自分で移動して相手先を探すのではなく，通信専用のエージェントに仲介してもらうことで，タスク実行の中断を防ぐことができる。
通信専用のエージェントは他のエージェントからの呼び出しによって生成されて送信データを受け取った後，別マシンへ飛び通信相手先エージェントを探索する。通信
相手を探し当てた通信専用エージェントは，データを送

図４

通信方法選択画信し，その場で消滅する。
5. 3

通信方法

通信方法に関しては，今年度，当研究室の田久保が実装を行った。実装した通信方法は以下の通りである。
①

図５

１対１エージェント間通信

AgentContext 入力画

グループ内で各エージェントを特定して通信する方法②

エージェント ID 指定通信エージェントの ID を指定して通信する方法③

グループ名通信
グループ内のエージェント全てに送信する通信方法④

エージェント名指定通信
エージェント名を指定して通信する方法
図６−30−型決定画面

5. 6

は，まず図４のようなダイアログで通信方法を尋ねられリンク作成る。次にインターフェースとなり，通信の手助けとなる単独作成で通信命令を記述した場合や，後に紹介する

AgentContext 変数を入力（図５）する。そして，図５とリンクを削除する操作が行われた後などには，通信相手同様のダイアログ画面が，表示され，通信相手のエージが設定されていない。しかし，通信命令自体は通信情報ェント名，通信相手の受信メソッド名を入力する。こことして登録されている。リンク作成はこの通信情報に登までが通信に必要な条件の設定である。

録されている通信命令同士を，リンクさせるものである。

次に，通信を行うデータの入力になる。

これはアプリケーションには実際に何の影響もないが，図６の画面で扱うデータの型を決定し，その後，図５のリンクを作成することで，いつでも，通信相手が分かるダイアログで変数，もしくは扱うデータそのものを入力ようになる。通信したい命令を選択すると，ソースファする。これが基本的な通信命令記述方法である。

イル選択画面が開かれる，リンクをさせたい命令がある

挿入方法は，用途に合わせて送信・受信ともに３種類

ソースを選ぶと，先ほど選択した通信命令と，条件が合の挿入方法を用意した。

うものが一覧表示される。

(1) 通信同時挿入

条件とは，送信命令に記述されている通信相手のメソ送信（受信）命令を記述するときに，同時に受信（送ッド名が，受信命令のメソッド名と合致するかどうか，信）命令を作成し，通信に使う必要な情報，すなわち，送りたいデータの数が一緒かどうかを検索している。

受け取りメソッド名，データの変数や数など通信相手
5. 7同士を，対応して記述できるようになっている。対応

リンク確認して記述できるので，アプリケーション実行時の通信

通信挿入時やリンク作成時に設定した，通信相手を確の保証も成される。出来上がった送信(受信)命令は，認する機能である。リンクを確認したい通信命令を選択ソースのカーソルの位置に挿入でき，相手の受信（送すると，相手ソースファイルが開かれ，通信相手命令の信）命令は，挿入するソースを選択した後，貼り付けところまでカーソルが移動する。通信命令は１対１とはボタンを使って挿入することができる。同時挿入では，限らず，複数通信対象がある可能性がある，その場合に通信するデータの数は，取消しボタンが押されるまで，は，リンクしている全ての通信ファイルが開かれる。リ

通信したいデータの個数分入力できる。また，この場ンクが設定されていない場合には，「リンク設定されてい合にのみ，受信命令の変数も設定するように図５のダません」と表示する。

イアログが表示される。
5. 8(2) 既存通信命令対応挿入

通信情報登録既に通信情報に登録されている受信（送信）命令に通信命令挿入で記述すると，通信情報が，記述してい合わせて，送信（受信）命令を挿入する方法である。

るソースがあるディレクトリに専用のディレクトリが生受信命令が，Receive という名で，データ数が３個であ成され，その下に保存される。この情報を使用すれば，れば，送信命令はそれに対応するように受け取りメソリンクが確認でき，更新することでリンクの作成や，リッド名を Receive で，データ数を３個と記述ができる。こンクの削除を行っている。図８はその送信命令側の通信の挿入方法では，通信相手のデータがもし，String であれ情報の例である。

ば，String で入力するようにダイアログが出る（図７）。

図８
図７ 対応するデータが String の場合

送信命令情報３行で１セットになっていて，１番目が送信命令，２(3) 単独挿入

番目が通信する相手ファイル名，そのファイルの通信命

通信相手を考えずに送信（受信）命令だけをそのま令が３番目にある。ＮＬとＮＣは 1 セットで，通信相手ま記述するものである。送信命令作成時には図６の画命令がないことを示している。

面は表示されず，変数，もしくはデータを入力する画

ファイル名が sample.java である場合，送信命令情報は面だけが出てくる。

sampleS.txt に，受信命令は sampleR.txt に保存されている。

−31−

７．おわりに

この情報は通信命令の作成や，リンク作成などの機能を使うごとに更新される。

分散処理モニタでは，分散処理内部でどんな情報が保5. 9

その他の機能たれているかがわかり，また，マシンにどんなエージェ

上記の他にも以下の機能を実装した。

ントが存在するのか，いつ生成されて，いつ削除された

・のかというように，ある程度エージェントの動きを把握

リンク削除
リンク作成とは逆に，リンクを切る機能・できるようにもなった。それを見てエージェントの操作

通信命令変更が行え，ユーザの介入がしやすくなった。

登録した通信命令を，変更する場合に使う。リン

通信部分では通信部分の記述をサポートすることで，クは全て切れるが，登録は残る。
・

実行エラーを未然に防ぐことができようになり，また，保存時の命令確認

実行エラーが起きたとしても，通信命令がどの通信命令キーボード操作で通信命令を削除したときに，通と対応しているかが分かり，その後の対処がしやすくな

信命令がないことを確認し，自動的に登録情報からった。

削除する機能・

今後は分散処理モニタに実行エラーを，分散処理モニ全リンク削除

タに表示できるように改良していくべきである。その際通信命令を変更したときや，命令がなくなったとにはエディタでデバッグをサポートできるような形を取きにリンクを全て消去する機能れることが望ましい。
また，分散処理用エディタでは，このエディタを使っ６．評

価て書いたものではないファイルの通信を自動検出し，登録できるようにすれば，より便利なものになるだろう。

分散処理モニタのメリットは以下の４点である。
①②③

分散処理モニタを通じて行った操作は，全ての履

参考文献

歴が時刻とともに残り，過去の操作も確認するこ[1] 佐々木竜介，小川大介，坂井功，甲斐宗徳「モバイとができるようになっている。

ルエージェントを用いた自律分散処理システムの構

情報の表示，エージェントの操作ができ，ユーザ築にとって使いやすいものとなっている。

ビリティの向上−」2004 年度電気学会電子・情報・マウスですべて操作できるので，ユーザにとって，システム部門大会論文集，pp.1036-1040，(2004-9)

とても使いやすい設計になっている。
④[2] 佐藤一郎

ある期間，マシン上の全てのタスクエージェントなっている。

以上のことから，システム使用者が，モニタを使用することで，情報得て，エージェントの操作を行えるといったように，分散処理に介入しやすくなったといえる。
分散処理用エディタの利点は以下の３点である。
通信の記述が，ダイアログにしたがっていくだけで簡単に作成できる。
②

通信相手の命令を同時に記述したり，通信相手に対応するように通信命令を記述数することで，アプリケーション実行時の通信の保証ができる。

③

モバイルエージェントシステム

http://islab.is.ocha.ac.jp/agent/index.html

が異常な動作をしていないかを見ることが可能と①−自律分散処理システムにおける性能とユーザ通信情報をいつでも確認できる。

ユーザは関数の仕様を知らなくても，通信命令の記述が行え，通信時における実行エラーを未然に防げる可能性は大きくなった。

−32−