アンドレアスに Tweak を習う。元はといえば CPrimitiveCostume を何故継承してはいけないかという話なのだが、その為に根源的な MVC と Morphic の違いから始まってその利点と欠点と解決方法等、また、話は変わってアンドレアスが今進めているプロジェクトの仕組みがいかに今の Squeak の仕組みを根本から解決するかという話まで多岐にわたる説明で、なんかもう、今日はこれ以上何も頭に入りません。。。書く元気も無いが、忘れない程度にメモ。
- Tweak のプロジェクトは Squeak のプロジェクトとは全く異なった概念で、画面上のワールドともチェンジセットとも関連しない。あるリソースの組をプロジェクトと呼ぶ。
- プロジェクトは階層構造を持つ事が出来る。プロジェクト A が、プロジェクトB,C に依存する時、依存するプロジェクトがロードされる。
- 依存関係に無いプロジェクト内のリソースは同じイメージにあっても無視される。単一継承の名前区間のような物。
- リソースには画像、プログラム等が含まれ、同一性が保障される。
- オーサリングシステムを含まないランタイムを作る予定がある。Tweak プロジェクト(アプリ)は、VB や Java のように小さなランタイムだけに依存して配布する事が出来る。
- プレイヤとコスチュームは MVC のモデルとビューを改良した物である。最大の特徴はコスチュームもまたプレイヤであるという事。
- という事はプレイヤとコスチュームは連鎖できる。最終的にレンダリングされるのは最も端っこのコスチュームである。これは何のためにあるかというと、例えば三角形の形のボタンを作りたいとする。CButtonPlayer - CButtonCostume - CPolygonCostume のように設定する。すると CButtonPlayser がモデルとして、CButtonCostume がコントローラとして、CPolygonCostume がビューとして動作する(CPolygonCostume が無ければ CButtonCostume がそのまま標準ボタンをレンダリングするので、モデルとビューの二つを併せ持つ事になる)。
- CPlayer のサブクラスは直接 costume を参照してはならない。動作としてはプレイヤはコスチュームを「知って」いるのだが、ユーザのコード内で参照してはならない。これにより、一つのプレイヤに複数のコスチュームを設定した時の動作が保障される(美しい。。。)。
- CPrimitiveCostume は歴史的に仕方なく存在しているので見なかった事にして欲しい。
システムを作る為に闇雲に言語をいじる事には異論があると思うが、アンドレアスの話を聞いてると正しい事をしているように思えてきた。言語を作る事に目的があるのではなく、ゴールに向かう為に言語があるので、ある程度ゴールが見えてきたら言語をすっきりさせる方にも力がさけるんじゃないかなと思う。
あと、今日一日で随分アンドレアスへの印象が変わった、大島さんに脅かされていたのだが、ほんとうはすごい面倒見の良いナイスガイではないか?! 某ジャイアン氏のように抽象的な事を長々と語る事も無いし。ドイツ人らしくドメインがはっきりしていて素晴らしい。