HyperCardを懐かしみます。SafariかGoogleChromeでご覧になることを推奨します。
復刻スタックのサイトはこちらです。新作スタックのサイトはこちらです。
スピンオフブログ「HyqerCardって何?」はこちらです。

【雑感】HyperCardとオブジェクト指向

 本記事は2017/10/11に勢い余って投稿したものの、読み返してみてSmalltalkのことをなにも知らないのに書く内容ではないなと思って、数時間で取り下げたものです。数人の方しか目にしていなかったと思います。先日、はてなアクセス解析をみていたら、Twitterがアクセス元の本記事へのアクセス記録がいくつかありました。投稿当時ご覧になったどなたかが本記事をツイートして下さったようです。タイトルにひかれてアクセスしたのに記事がなくなっていて申し訳なかったなと思い、再掲することとしました。修正したいと思う点もあるのですが、あえて投稿当時のままにします。内容については誤認が多々あろうかと思いますが、ご批判、ご指摘、ご意見などコメントに頂けたら幸いです。2018/1/2

 

----------------------------------------------------

知っている方には「何をいまさら」という内容です。

 

 某所で否定的に、HyperCardオブジェクト指向なのか、とか、HyperTalkのどこにOO(Object-Oriented)の要素があるのかという趣旨の文章を読みました。

 

 その昔、HyperCardオブジェクト指向だと聞いていたのに、Javaに触れた時に全くHyperTalkでの経験が活きなかったことを覚えていて、ある時までHyperCardはオブジェク指向ではない、少なくとも私が学んだオブジェクト指向の概念には嵌らないと考えていた時期がありました。


 しかし、私だってそれから少しは大人になったので、今は考えを改めました。

 

 以下はWikipediaからの引用(2017/10/11時点)です。

アラン・ケイが「オブジェクト指向」という言葉を創った当初は、Smalltalk システムが体現した「パーソナルコンピューティングに関わる全てを『オブジェクト』とそれらの間で交わされる『メッセージ送信』によって表現すること」を意味していた。しかしのちに、C++ の設計者として知られるビャーネ・ストロヴストルップが(自身、Smalltalk の影響は受けていないと主張する)C++ の設計を通じて整理し発表した「『継承』機構と『多態性』を付加した『抽象データ型』のスーパーセット」という考え方として広く認知されるようになった(カプセル化、継承、多態性)。現在は、両者の渾然一体化した曖昧な概念として語られることが多い。

 

 上記の「パーソナルコンピューティング」を「HyperCard」に置き換えたら、HyperCardはまさにアラン・ケイのいうオブジェクト指向の定義にぴったりなのです。

 

 この数年、偽HyperCardを作るにあたって、HyperCardの仕様を調べたり、挙動の確認をだいぶ行いましたが、HyperCardは徹底的にメッセージ送信で制御されるソフトウェアであるということを実感しています。


例えば、おなじみの
on mouseUp
 play boing
end mouseUp
ですが、


on mouseUp
end mouseUp
は、ご存知のとおり、HyperCardによってボタンやフィールドやカードに送信された"mouseUp"メッセージを受け取るハンドラを定義するところ。

 

play boing
は、一見ここでPlayコマンドを実行するように見えますが、実際には"play"メッセージを"boing"という引数とともにHyperCardに送っていて、"play"メッセージを受信したHyperCardがplayコマンドを実行するのです。
※偽HyperCardは設計時にこの仕様を理解していなかったのでそういう挙動をしません。

 

 メニューを選択すれば"domenu"メッセージ、スタックを閉じれば"closeStack"メッセージ、何もしなくても"idle"メッセージがカードに送られ、とにかく、ひたすらメッセージ送信です。

 

 メッセージは以下の順で送られます。
[ボタン/フィールド]-[カード]-[バックグラウンド]-[スタック]-[Homeスタック]-[HyperCard]

これらは、まさしくオブジェクトであり、加えてメニューやウインドウもオブジェクトといってよいでしょう。

 

 この順番のことをHyperCard付属のHyperTalk Referenceスタックでは「the message-passing order」と呼んでいるのですが、市販の書籍などではこのようにメッセージが送られることを「継承」とよぶことがあり、上記C++の説明にある「継承」との混乱が今現在でもあるように思います。


Smalltalkは1972年に開発が開始、1980年に公開

C++が1983年に登場

Macintosh1984年に発売

HyperCardは1987年に登場


 HyperCardの開発期間も考えたら、HyperCardSmalltalkオブジェクト指向に影響受けたのは当然のように思います。ビルアトキンソンら初期のApple開発陣がXerox社でSmalltalk環境を見学していることや1984年にアラン・ケイがアップル・フェローとなったことも理由にあげられるかもしれません。

 


 私見ではHyperCardアラン・ケイゆずりの素性の良いオブジェクト指向環境であると考えています。

HyperCardスタック「Drug Store(English)」(1993年)紹介

f:id:Play_Boing:20170923195440p:plain

作品名:Drug Store(English)
製作者:Thoru Yamamoto氏
制作年:1993年
出 所:いまはダウンロードできません
認定番号:第1993-0003号

 

最後の作品紹介です。

 

Thoru Yamamoto氏のDrugStoreです。商品はたくさんあるのですが、そのうち、「boxman」「crystalplayer」「robot1」「magic」「pala1」「animman」を紹介。
それ以外の商品はクリックすると音がなりますが、なにもおこりません。ただし、それらも買う(BUY)ことはできてしまいます。商品以外でもクリックすると何か起こるかもしれません。

 

下の写真は自作のペーパークラフト。トップ絵にもあるboxmanです。去年、作ったものですが、普通のOA用紙なのでペラペラです。

 

f:id:Play_Boing:20170923195533p:plain

 

さて再現紹介ですが、9インチのディスプレイで画面いっぱいにカードを表示していた頃の感じをだすために、フレームのサイズをいつもより小さくしました。ファイルサイズが大きいため、デスクトップ表示まで時間がかかるかもしれません。

 

372カード中、カード1〜4,7〜14,32,74〜90,131〜144,195,300〜317,340〜372を引用します。鑑賞時間は数分から数十分程度。サイズを約6割に縮小しています。オリジナルは横512ピクセル、縦342ピクセルです。公開期間は一ヶ月程度。

MacWindowsをご利用の方へ、
デスクトップが狭いのでメニューや各種編集ウィンドウが表示しきれません。広いデスクトップを使いたい方はこちらをどうぞ。

 

公開終了。2017/10/30 

 

今年三月に始めたHyperCardを懐かしむブログですが、これにておしまいです。ご覧になってくださった方にはお礼を申し上げます。ありがとうございました。