共立出版刊「Common Lisp オブジェクトシステム」の共通例題 Grapher の Smalltalk-80 版を Squeak 1.3 で

Ruby の「特異メソッド」命名の元ネタとも言われる共立出版刊「Common Lisp オブジェクトシステム」にあった各種 OOPL での共通例題の Smalltalk-80 版を Squeak Smalltalk のごく初期のバージョン(1.31)で動かしてみました。


http://squab.no-ip.com/collab/uploads/CLOS-Grapher.png http://squab.no-ip.com/collab/uploads/CLOS-Grapher-ori.png


だいぶ改変しないといけないのかな…とおそるおそる試しててみたところ、GrapherView >> #display を #displayView に変更するなどちょこっと変えるだけで案外あっさり動きました。あと、GrapherController >> #isControlActive は必要ないようだったので削ったり、通常のクリックでもメニューが出るように GrapherController >> #redButtonActivity を追加したりしてあります。


Squeak1.3 は ftp.squeak.org のアーカイブから入手してものを使用しました(Windows 版)。展開して、Squeak1.31.image を Squeak.exe にドロップインすると起動できます。手元の環境では、あらかじめ Squeak.exe のプロパティ→ 互換性で XP 互換にして動かすと安定するように見えました。


CLOS-Grapher.st を Squeak1.31 フォルダに移動してから Squeak 環境内で デスクトップクリック → open... → open file list でファイラを起動し、CLOS-Grapher.st を右クリック → fileIn で環境に読み込めます。Grapher 自体の起動は、下のペイン(選択ファイルの内容)をスクロールするなどして GrapherView open を見つけて選択し(あるいはどこかにタイプして入力してから改めて選択し)、右クリック → do it (d) で起動します。

ウインドウ内をクリックするとメニューが現われるので、add node もしくは複数のノードがある状態で add arc し、十字のマウスポインタで設置したいウインドウ内の位置をクリックする(前者)とノードを、つなぎたい2つのノードを順次クリックして選択する(後者)とアークを追加できます。


ちなみに、ここで用いた Squeak1.31 を使うと、第30回Smalltalk勉強会「もういちどMVC」 で使われた副読本 青木淳さんの「使わないと損をするModel-View-Controller」 のコードを移植した Mickey1(コントローラーが頑張る MVC )、Mickey2(依存性を利用する MVC )、Mickey3(プラガブルを利用する MVC )を動かしてみることも可能です。ぜひ、おためしあれかし。


Common Lisp オブジェクトシステム

Common Lisp オブジェクトシステム