言語ゲーム

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

Twitter: @propella

HyperCard など

どうやらこの世界には相当 HyperCard の呪縛のような物があるらしいので、空いた時間に再び試してみる事にした。自宅の Mac では新しいスタックの作成が出来なくてすぐ辞めてしまったのだが、事務所の Mac は OS が最新だからか(?)ちゃんと使える。

参考にしているのはこのあたり。山本さんの作品を元にスクリプトの書き方を解説している。

全く簡潔で素晴らしい。今学んだ範囲では、凝ったハイパーテキストツールだなという感想。興味深いのが、push card / pop card といった構文だ。これは現在の位置を覚えておいて別のカードにジャンプし、また戻ってくるという風に使う。

出来る事自体は HTML やパワーポイントと同じなのだが、何か世界観のような物を感じてしまうのが不思議なところ。この簡潔さを維持しつつ、どういう進化が可能だったのだろうか? 僕が学んだのはほんの絵本ツールとしてのハイパーカードだけだが、その範囲でありえた進化について考えてみる。

連想するのはやはり HTML のような物だ。簡単にリンクが作れて、ジャンプできる。ここではある文書の部品がツリー状をしていて、外部の部品、文書や画像にリンクが貼れるという事が基本だろう。最近の HTML には相当な表現力があって、それぞれの部品は Javascript で動作させる事が出来るが、例えば複数の文書で共有しているバックグラウンド画像にメッセージを送るといった事が素直に出来ない。

整理すると、HTML にはツリー状の構造(一つの文書内)と、ネットワーク状の構造(文書同士のリンク)の組み合わせで出来ていて、ネットワーク状の部分のスクリプトの仕組みを強化すれば、例えばイベントをバック画像に送って共通の効果を作る事が出来るんじゃないかな? 素人考えだけど。あとHyperCard のすごい割り切りは、ツリーどころかネットワークどころか、情報をすべて一列に並べたという事がある。今から綺麗に作るとしたら、一応内部的にはツリー状に作ってそのサブセットとしてバック画面やカードやボタンの階層を作るべきなのだろう。

もう一つ HyperCard の興味深い点としては、画像ツールにかなり重点を置いているという点。Flash のやつも良く出来ているが、この手のツールにとって画像ツールは看板のような物だ。そこで、前から画像ツールに対するスクリプティングの入り込む余地という事を考えている。ようするに、キャラクタを右から左へ動かすのと同じようにペイントツールを制御したいのだ。

例えばペンの太さを選んでピクセルを描画するという行為は、まずペンの形を作ってその形を画像をコピーするという事だ。その際に周りをぼかせばブラシのような効果になるし、コピーする時の演算によって絵の具のにじみやなんかが表現出来る。僕はよく輪郭と中の塗りつぶしがズレたようなイラストを描くのだが、etoys で書くときは塗りつぶしを先に書かなくてはいけない。これを暗さ優先にすればロウケツ染めのように塗りつぶしても輪郭が浮かび上がるように出来るだろう。画像ツールの特性はその描画アルゴリズムにあるわけで、そこは是非スクリプト可能であってほしい。また、ペン描画に使ったアルゴリズムをビデオ画面全体に使う事によって、ビデオエフェクトのツールとしても使う事が出来るだろう。

全体的に、この部分は描画ツールの emacs のような物があればと夢想しているのだ。まあ、ただの夢想に過ぎないわけですが。