ポゼッションシステム: Java による 適応的アプリケーション環境
description
Transcript of ポゼッションシステム: Java による 適応的アプリケーション環境
![Page 2: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/2.jpg)
研究目的
環境や状況に応じてふるまいが変化する ( 適応する ) アプリケーションの実現
環境・状況の変化を把握するために,各種センサやデバイスからの情報を利用する.また,それらを通じて外界へのフィードバックを行う
情報収集のフェーズとアプリケーションの適応動作と外界へのフィードバックのフェーズを結びつけるフレームワークの実現
![Page 3: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/3.jpg)
関連研究
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)
![Page 4: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/4.jpg)
ポゼッションシステムとは ?
ポゼッションモデルに基づくアプリケーション環境– 分散アプリケーションを構成するオブジェクトを
Soul( 魂 ) と Body( 肉体 ) と possession( 憑依 ) というアナロジに基づき抽象化
– アプリケーションの構成およびオブジェクト同士の協調関係を単純操作で動的に変更可能にする
アプリケーションの適応支援– 利用状況に応じてアプリケーション ( プロセス ) 単位で
の切り替えを行うのではなく, Soul と Body というコンポーネントレベルでの粒度の細かい適応支援を行う
![Page 5: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/5.jpg)
ポゼッションモデルの概念図
以下,各項目について順次説明– (1) Soul– (2) Body– (3) possession
Bodypossess
SoulSoul
+Body
![Page 6: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/6.jpg)
(1) Soul について 「計算コンポーネント」を抽象化
– オブジェクトの動作 (Thread of control) を記述 Body とリモートインタフェースを共有する
– Body インタフェースを実装 possess 操作で,憑依対象 ( 制御対象 ) となる Body を選
択・登録する Soul のメソッド呼び出しで, possession 中の Body の
メソッドを呼び出す Runnable インタフェース, Serializable インタフェー
ス, Remote インタフェースを実装した Java クラスのインスタンス
![Page 7: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/7.jpg)
(2) Body について
「資源コンポーネント」を抽象化– 各種デバイス,センサへのラッパー– 各種グラフィックコンポーネント
Body リモートインタフェースを実装 Body インタフェースを実装した Java
クラスインスタンス (Java Beans)
![Page 8: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/8.jpg)
(3) Possession 操作
Soul が Body に対して実行し,対象となる Body の選択および制御を行う
同種 (homogeneous)Body のポゼッション– e.g.) 複数ホスト上のプレゼンテーションソフ
ト ウェアの同時制御 異種 (heterogeneous)Body のポゼッション
– e.g.) ビデオビューワアプリケーション機能の 実現.ビデオキャプチャ Body から入力を 受け,ビデオビューワ Body に出力
![Page 9: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/9.jpg)
Soul-Body 間インタラクション
Soul は Java RMI(Remote Method Invocation) で Body のメソッドを呼び出す
Body から Soul に対しては callback メソッドを用意
S0B0
B0S0
RMI (Body Interface)
RMI (#callback)
![Page 10: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/10.jpg)
Soul と Body の関係
S B
1 対 1 関係
S B
1 対多関係
B
B
BS
S
S
S
B
多対 1 関係
![Page 11: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/11.jpg)
Soul による Body 制御S
B B B B
S
B B B B
HomogeneousRelationship
HeterogeneousRelationship
B B B B B B
S S S
SAggregation
![Page 12: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/12.jpg)
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);}
![Page 13: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/13.jpg)
応用領域
グループウェアへの応用– デスクトップ会議システム,遠隔教育システ
ム,遠隔プレゼンテーションシステム バーチャルオブジェクトの操作への応用
– アバターやエージェントの制御– 個人属性を反映する制御の実現
同一 Body に対して, A さんに最適化された Soulと B さんに最適化された Soul が憑依することで異なる動作を実現
![Page 14: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/14.jpg)
GUI をともなう Body の例 Screenshot
MPEG1 Viewer Body
Video Viewer Body GPS Map Viewer Body
Image Viewer Body
![Page 15: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/15.jpg)
プロトタイプアプリケーション
(1) ビデオ会議アプリケーション (2) 位置情報に基づく映像ソースの
動的変更 (3) PC カードの挿抜に基づく
アプリケーションの構成変更
![Page 16: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/16.jpg)
デスクトップ会議アプリケーション
Screenshot
![Page 17: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/17.jpg)
ビデオ会議アプリケーションの構成
既存アプリケーションの実現例
Sv BcSv Bc
BvBvBvBv
VideoViewerBody
Host A Host B
St
Bt Bt
St
BtBt
VideoCaptureBody
TextBody
![Page 18: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/18.jpg)
位置情報に基づく映像ソースの切り替え 位置情報の利用例
D
B
D
B
D
BS2
S1
MPEGDecoderBody
VideoCaptureBody
VideoViewerBody
GPSBody
MH
MH
Location A
Location B
![Page 19: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/19.jpg)
PC カードの挿抜に基づくアプリケーションの構成変更
insert/remove
pccardd
Bevent notification
B
SFreeBSD PC-cardManagement Daemon
PC-cardManagementBody
Soul as an EventManager
Script InterpreterBody
PC-cards
B
Script StorageBody
環境情報の利用例
![Page 20: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/20.jpg)
ポゼッションシステムのアーキテクチャ
構成要素– Field
Medium の管理単位,各ホストに 1 つ存在 Soul の管理 : Body は Medium 単位で作成される
が, Soul は Field 単位で管理される→異なるMedium 上の Body にも等しくアクセスするため
– Medium Body の管理単位,必要に応じて随時作成可能
– Body と Soul
![Page 21: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/21.jpg)
ポゼッションシステムのアーキテクチャ ( 続き )
Field
S S S
B BMedium
D D
Field
S
B
B
D D
BMedium
BMedium
Host A Host B
S
![Page 22: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/22.jpg)
ポゼッションシェル
シェル自体を 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
![Page 23: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/23.jpg)
ポゼッションシェル ( 続き )
スクリプトの記述例
set soul [create -s]set medium [create -m]set body [create -b $medium]possess $soul device_scc0dvopen $soul sccpossess $soul $bodystart $soul
![Page 24: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/24.jpg)
ポゼッションシェル ( 続き )
新規コマンドの定義例
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}
![Page 25: ポゼッションシステム: Java による 適応的アプリケーション環境](https://reader033.fdocument.pub/reader033/viewer/2022050820/56815030550346895dbe27a6/html5/thumbnails/25.jpg)
まとめ
分散オブジェクトコンポーネントをSoul と Body として抽象化するポゼッションモデルを提案
プロトタイプとしてポゼッションシステムを設計・実装し,その上でのサンプルアプリケーションを示した