言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

Tweak の応用

虫眼鏡というほんの小さな部品を Tweak で作ったが、これが良い勉強になって、何となくこの Tweak の性質が読めてきた。たくさんの実験が詰まった箱。僕なりに Tweak の将来像を見ておかなければ詰め込まれた小さな機能を追いかけるだけで疲れてしまいそうだ。あらゆる部分で大きく変わった Tweak だが、他の良く似た環境、例えば FlashKonfabulator と比較するとやはり SqueakSqueak だ。一枚の画面、いつでもデバッグが出来る。システムとアプリケーションの境が無い事。Squeak と長く付き合っているとどうしてもそのダサい所が目に付いてしまうのだが、どうかよい所を生かしたい。

大まかなゴールとして、一体何に使えるのかという考える。プレゼンと教育。恐らくプレゼンは Impara の人が相当やってると思うので、とりあえず教育やるか。Squeak で出来ない事。本当にオブジェクトを作る事。例えばアナログストップウォッチを作る。

全体の課題の目的は、モデルとその表現を関連させる事。単純な要素を組み合わせる事。

まず単純なストップウォッチを作る。モデルに必要な変数は一つだけ。経過時間の秒数だ。これをも元に、分針と秒針の角度を決める。ボタンによってストップウォッチは動作するが、これはボタンと経過時間との関連だ。ボタンは直接針を動かさず、針は経過時間の更新によって動かされる。モデルと表現を分離する事によって、逆に針を無理矢理動かして経過時間を操作するなんて事も出来る。

第二段階として、オブジェクトを組み合わせる。例えば乱数の速度で走る車を計測する事を考える。ここで必要なのが情報の隠蔽だ。お互いのオブジェクトはいくつかのスクリプトや変数を持つが、連携して動く為に全てを知っておく必要は無い。例えば、ストップウォッチは車がゴールしたかどうかを知れば良いのであって速度について知る必要が無い。外部に公開する要素を減らす事によって見通しが良くなる。

第三段階は、作ったオブジェクトを共有する。友達のオブジェクトを画面に呼び出して、自分のと一緒に動かしてみる。たくさんのストップウォッチと車を同時にスタート、ストップする事が出来ればそれはレースになる。ここで必要なのがそれぞれのストップウォッチと車をグループ化しておくこと。そのグループが外部に対してシンプルなインタフェースを持つ事。同時に動かすためにはインタフェースを共通化しておくことだ。

第四段階として、ストップウォッチの改造と応用を考える。ストップウォッチの本質は、数値情報とその表現の関連にあるので、これは例えばそのままスクロールバーとして使えるだろう。より実用性が高いものとして、プログレスバーはどうだろうか。面白いプログレスバーの制作には、高いデザイン能力とプログラミング能力が必要とされるが、自分の作ったプログレスバーがプロジェクトやファイルを読み込む時に使えたら楽しいだろう。