ポゼッションシステム: Java による 適応的アプリケーション環境
description
Transcript of ポゼッションシステム: Java による 適応的アプリケーション環境
研究目的
環境や状況に応じてふるまいが変化する ( 適応する ) アプリケーションの実現
環境・状況の変化を把握するために,各種センサやデバイスからの情報を利用する.また,それらを通じて外界へのフィードバックを行う
情報収集のフェーズとアプリケーションの適応動作と外界へのフィードバックのフェーズを結びつけるフレームワークの実現
関連研究
Context-Aware Computing– 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
Bodypossess
SoulSoul
+Body
(1) Soul について 「計算コンポーネント」を抽象化
– オブジェクトの動作 (Thread of control) を記述 Body とリモートインタフェースを共有する
– Body インタフェースを実装 possess 操作で,憑依対象 ( 制御対象 ) となる Body を選
択・登録する Soul のメソッド呼び出しで, possession 中の Body の
メソッドを呼び出す Runnable インタフェース, Serializable インタフェー
ス, Remote インタフェースを実装した Java クラスのインスタンス
(2) 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 メソッドを用意
S0B0
B0S0
RMI (Body Interface)
RMI (#callback)
Soul と Body の関係
S B
1 対 1 関係
S B
1 対多関係
B
B
BS
S
S
S
B
多対 1 関係
Soul による Body 制御S
B B B B
S
B B B B
HomogeneousRelationship
HeterogeneousRelationship
B B B B B B
S S S
SAggregation
Body と Soul でのリモートインタフェースの共
有Class BodyGraphicsImp extends BodyImp implements BodyGraphics { public synchronized void setImage(int[] data, Dimension dim) { bgcmp.setImage(data, dim); }}
Class BodyGraphicsImp extends BodyImp implements BodyGraphics { public synchronized void setImage(int[] data, Dimension dim) { bgcmp.setImage(data, 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); } }}
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); } }}
interface BodyGraphics extends Remote { public void setImage(int[] data, Dimension dim);}
interface BodyGraphics extends Remote { public void setImage(int[] data, Dimension dim);}
応用領域
グループウェアへの応用– デスクトップ会議システム,遠隔教育システ
ム,遠隔プレゼンテーションシステム バーチャルオブジェクトの操作への応用
– アバターやエージェントの制御– 個人属性を反映する制御の実現
同一 Body に対して, A さんに最適化された Soulと B さんに最適化された Soul が憑依することで異なる動作を実現
GUI をともなう Body の例 Screenshot
MPEG1 Viewer Body
Video Viewer Body GPS Map Viewer Body
Image Viewer Body
プロトタイプアプリケーション
(1) ビデオ会議アプリケーション (2) 位置情報に基づく映像ソースの
動的変更 (3) PC カードの挿抜に基づく
アプリケーションの構成変更
デスクトップ会議アプリケーション
Screenshot
ビデオ会議アプリケーションの構成
既存アプリケーションの実現例
Sv BcSv Bc
BvBvBvBv
VideoViewerBody
Host A Host B
St
Bt Bt
St
BtBt
VideoCaptureBody
TextBody
位置情報に基づく映像ソースの切り替え 位置情報の利用例
D
B
D
B
D
BS2
S1
MPEGDecoderBody
VideoCaptureBody
VideoViewerBody
GPSBody
MH
MH
Location A
Location B
PC カードの挿抜に基づくアプリケーションの構成変更
insert/remove
pccardd
Bevent notification
B
SFreeBSD PC-cardManagement Daemon
PC-cardManagementBody
Soul as an EventManager
Script InterpreterBody
PC-cards
B
Script StorageBody
環境情報の利用例
ポゼッションシステムのアーキテクチャ
構成要素– Field
Medium の管理単位,各ホストに 1 つ存在 Soul の管理 : Body は Medium 単位で作成される
が, Soul は Field 単位で管理される→異なるMedium 上の Body にも等しくアクセスするため
– Medium Body の管理単位,必要に応じて随時作成可能
– Body と Soul
ポゼッションシステムのアーキテクチャ ( 続き )
Field
S S S
B BMedium
D D
Field
S
B
B
D D
BMedium
BMedium
Host A Host B
S
ポゼッションシェル
シェル自体を Body として実現– Jacl (Tcl インタプリタ in Java) を利用
シェルコマンド ( 一部抜粋 )
コマンド名 記述cd fieldID Change a target object
ls [-msb] List existing objects
rm objectID Delete an object
create [-msb] Create a new object
possess soulID bodyID Let a Soul possess a Body
ポゼッションシェル ( 続き )
スクリプトの記述例
set soul [create -s]set medium [create -m]set body [create -b $medium]possess $soul device_scc0dvopen $soul sccpossess $soul $bodystart $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 として抽象化するポゼッションモデルを提案
プロトタイプとしてポゼッションシステムを設計・実装し,その上でのサンプルアプリケーションを示した