HyperCardって凄いソフトがあったんですよ

HyperCard - Wikipedia
Thousandの話じゃないので興味が無い人は回れ右。昨日ついったーに置いて思い出話でクダを巻いてたら長くなりすぎたのでこっちにまとめておきます。ついったーでこの発言からこの発言までってリンクは貼れないものかな。

しかしMacはどんどん速くなって、iPhoneなどという楽しいデバイスもあるというのにHyperCardの代わりはないなあ
もういっそAppleKeynoteiPhoneアプリ作れるようにすればいいよ。ASでもJSでもいいからオブジェクトの中にスクリプト書けるようにして。

.@nambonさんのRTで物凄い広がったので調子に乗っていくつか書きます。私見によるHyperCardの凄いところ。

  • その1。単純化されたオブジェクト指向。メッセージ送信やレスポンダ・チェインはあるけどクラスやインスタンスや継承やなんかがない。
  • その2。GUI=プログラム。ボタンを押したとき動くスクリプトは、そのボタンに書く。
  • その3。プログラム=書類。HyperCardの書類(スタック)上で動かしたもの編集したものは全て自動保存。スクリプトによる変更もユーザーによる変更も。
  • その4。画面=スケッチブック。表示させたいグラフィックは内蔵ペイント機能で直接カードに描けばいい。画面を切り替えたいなら、カードを移動すればいい。
  • その5。無料。…後にはPlayerのみ無料とかになっちゃったけど

HyperCardの一部に似たものは、例えばFlashやHTMLやCocoaKeynoteやBentoだったりするのだけれど、HyperCardは何かと言われれば「その全てである(あった)」
例えばFlashCocoaでも絵日記ソフトを作ろうと思えば作れるが、グラフィックやテキストの保存形式や場所はどうしてもソフトの外の「書類」になる。そしてGUIを作り、コードを書き、動作させるという操作は全て別になる。
ところがHyperCardで作ったソフトは絵日記そのものになれる。データはそれ自身が保管する。コードはGUIの中に書かれている。それがソフトと書類の区別無いまま、作っているときには既に動作している。
そして付け加えるなら、スクリプト言語であるHyperTalkも型を意識せず、普通の英語の文法に近い習得の容易なものであった。

HyperCardはしかし、簡単であることができたのは当時の白黒のグラフィック環境によるとことが大きいと思う。ペイント機能は単純で、GUIも種類が少なく、書類の容量も自動保存に耐えうるくらい小さく出来たから。
ので、その後現れたカラーの後継者たちはそこまで簡単であることが出来なかったのではないか、と思う。ていうかこんだけ長いならBlogに書けば良かったw

プログラミングに縁のない個人や、プロトタイピングには今でも有用だと思うね。PowerPointでプレゼン作るより簡単にソフト作れるレベル。こればっかりは触った経験が無いと実感は出来ないと思う。今じゃこれに似たソフトというのは存在しないと言ってもいいから
当時を知る俺が思うのは、「何故PCやネットの速度や容量は進歩するのに、プログラミングの簡単さ、というものはあの頃からむしろ後退しているんだろう?」ってことなんだ。
プログラミングなんてほとんどの人には不要だけど、そんな人でも何かを作りたい気分にさせたり、割と簡単に出来てしまったりするソフト、そういうものは今も必要なのではないか、と個人的には思うのさ。今時の言語オブジェクト指向とか説明するのダルいでしょw

…ほぼそのまま転載なんでまとまりがないですけれど。多分他の人に聞いたらHyperCardの凄いところなんてまだまだ一杯あるよ!って言うんじゃないかな。私の趣味によりプログラミング寄りの話になっていますが、HyperCardの用途というのはそもそもとんでもなく広いものでした。もう知らない人が多いでしょうから追加してつらつら書いてみます。

  • まず何もない書類(スタック)を開くだけで、スケッチブックのように複数のページ(カード)に直接絵を描いたりテキストを配置したりできました。当然、紙芝居や今で言うプレゼンのようなことに使えるわけです。
  • バックグラウンド、というカードのテンプレートのようなものを使うことで、一定の形式のカードを量産することが出来ました。テキスト入力枠(フィールド)をバックグラウンドに配置すれば、中身のテキストはカードごとに違うものを保存することが出来ます。これによって住所録や簡単なデータベース的にも使えます。
  • さらにボタン、というものを配置すると、ユーザーがクリックしたときに何らかのスクリプトを実行できます。スクリプトはボタンそのものに内蔵するので、ここを押したらこの処理を実行する、という繋がりが非常に分かりやすいものになっています。ボタンは透明化してある範囲のクリックを検知するのに使ったり、アイコンを表示して動かすことでアニメーションに使えます。先の紙芝居はこれによってアドベンチャーゲームになり、住所録は入力を簡略化したり、年賀状印刷をしたりといった機能も持つことが出来ます。
  • スクリプトはボタン以外にカードやバックグラウンドに書くことで、共通の機能をメソッドとすることが出来ます。このメソッドを呼び出すメッセージを送信するとき、ボタンはその送信先を指定しません。ただ呼び出すだけで、まずボタン自身、ボタンの属するカード、カードの属するバックグラウンド、のように送信先が探されます。レスポンダ・チェインを前提にすることで、ある機能を持つメソッドをどこに書けばいいか、オブジェクトの参照をどのオブジェクトが持っていればいいか、などを意識せずに、簡潔にGUIプログラミングが出来るわけです。スクリプトを活用することでスタックは何にでもなります。RPGにすらなります。っていうか私が作ってました。

っていう具合で、HyperCardって何のソフトなのって言うと紙芝居から日記帳から住所録はがき印刷、グラフ描画にタイマー、アドベンチャーにシューティングにアクションにRPGとかRPG作成ソフトを作れる*1えーと、お絵描きソフトでありカード型データベースでありプレゼンソフトでありオーサリングツールであり入門プログラミング言語であったりするなんでも屋だったんですよ。これがWebブラウザPowerPoint以前から存在したんですよ?*2いや以前だから存在したとも言えますが。
しかもこれがとても直感的に、素早く簡単に扱える。画面に表示されているものはすなわち、その書類のデータでもあり、GUIでもあり、プログラムでもあるわけです。ビルドなんて必要ないです。スクリプトをボタンに書けばそれが即座に動くわけですし、データをフィールドに入れればそれは保存のコードを書くまでもなく自動で保存されているんですから。グラフ描画とタイマーは私が大学時代、学生実習の実験中に即席で作って動かしてました(その実験専用のグラフやタイマーですよ)。ていうか実験内容の説明を受けながら実験が始まる前にはもう出来てました。Xcodeでこれが出来るか、ていうとまあバリバリのプログラマーなら出来るでしょ?でもHyperCardなら私でも出来るわけですよ。
唐突にiPhone(時代)にHyperCard(のようなもの)があったら、って妄想してみますとね、まずiPhoneシミュレータやiPhoneそのものでアプリを作るわけです。画面にボタンやなんかをドラッグアンドドロップで配置して、ボタンを押したときのコードはボタンを裏っ返してそこに書く。UINavigationControllerで表示する次の階層を作りたかったら新しいカードを作って、そこにまたボタンを置いてフィールドを置いて…な感じです。これが保存+ビルドとかなしにそのまま動作して、しかもフィールドに入れておいたテキストは何も操作しなくてもアプリを終了+起動したらそのまんま甦るわけです。ていうか思った以上に相性よくね?もう書いててすっごい欲しい*3主に俺が。ビル写真撮ってる場合か!
今はWebブラウザPowerPointXcodeやなんかがあります。MacWindowsiPhone自体も何かしら引き継いでる要素はあると思いますね。しかしHyperCardはもうない*4。とても残念。私はプログラミングは永遠に初心者のままだし、HyperCardだって誕生のときから見ていたわけじゃなくむしろ遅れて知った世代だから偉そうなこと言える立場じゃないんですけど、凄いソフトだったんですよ。眠気と情熱に任せて書いてたらついったー以上にまとまりが無くなりました。

*1:っていうかこれ自分が作ったものですね

*2:私が使いだしたのは多分その後だけど…

*3:インタプリタNGだから駄目なんだよねジョブズ。分かってるって

*4:いや物理的にはあるけど白黒だし、Classic Mac OSでしか動かない。Elefatは頑張った。