言語ゲーム

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

Twitter: @propella

現代の HyperCard - Runtime Revolution

ちょっと前に Alan が紹介していた Runtime Revolution (runrev) http://www.runrev.com/ を試してみた。Alan は割とけちょんけちょんに言っていたのだが、面白いアイデアもあった。僕が着目している部分は、etoys 用語で言うところのコピー(無関係だがそっくりの複数オブジェクト)と兄弟(関係のあるそっくりな複数オブジェクト)をどのように表現するかという事。runrev では Group という独自の機能を使っている。

Group とは、オブジェクトのグループ化と兄弟化(インスタンス化/シンボル化) の双方の概念をあわせた物だ。オブジェクトをグループするのは再利用の為だという割り切りは面白い。例えばユーザが「進む」「戻る」ボタンを全カードにつけたい場合、Group化した二つのボタンを各ページに Place Group する。ボタンは自動的にオリジナルと同じ位置に配置され、移動すれば全てのボタンが同じように移動する。HyperCard と比べると、バックグラウンドモードに移行しなくてもボタンの位置を変える事が出来るし、何種類もの Group を使い分ける事が出来る。Place Group と違って、Paste で Group を貼り付けた場合は各カード異なる位置に置く事が出来るが、コピーなので「同じ」であるという情報は失われる。

HyperCard と同じく、各カードのテキストフィールドは別の内容にする事が出来るし、ラベルの内容は共有される。このような環境では、どのように操作を単純化しどのように機能を柔軟にするかのバランスが大変だが、renrev はそれなりに上手く纏まっているように見える。ただ残念な事に、windowsGUI 作法と微妙に違う部分があって、操作し辛かった。

  • Group でオブジェクトを纏める事が出来る。
  • Group は Edit Group でさらに追加/削除できる。
    • Place Group でグループを他のカードに置く事が出来る。
    • Place Group グループのインスタンスが置かれる。
  • Paste グループのコピーが置かれる。
  • 他のカードに置いたグループは、HyperCard のバックグラウンドオブジェクトのように振舞う。
  • カードを他のスタックに Place Group で置く事は出来ない。