HyperCard Simulator
(hcsimulator.com)- HyperCard Simulatorは、クラシックなHyperCardスタックを現代のWebに取り込んで実行して試せるWebベースのシミュレーター
- スタックは順序を持つカードの束のように動作し、カードの追加・削除や、アカウントを通じたオンライン共有も可能
- カードにはボタンとフィールドを配置でき、背景に作成した要素は複数のカードに繰り返し適用しつつ、カードごとのテキストは個別に保持できる
- 編集はカード上で直接行う方式で、鉛筆・ペイントバケツと白黒・透明パターンによる簡単なペイントに対応
- スクリプトなしでも使えるが、message boxとScript EditorでxTalkコマンドや
mouseUpのようなメッセージハンドラーを扱える
Webで動くHyperCardスタック
- HyperCard Simulatorは、クラシックなHyperCardスタックを取り込んでブラウザーで実行できるようにする
- 作者はHyperCardの制作者たちに謝意を述べ、余暇に現代のWebでHyperCardがどのように動作するかを見るために作ったという
- 関連リソースとしてhypercard.org、Merveilles HyperJam、Internet Archiveがリンクされている
- さらに多くのスタックを探す項目として、
More stacks、A Few More Stacks、The "B–Roll"、Collected Stacks、Lots More Stacks、The HyperCard Pantechniconが用意されている
カードと背景を中心とした編集モデル
- HyperCardスタックは順番にめくるカードデッキに似ており、ユーザーはスタックにカードを追加したり削除したりできる
- HyperCardはスタックを自動保存しており、このシミュレーターではアカウントを作成してオンラインで共有できる
- 各カードにはボタンとフィールドを含められる
- 適切なツールを選んだうえで、ドラッグとサイズ変更で編集する
- ボタンとフィールドはカードまたは背景に作成できる
- プロパティはダブルクリックまたは長押しで開ける
- 背景パートは複数のカードに繰り返し適用される
- 各カードは独自のパートとテキストを持てる
- 各カードは1つの背景を持ち、背景はカード群の背後にあるレイヤーである
- 同じ背景を使うカードごとに、背景フィールド内にカード別のテキストを置ける
ペイントとスクリプティング
- ペイントはカード上で直接処理する
- 鉛筆またはペイントバケツを使用できる
- 黒はShift、白はOption、透明はOption+Shiftのパターンとして使う
- スクリプティングは必須ではないが、シミュレーター自体のスクリプトを見ながら学べる
- message boxはxTalkの式とコマンドを評価する
- Script EditorはInformationダイアログから開くか、Command-Option-click、touch-hold、Shiftを押しながらのダブルクリックでアクセスできる
- スクリプトはユーザーが送ったメッセージを受け取り、
beepやgo next cardのような動作を実行できる - サンプルのメッセージハンドラーは、
on mouseUpでbeepを実行して次のカードへ移動し、end mouseUpで終わる
1件のコメント
Hacker Newsのコメント
HyperCardが自分の世代より前のものだったのが少し残念。子どもの頃に知っていたら、ほかのことは何もしなかった気がするし、エミュレーターで触ってみるとかなり面白かった。
人々がプログラミングに簡単に触れられるようにしようとした初期の試みが好き。ずっと弱い形ではあるけれど、最初に使ったときのFlashアニメーションツールにも似た感覚があって、C++でOpenGLやSDLを組み合わせようとするよりはるかにすぐ取っつきやすく、何かを作ること自体が純粋に楽しかった。Flash以降、開発していてそれほど楽しかったツールには出会えておらず、GameMakerもすばらしくて今でも楽しいけれど、Flashほど滑らかでも「何でもできる」という感じでもない。単に自分が年を取っただけかもしれない
Flashは代替が現れるより早く消えてしまい、Flashがなくなったとき、当時のHTML5が未来であり即時の代替だというのなら、私たちは終わっているのだと非常にはっきりしていた。次に何かを作れるツールを探すなら、FlutterはFlashのように単一のコードベースでどこでも動くという約束を受け継いでいるように見える。ほかに期待している技術はWebAssemblyと、ある程度はRust
リンクにマウスを載せるとカーソルが手のアイコンに変わる仕組みは、HyperCardから直接インスピレーションを受けたもの。多くの点で、ブラウザはHyperCardスタックの発展形と見なせる
子どもの頃、HyperCardとSuperPaintは自分にとってのレゴだった。父は計算を走らせるためにMacintoshを必要としていた科学者で、当時、家にコンピューターがあるほとんど唯一の子どものひとりだった。
HyperCardで小さな仕掛けを本当にたくさん作ったし、白黒モニターのアプリや、単色だけでパターンを生み出していた面白いやり方に強い愛着がある
最初のコンピューターだったApple II GSも、「Apple for a Teacher」プログラムで教師が大幅割引で買えた。カラーモニター付きのMacの前身のようなマシンだった。3-2-1 Contact誌の創作ライティングコンテストで好きなゲームを5本賞品としてもらい、その後しばらくそれで遊ぶにはコンピューターが必要だと両親を説得できた
参考までに、右上のウィンドウ最大化ボックスを押すとHyperCard Editorへズームアウトする。
まだ空のデッキから始める方法を探っているところで、腕が確実に鈍っている。この環境でHyperCardベースのWebサイト全体をどこまで作れるのかも気になる
ログインもできる。
https://hcsimulator.com/mmphosis/Stack
HyperCard時代を体験するには若すぎた立場として、その中核的な魅力が何だったのか気になる。技術のアクセシビリティだったのか、それとも単純に実行が本当によくできた製品だったのか?
ウィジェットにコードを視覚的に結び付ける方式だったので、ボタンをクリックしたりテキストフィールドに入力したりすると、このコード片があの動作を生んでいるのだという感覚がはっきりしていた。しかもHyperCard環境はオブジェクト永続性も実装していたため、ファイル処理コードや「状態保存」機能を自分で書く必要がなくて便利だった。もちろん、その意味論のせいでスタックを壊すと原因を見つけて直すのが難しくなることもあったが、全体としては透過的なオブジェクト永続性が大きな長所だったと思う。
そしてMacを持っていれば、文字どおり最初からそこにあった。Appleは一時期これを49.95ドルの単体製品として販売したあと、約10年間、すべての新しいMacにバンドルし始めた。System 6、7、8、9が入ったMacならHyperCardがあり、その時期にはApple IIGSにも含まれていた。制約はあったにもかかわらず、かなり本格的なアプリがHyperCardで実装されていたのも見た記憶がある。
何よりHyperCardは、コンピューターがBASICインタープリタに直接ブートしていた時代のあとに失われていたやり方で、パーソナルコンピューティングを再び個人的なものにしてくれた。そしてそれはとても良いことだった。この説明で足りなければ、この抜粋を見ればよい: http://www.cvxmelody.net/HyperCard%20IIGS%201.1%20-%20The%20...
制限はあったにせよ、GUI作成をPowerPointを使うくらいの複雑さまで下げてくれるRAD要素付きの、よくできたSmalltalk風の言語だった。「賢い」子どもに与えても、ごくわずかな説明だけで少なくともインタラクティブフィクションは作れた。HyperCardスタックの大半は、非線形のPowerPointスライドデッキと見なせるもので、ボタンがgoto文を呼び出して別のカードへジャンプするカード群だった。
90年代に子どもで、家族用Macで動いていたいくつもの小さなゲームやプログラムについてぼんやりした記憶がある。最初のMacはたぶんMac SEだったと思う。今にして思えば、それらはおそらくHyperCardプログラムだった。
黒猫についてのインタラクティブな絵本のようなものが1つあったが名前は忘れてしまった。ただMacintosh Gardenにあるのは知っていて、99% HyperCardだったと思う。父がSorobanというプログラムをくれたのだが、基本的にはそろばんで、簡単な算数の問題を出して、それをそろばんで計算して答えを出すようなものだった気がする。父が自分で書いたのかもしれないが、確信はない。残念ながら今はそろばんの使い方を覚えていない。当時出会った、あまり知られていないHyperCardプログラムには何があったのか気になる。
参考になるかもしれない: Carson GrossはHyperCardに触発された言語である_hyperscript[0]を作っており、この言語はブラウザで解釈される。
同じCarson Grossがhtmx[1]も作った。両者は別プロジェクトだが、一緒にうまくかみ合う。
[0]https://hyperscript.org/
[1]https://htmx.org/
なんと、ここには30年前に自分が作ったスタックが入っている! 残念ながらシミュレーターではちゃんと動かない。
ずっと気になっていた疑問がある。当時 HyperCard がしていたことを、今日そのまま実現する現代のツールは何だろうか? HTML/JavaScript だろうか?
HyperCard の本当の強みは、一般ユーザー、つまりプログラマーではない人たちが、ポインティングとクリック、そして英語に似たスクリプト言語である HyperTalk を通じて、自分のアプリ、HyperCard の用語で言えば「スタック」を作れるようにしたことにあった。
私たちは、ユーザーが自分のアプリを作れるべきだという考えをおおむね捨ててしまったため、HyperCard に相当する人気のある現代的アナロジーはない。それでも作り続けている人たちはいる。たとえば LiveCode は HyperCard から直接着想を得た商用製品で、CardStock は英語に似た言語の代わりに Python を基本スクリプト言語として使うオープンソースの HyperCard クローンだ。
https://livecode.com/
https://github.com/benjie-git/CardStock
HyperCard が登場したとき、それはすべての Mac に同梱されていて無料であり、Mac 上にはそれに近いものが存在しなかった。代替手段は、GUI ビルダーなしでコードで UI ウィジェットを配置するか、後には CodeWarrior のようなプロ向け IDE に大金を払うことだった。予算のない入門ユーザーが Mac 用 GUI ビルダーを望むなら HyperCard を使うしかなく、そうでなければ何も使えなかった。この構図が HyperCard 愛好家コミュニティを生んだ。
また当時の Mac は標準画面解像度を持っていた。販売されるすべての Mac の解像度が 512x342 ピクセルだったので、どの Mac でもカードがどう見えるかを確実に把握できた。リサイズ可能な GUI のサポートは、どんな GUI ビルダーでも最も難しい課題のひとつだ。画面がスマートフォンのように極端に小さくなったり、16:9 モニターのように非常に横長になったりしたとき、ボタンをどう配置するかといった問題があるからだ。今日の Xcode は、開発者が GUI でリサイズ可能な UI を作れるように高度な制約ソルバー/定理証明器を使っており、かなりうまく動作していると思うが、「ボタンを画面にドラッグして置けば、どこでもそのまま正確に見える」というほど学びやすくはありえない。
現代の HyperCard 志向ツールにとって本当に致命的な最後の理由は、Web GUI ビルダーから生の HTML/CSS へ移るまでの距離が短いことだ。プロ級の HTML、CSS、JavaScript にアクセスするために大金を払う必要はない。学ぶのが簡単とは言えないが、子どもにインタラクティブな Web ページの作り方を教えること自体は問題ない。
そのため、単純な GUI ビルダーへの需要は HyperCard 時代より低く、ユーザーを引き留めてもすぐに製品を卒業してしまう傾向があり、競合も非常に多いため、どのツールも実際に勢いのあるコミュニティを作るのが難しい。
HTML だけに限っても、作る楽しさは HyperCard に遠く及ばない。
基本的には HyperCard に少し似て見える。低解像度風だが、内部的には色もある。
HyperCard は、パーソナルコンピューターの利用者が、コンピューターを使うとはどういうことかをまだ学んでいた時代に現れた。まさにその瞬間こそが、エンドユーザープログラミングと HyperCard のような改変可能なシステムが主導できる時代だった。OpenDoc についてもある程度同じことが言えるが、少し違う。
企業の視点から見ると、HyperCard はいったい何だったのだろうか? コンピューター利用者が自分の基本アプリをそのまま作れるようにする方法だろうか? では、どうやって継続的に収益を上げるのか? コンピューターの開発者コミュニティはどうなるのか? こうした商業的懸念のために、今日ユーザーがパーソナルコンピューティングに関わる方法や、私たちがコンピューティング環境を操作するツールは、どれも消費モデルによって強く規定されており、ユーザーとプログラマーの間には強い分断が存在する。
今日、本当の意味での HyperCard の対応物が存在しないのは、パーソナルコンピューティングが別の方向へ進んだからだ。
これは Decker と比べるとどうだろう?
https://beyondloom.com/decker/index.html
Decker は HyperCard とある面では似ているオープンソースのスタンドアロンアプリだが、APL に由来する独自のスクリプト言語を使うなど、細部ではかなり異なる。Decker は HyperCard スタックとの互換性を持つようには設計されていない。