osiire’s blog

ふしぎなそふとやさん

次世代のGUIライブラリの要件

古き伝統のライブラリから脱却して、次のステップに進んだイベントドリブンなGUIツールキットはどんなものになるのでしょう。難しいですが、その要件が少しずつ幾つか見えてきた気がしてきたので、メモしておきます。

■イベントの一級化と合成

これはつまり、イベント発生源を変数にしてしまおうという発想です。イベント発生源が変数になれば、それを関数の引数にいれてどんどん引き回していけば様々な環境でハンドラを登録できますし、変数同士を合成して新しいイベント発生源を作れるようになれば、今までイベントが発生した後に全てを記述しなければならなかったのに、イベントそのものに構造を持たせる事ができるようになります。さらに、その変数同士の依存関係を変数自体が自前で適切に扱ってくれるようになれば、複雑な条件判断を減らすことが出来ます。
Functional Reactive Programmingの定義はよく知りませんが、たぶんこの感じの機能をある程度実現していると思います。

■マルチスレッド

イベントの第一級化を利用すると、非同期的なトリガーを起点とする処理をまとめてイベントの構造に押し込められるようになります。そうすると、その「起点」を別スレッドに押し込めたくなったりします。そこでマルチスレッドが役に立つと思います。そのためには、ライブラリ全体がマルチスレッドに対応していなければならないので、結局マルチスレッド化が必要になってくる気がしています。

コンポーネント動作の抽出と合成

これはまだ実験段階なのですが、構造的部分型を利用すれば、コンポーネントの特定の動きだけを抽出してモジュール化できると思っています。かなり抽象的な動きを定義して、それらに具体的な関数を渡すなどして少しずつ具体化して、最終的にコンポーネントの動きとして組み込む。それを繰り返したり合成したりして、複雑なコンポーネントを組み上げる。そうやっていけば、固定的でカスタマイズ不能なコンポーネント群に悩まされることもなくなるのではないかと期待しています。

■まとめ

これが出来るようになるのは、いつ頃かなー(遠い目