ポゼッションシステム: Javaによる 適応的アプリケーション環境 P ssession 慶應義塾大学大学院 政策・メディア研究科 望月 祐洋 moma@sfc.keio.ac.jp
研究目的 環境や状況に応じてふるまいが変化する(適応する)アプリケーションの実現 環境・状況の変化を把握するために,各種センサやデバイスからの情報を利用する.また,それらを通じて外界へのフィードバックを行う 情報収集のフェーズとアプリケーションの適応動作と外界へのフィードバックのフェーズを結びつけるフレームワークの実現
関連研究 Context-Aware Computing System Support for Adaptation Ubiquitous computing (Xerox PARC) System Support for Adaptation Odyssey (CMU) Service Proxy (JAIST) Ad-hoc Mobile Service (UCB) Multi-layered mobile multimedia arch. (OGI) Object Model Shaped Object (NEC) StratOSphere (UCSB)
ポゼッションシステムとは? ポゼッションモデルに基づくアプリケーション環境 アプリケーションの適応支援 分散アプリケーションを構成するオブジェクトをSoul(魂)とBody(肉体)とpossession(憑依)というアナロジに基づき抽象化 アプリケーションの構成およびオブジェクト同士の協調関係を単純操作で動的に変更可能にする アプリケーションの適応支援 利用状況に応じてアプリケーション(プロセス)単位での切り替えを行うのではなく,SoulとBodyというコンポーネントレベルでの粒度の細かい適応支援を行う
ポゼッションモデルの概念図 以下,各項目について順次説明 (1) Soul (2) Body (3) possession Body + Body Soul possess
(1) Soulについて 「計算コンポーネント」を抽象化 Bodyとリモートインタフェースを共有する オブジェクトの動作(Thread of control)を記述 Bodyとリモートインタフェースを共有する Bodyインタフェースを実装 possess操作で,憑依対象(制御対象)となるBodyを選択・登録する Soulのメソッド呼び出しで,possession中のBodyのメソッドを呼び出す Runnableインタフェース,Serializableインタフェース,Remoteインタフェースを実装したJavaクラスのインスタンス
(2) Bodyについて 「資源コンポーネント」を抽象化 Bodyリモートインタフェースを実装 各種デバイス,センサへのラッパー 各種グラフィックコンポーネント Bodyリモートインタフェースを実装 Bodyインタフェースを実装したJavaクラスインスタンス(Java Beans)
(3) Possession操作 SoulがBodyに対して実行し,対象となるBodyの選択および制御を行う 同種(homogeneous)Bodyのポゼッション e.g.) 複数ホスト上のプレゼンテーションソフト ウェアの同時制御 異種(heterogeneous)Bodyのポゼッション e.g.) ビデオビューワアプリケーション機能の 実現.ビデオキャプチャBodyから入力を 受け,ビデオビューワBodyに出力
Soul-Body間インタラクション SoulはJava RMI(Remote Method Invocation)でBodyのメソッドを呼び出す BodyからSoulに対してはcallbackメソッドを用意 RMI (Body Interface) S0 B0 B0 S0 RMI (#callback)
SoulとBodyの関係 B S B S B 1対1関係 B B S 1対多関係 S B S 多対1関係 S
SoulによるBody制御 S S B B B B B B B B Homogeneous Relationship Heterogeneous Relationship S Aggregation S S S B B B B B B
BodyとSoulでの リモートインタフェースの共有 Class BodyGraphicsImp extends BodyImp implements BodyGraphics{ public synchronized void setImage(int[] data, Dimension dim) { bgcmp.setImage(data, dim); } } interface BodyGraphics extends Remote { public void setImage(int[] data, Dimension dim); } Class SoulGraphicsImp extends SoulImp implements BodyGraphics { public synchronized void setImage(int[] data, Dimension dim) { for (Enumeration e = htPossessed.elements(); e.hasMoreElements();) { BodyGraphics body = (BodyGraphics)e.nextElement(); body.setImage(data, id); }
応用領域 グループウェアへの応用 バーチャルオブジェクトの操作への応用 デスクトップ会議システム,遠隔教育システム,遠隔プレゼンテーションシステム バーチャルオブジェクトの操作への応用 アバターやエージェントの制御 個人属性を反映する制御の実現 同一Bodyに対して,Aさんに最適化されたSoulとBさんに最適化されたSoulが憑依することで異なる動作を実現
GUIをともなうBodyの例 Screenshot MPEG1 Viewer Body Video Viewer Body GPS Map Viewer Body Image Viewer Body
プロトタイプアプリケーション (1) ビデオ会議アプリケーション (2) 位置情報に基づく映像ソースの 動的変更 (2) 位置情報に基づく映像ソースの 動的変更 (3) PCカードの挿抜に基づく アプリケーションの構成変更
デスクトップ会議アプリケーション Screenshot
ビデオ会議アプリケーションの構成 既存アプリケーションの実現例 Sv Bc Bv St Bt Host A Host B Video Viewer Body Host A Host B St Bt Capture Text
位置情報に基づく 映像ソースの切り替え 位置情報の利用例 B Location A Location B S1 S2 D MH Video MPEG Decoder Body Video Capture Viewer GPS MH Location A Location B
PCカードの挿抜に基づく アプリケーションの構成変更 環境情報の利用例 Script Storage Body Script Interpreter Body B B insert/remove pccardd PC-cards S B event notification FreeBSD PC-card Management Daemon Soul as an Event Manager PC-card Management Body
ポゼッションシステムの アーキテクチャ 構成要素 Field Medium BodyとSoul Mediumの管理単位,各ホストに1つ存在 Soulの管理: BodyはMedium単位で作成されるが,SoulはField単位で管理される→異なるMedium上のBodyにも等しくアクセスするため Medium Bodyの管理単位,必要に応じて随時作成可能 BodyとSoul
ポゼッションシステムの アーキテクチャ (続き) Host A Host B B Medium Medium Medium B B B B B Field Field S S D D D D S
ポゼッションシェル シェル自体をBodyとして実現 Jacl (Tcl インタプリタ in Java)を利用 シェルコマンド (一部抜粋)
ポゼッションシェル(続き) スクリプトの記述例 set soul [create -s] set medium [create -m] set body [create -b $medium] possess $soul device_scc0 dvopen $soul scc possess $soul $body start $soul
ポゼッションシェル(続き) 新規コマンドの定義例 proc postit {medium obj} { set body [create -b $medium] set soul [create -s] set host [lindex [split $medium /] 2] possess $soul rmi://$host/$body image $soul $obj }
まとめ 分散オブジェクトコンポーネントをSoulとBodyとして抽象化するポゼッションモデルを提案 プロトタイプとしてポゼッションシステムを設計・実装し,その上でのサンプルアプリケーションを示した