言語ゲーム

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

Twitter: @propella

Tweak とは何か

雨のせいか、今日はやる気が全く起こらないのでポツポツと日記を書く。Tweak とは何か。何であるべきか。大枠では、子供の為の創作環境という目標があって、そこに至る様々なレベルの問題を同時に解決してしまおうという物。様々なレベルとは、

  • 画面上のメニューやアイコンがどう表現されるべきかという問題から始まって、
  • ペイントや文書作成のツールはどうあるべきか、
  • 子供が(勿論大人も)プログラムする環境。(etoy-2)
  • 文書フォーマット (Project)
  • システム言語デザイン (tweak language)
  • 共有通信プロトコル (MediaMessenger)
  • 高レベルグラフィック API (player - costume)
  • グラフィックデバイスとの低レベル API (roma)

勿論それぞれのレベルでは、巷の商用アプリにかなう完成度は望むべくも無いのだが、アンドレアスという一人の人間の頭に全てが納まっているという意味で、上から下まで完全に統合されているという特徴がある。全てが新しかった70年代なら兎も角、今やろうというのは並大抵な事ではない。

アンドレアスも一人で考えていると色々変な事を思いつくもので、例えば Tweak のあちこちで使われているイベントと言うのは、よくマウス処理に使われる状態の発生とその処理を分けてカプセル化する物だが、こういうのをマウスに限らず普遍的に使って、且つ言語に組み込もうというのが面白い。Tweak のデバッガは、コンテキストスタック以外にイベントの伝播も追えるようになっている。これは e-rights という言語から派生したらしいので調べないと。

もう一つ GUI に使われるプレイヤ-コスチューム構造と言うのは、階層化された MVC だと見る事が出来る。ビューにもモデルの性質があり、モデルにもビューの性質がある場合、これを二つ以上のレイヤに分ける。レイヤの底には完全なビュー(純粋コスチューム)の世界があり、表面に純粋なモデルを配置する。プレイヤとはコスチュームよりも抽象的な表現であるという相対的な役割を表す為に使う言葉で、これが MVC と違う所。こういった階層構造を作る事により、モデルとその画像表現との組み合わせ可能性がより大きくなる。

考え中の部分も沢山あるのだが、特に興味があるのは、汎化をどうやって表現するかと言う事。汎化とは、ユーザがある特定の目的で作った作品が「ツール」になるために飛び越えなくてはいけないある壁の事。「ひとつ」が「たくさん」になる瞬間。HyperCard では、カードのバックグラウンドにテキストボックスを一つ貼り付けるだけで汎化を表現出来た。その瞬間一つのテキストボックスがページごとのたくさんのテキストボックスになったのだ。バックグラウンドが「クラス」の役割を果たとも言える。Excel の「数式をドラッグ」も素晴らしい汎化の表現だ。Tweak が単なる etoy-2 に終わらない為には、一般的な汎化の仕組みが必要なんじゃないかなと思う。

オープンソースプロジェクトと言うのは、良く真似っこソフトだと言われる。Tweak が成功するかどうか今の時点では分からないが、ただの真似っこでは無いと言う事だけは言える。こういうのにお金を出してくれる HP は良い会社だ。。。