eToys でも id:squeaker さんの Kedama(毛玉)を使って書いてみました。Kedama は、端的には、複数のタートルを同時に使って描くタートルグラフィックス・システムです。
- Kedama: A massively-parallel tile-scriptable particle system
- 誰もが気になる名前の由来:http://d.hatena.ne.jp/squeaker/20040407#p1
本家 StarLogo の Smalltalk 版である StarSqueak を受けて作られたものですが、タートルの挙動の記述に、ドラッグ&ドロップで誰でも(大嘘)簡単に(大嘘。うわなにをするあwせdrftygふいjこpl;「)プログラミングができる eToys が使えるところが大きな特徴です。
eToys、それ自体に輪をかけて、見た目からして、かなりとっつきにくいシステムなので(失敬!)、正直、私も、用意されているごく基本の機能しか必要でないにもかかわらず、初っ端でくじけそうになったりしましたが、Yamamoto さんのチュートリアルがとてもわかりやすくて救われました。操作だけでなく、プログラム面でも、タートル複製時に生じる障害を回避する手段などについて、おおいに参考にさせていただきました。ありがとうございます。
あと今回は、すぐ Smalltalk 使いたくなるのを、そうとう我慢して“ピュア eToys”しばりにもチャレンジしてみました(^_^;)。ので、結果の抽出がどんくさいですが、どうかお許しあれ、かし。
念のため「eToys」とは、Squeak システムに組み込まれた Smalltalk とは別の処理系で、もちろん Smalltalk で記述されていて、その特性(たとえば徹底した動的性)を大いに活用した特徴(コードを走らせながらソースを変更でき、編集の結果は直ちに動作に反映される、とか)を有してはいますが、文法や言語仕様は Smalltalk とは大きく異なっています(目立つところでは、変数が強い型付きである、とか)。
eToys がそのものズバリ…だったいうわけではありませんが(個人的にはむしろ、いくつかの選択肢の中のひとつに過ぎない eToys で、なし崩し的にプロジェクトが進んでしまっている、といった印象を強く受けていますが、まあ、それはいいとして)、このような非プログラマで向けのの言語処理系を構築するのが、Squeak システムのもともとの目的だったりもします。先だっての まつもとさんとの会食での“死んだ言語”同様、おもしろおかしく語られがちな、アラン・ケイの「Squeak(や Smalltalk)は道具に過ぎない」といったたぐいの発言はこうした文脈も含んでいるはずです。
閑話休題。
実行結果(タートルが描きあげた篩)とコード(メインのループ)はこんな感じです。
プロジェクトファイル(eToys プログラム本体)はこちらに置かせていただいております。
- squeakland.jp(SuperSwiki2 サーバー)
- abee Swiki - プロジェクト置き場
Squeak ブラウザプラグイン版(http://squeakland.jp/)がインストール済みなら、たいていの場合、リンクのクリックで起動し WWW ブラウザ内で動かすことができるはずです。ダメでしたら、アプリケーションで開く...か、最悪、Squeak を起動してデスクトップへドロップインで起動できます。お試しください。
Squeak なんかインストールして、環境を汚したくない!(^_^;)…人むけに、念のため、QuickTime ムービーも用意しておきました。
なにせ、Kedama に触れるのは初めてなので、もうちょっと賢い方法があるかもしれません。どうぞ、あしからず。たとえば、毛玉ワールドにはタートルを敷き詰めることもできるので、動かして描かせるのではなく、個々のタートルをビット代わりに、一気に判断させて一発で…ということも、もしかしたら可能かもしれません。
関連: