マルチスレッドとGUI - 有限会社ITプランニング

マルチスレッドGUIモデル
小笠原啓
有限会社ITプランニング
ゴール
 マルチスレッドなGUIライブラリをOCamlで。
 動きのあるUIは近頃必須なので、アニメーションを容易にする仕組みを導入。
 GUI部品のイベント、見かけを自由にカスタマイズできるように。
Page 2
マルチスレッドとGUI
 スレッド間情報共有
 共有メモリ、メッセージパッシング
 描画はマルチスレッド化できない。
 副作用は少ないほうがよい。
Page 3
Concurrent Cell
 CMLスタイルのメッセージパッシングライブラリ(Ocaml)
 Eventライブラリの上に構築。
 スレッドレスな ivar, mvar, mbox(queue)。
 GCも考慮したbroadcastチャンネル。
 widh_nack, timeout, future, rpcなどの便利関数も実装。
Page 4
Reactive Programming
 動き(ビヘイビア. ‘a behavior)を状態の無限リストで表現。動きを宣言的に記述
できる。
状態変化をf : ‘a→’aで記述して、streamにする。
離散的なタイムラインとみなせる。
 ビヘイビアは合成可能(コンビネーター)。

over, fusion, insert, replace, loop
 イベントが起きたときにビヘイビアを変化させるコンビネーター。
 react : bool event → (‘a behavior → ’a behavior) →‘a behavior → ’a
behavior
Page 5
時間
柔軟なGUI部品
従来の部品(Model-View-Control)
 内部状態と表示内容とにずれがないよう、保障してくれる代わりに、イベント部
分以外の動作を変更できない。
 カスタム部品はゼロから作らなければならない。
新しい設計の部品
 イベントの受信と状態判定とロジックを一体化。(インタラクション)
 子部品とインタラクションの集まりで一つの部品と定義。
Page 6
デモンストレーション
Page 7
Related and Future Work
 Related Work
 eXene
 Fudget(Gadget)
 FranTk
Page 8
 Future Work
 CMLスタイルのメッセージパッシン
グをπ計算でエンコーディング。
 モデルチェックでデッドロック回避。
Web Site: www.itpl.co.jp Email: [email protected]
Page 9