on outline processing, writing, and human activities for nature
Squeak Smalltalk の Morphic であそんでいます。
Morphic は GUI のフレームワークだと、ぼくは理解しています。たとえばブラウザなどの窓やメニューバーなどの描画、データ解析やシミュレーションのプロセスや結果を視覚化するためのフレームワークです。Squeak の UI も Morphic でできているそうです。
その道具をつかったあそび方の、覚えがきです。
*
まず、やりたいことを文章にしたり、スケッチを描いたりします。
つぎに、その文章やスケッチに近い形の既存 morph を探します。探す手段として、今のところ morph の名前リストをつかっています。
World menu > new morph… > from alphabetical list
つまり「World menu」の中の「new morph..」という項目を選び、さらに現れたメニューの「from alphabetical list」を選びます。
これは、Squeak がもっている morph をアルファベット順に並べたリストです。この名前から、それぞれの morph の内容が予想できます。
たとえば「DialogWindow (ダイアログ・ウィンドウ)」や「BasicButton (ボタン)」、そして「CircleMorph (円)」や「ClockMorph (時計)」など。
*
morph 名のならぶメニュー画面で特定の morph を選ぶと、その場で評価 (実行) され、つくられた instance が Smalltalk のデスクトップに現れます。
それらの morph の中でとく気になるものは、その中身 (どんな methods をもっているか、methods のコードなど) をブラウザでしらべます。
たとえば、ClockMorph という morph の中をみる場合、Workspace に以下のようにかくと ClockMorph を選んだ形でブラウザが開きます。
ClockMorph browse
合わせて、その morph の継承構造や message sends の流れも見ておきます。ここがいちばんの鍵になるでしょうか。
ブラウザの真ん中あたりの行にある、hierarchy ボタンを click すると、継承ブラウザが開き、今動かしている instance の class の「親」になる morph、さらにその「親」になる morph などが分かります。
また、method finder もよくつかいます。
World menu > open… > method finder
*
気になる morph がどうやって動くのかある程度イメージができたら、実際にその理解が妥当なのかを試しながら、確かめます。
具体的には inspector をつかいます。動いている instance を inspect すると、その instance がもつ変数の変化や、submorph (注目している morph の「中にある」morph) や owner (注目している morph を「含む」morph) の状態も、具体的に観察できます。
clock := ClockMorph new openInWorld.
clock inspect
Inspector の下側の枠に実際にコードをかき、評価 (実行) してみます。この場合、コードの最初にかく受信者の名前は self になります。
必要に応じてその moph に属する submorph も inspect して、かいたコードがつくる morph のふるまいを観察します。
この段階で当初イメージした形やふるまいを、今いじっている morph やその submorph をつかって実現できるか試します。
やりたいことが実現できそうなときは、inspector にかいたコードをもとに Workspace 用にコードをかき直し、Workspace からその morph を操作できるようにします。
Workspace は、文字どおり Smalltalk の作業場で、スクリプト言語のようにここにコードかきながら実行できる場所であり、自分用のメモも残しておく場所にもなります。
*
既存の morph でやりたいことすべての実現が難しい場合は、新しい class や method をつくります。
主にブラウザをつかいますが、手はじめに Workspace にコードをかいて試すことも少なくありません。やろうとする計算の一部やすべてを試します。
こうした試行錯誤をくりかえしながら、morph の小さな自作 classes と methods を増やしていく。あるいは、既存の morph のしくみを覚えていく。
そうすることで、考える道具として Smalltalk が育つことを期待しているワケです。