プログラム分散化のための
アスペクト指向言語
西澤無我
学籍番号 98-2072-7
1
動機 – 既存プログラムの分散化
既存プログラムの各機能を複数のマシンに分散
させたい
ex. 遠隔 GUI の操作
遠隔ホストのディスプレイに
JFrameオブジェクトを表示、etc
そのためには
遠隔ホスト
プログラムを機能により分割
分割した各パーツがお互いに
通信しながら動作するように書き換える
アプリケーション
ホスト
既存の分散プログラミング支援ツール
ex. JavaRMI
2
JavaRMI による分散化
JavaRMIの制約に従って以下のプログラムを手
で記述し、利用する
遠隔クラスのメソッドをインターフェースとして定義
遠隔サービスを利用するクライアントクラスを記述
独自のコンパイラでスタブまたはスケルトンを生成
etc …
これらの作業は大変骨が折れる
3
既存プログラム
bytecode
Addistant プロジェクト
既存プログラムをバイトコ
ード変換により自動的に
分散化することができる
分散化の指針を既存プロ
グラムと分離したファイル
に書くことができる
分散化の
指針
bytecode
変換
アプリケーション
ホストbytecode
遠隔ホスト
bytecode
4
分散化の指針の分離
既存プログラムから分散化に関する記述を分離
する必要性
プログラム全体の保守性が高まる
既存プログラムの可読性が保持される
分散環境の修正、変更があれば、分散化の指針のみを修
正、変更すればよい
Advanced Separation of Concerns として近年注目さ
れている技術である
5
Addistant の分散化モデル
旧版モデル
既存プログラムの
セマンティクスを保持
しながら分散させる
例えば、 2 つの遠隔ホスト
上で対戦する Tic-Tac-Toe
を作れない
元々1つの Window を2つに
異なる分散化モデルも必要
アプリケーション
ホスト
遠隔ホスト1
遠隔ホスト2
6
研究の成果 :
ORB の差し換え機能の実現
ORB の役割
変換後
bytecode
変換後
bytecode
以下の機能を実現
ORB
ORB
遠隔
遠隔オブジェクト生成 アプリケーション ネットワーク
ホスト
ホスト
遠隔メソッド呼び出し
などの分散オブジェクトのリクエストを作成、受信の
ための手段を提供している
ORB が分散化モデルを実装
ユーザ定義の ORB クラスで、Addistant のデフォ
ルト ORB を差し換えることができるようにした
ユーザ定義の ORB クラスは RequestBrokable インター
フェースを実装
7
ユーザ定義 ORBの例:
TicTacToe
多重化ORB
標準ORBの
分散化
Windowを1個生成
ORB
ORB
アプリケーション
ホスト
遠隔ホスト
多重化ORBの分散化
二重に生成
TicTacToe
Windowを1個生成
ORB
遠隔ホスト1
多重化ORB
ORB
アプリケーション
ホスト
遠隔ホスト2
8
ユーザ定義 ORBの例:
TicTacToe
多重化ORB
標準ORBの
分散化
メソッド呼出
ORB
ORB
アプリケーション
ホスト
遠隔ホスト
同じ引数で
二重に呼出
多重化ORBの分散化
TicTacToe
メソッド呼出
ORB
遠隔ホスト1
多重化ORB
ORB
アプリケーション
ホスト
遠隔ホスト2
9
分散化の指針の記述
分散化の指針
<orb classname=“RequestMultiplyingBroker”>
<remote name=“rmt”>
<host name=“taro” …/>
<host name=“yulian” …/>
</remote>
多重化ORBの実装
invokeRemoteMethod(…) {
for (int i = 0;i < stdorb.length; ++i) {
stdorb[i].invokeRemoteMethod(…);
}
}
10
実装状況
旧版の Addistant に相当の機能はほぼ完成
ORB の差し換え機能を実現
ORBが差し替え可能なように再設計
旧版の Addistant のコードは利用していない
多重化 ORB の実装が完成
Tic-Tac-Toe の実装が完成
全部で 3700 行
動作している対戦型
Tic-Tac-Toe
11
まとめ
新版 Addistant を設計・実装した
異なる分散化モデルに対応できる ORB の
実装をユーザ定義のクラスにより差し換え
可能にした
ユーザ定義ORBの例
多重化ORB
対戦型 Tic-Tac-Toe を作成した
12
今後の方針
オブジェクト配置の指定を、new 式のある
クラスやメソッドの種類といった生成文脈
に応じて細かく指定
ネットワーク・ストリームの実装の差し換え
13
© Copyright 2026 ExpyDoc