SSブログ

HyperCard(月刊ASCII 1987年11月号12) [月刊アスキー廃棄(スクラップ)]

HyperCardという別次元のソフトをMacなら使えると、やっぱ98とは違うと35年前思った。しかし、そのソフトは今や無い。一体どういうわけだ。このころのものは、ハードウェアだけではなくソフトウエアも無くなっていった。死屍累々という感じだ。
ASCII1987(11)d01HyperCard_W520.jpg
記事のあおり部分をスクラップする。
 米国Apple社は,Macintosh(以下,Macと記述)ファミリー用の次世代環境ソフトとして,「HyperCard」を発表した.9月以降に出荷されるMacファミリーには標準で添付され,現行ユーザーは49ドルで購入できる.アップル・ジャパンは,漢字Talk上で動作する日本語バージョンを,来年1月に発表する予定だ.
 標準添付ということからも分かるように,HyperCardは,ビジュアル・シェルであるFinderの上位に位置する“準OS+開発環境+動作環境”としてとらえることができる.同社のScully会長が,「今後5年以上にわたって,わが社の基幹となる戦略ソフト」と表現したHyperCardは、単なるカード型データベースではない。テキストやグラフィックス,音声,動画など、すべてのデータを,あたかも同一フォーマットのファイルとして扱えるようなメタファイルの概念を最大限に追究した,まったく新しいタイプのソフトだ.Macが4年間にわたって蓄積してきた膨大な資産であるメタファイルを,すべて利用しようという壮大な計画の第一歩が始まったのである.
 HyperCardは,これまでのパーソナルコンピュータ用ソフトには見られない,いくつかの革新的な環境をユーザーに提供する.最も大きな特徴は,Smalltalkのような徹底したオブジェクト指向の環境を基本にしている点だ.
 本誌では,リリース前のHyperCard(Ver1.0b8)を入手したので,今月と来月の2回にわたって,その全貌をレポートする。
35年前Macには凄いソフトが付いているということだけは分かったが、PC-9801シリーズを使っているようなユーザーには無縁だと思っていた。そうだ、この当時私は不本意ながら皆と環境を共有するために8086系CPUに転んだのだった。それもPC-9801VX2という最新機種としては僅か8か月しかもたなかった外れマシンを買ったことが悔やまれて呪いながら98を使っていた。買ったときはまだDisk Basicでプログラムを作っている人たちもいたがOSを使わないで何が楽しいのだろうかとMS-DOSの下Turbo Pascalでプログラミングしながら思っていた。高価なマシンを複数買えるだけの金が欲しかった。
What's HyperCard?ソフトの概観
 HyperCard(図1を参照)は、容量800Kbytesの3.5インチFDD3枚(約2.3Mbytes)で構成される非常に大規模なソフトだ内訳は, (1) 約370Kbytesの本体,中核を形成するのはオブジェクト指向のインタープリタ型言語「HyperTalk」と,MacPaint型描画ツール, (2) HyperCard上で動作する「Stack」と呼ばれる基本アプリケーション群(約370Kbytes), (3) Stackで使うデータを集めた「Ideas」(約850Kbytes), (4) Stack形式のヘルプファイル(約810Kbytes)――などである.
 動作環境は,MacPlus以上のファミリーマシンと,3.5インチFDD2台の構成が基本になる.しかしApple社では、理想的な構成として,これに2Mbytes以上のメインメモリと,20MbytesHDD,マルチタスクOS「MultiFinder」の追加を勧めている.
 Stack形式になったイントロダクションを見ると,HyperCardは,プログラミング言語であると同時に,Finderに代わるビジュアル・シェルとして位置付けられていることが分かる。つまり,HyperCardを使ってアプリケーションを作ったり,他のソフトをラウンチできる機能があるわけだ(図2を参照).HyperCardで作られたアプリケーションは,必ずしもカード型のデータベースとは限らない、既存のほとんどのアプリケーションが,HyperCard上で実現できる.もちろん,アプリケーションはHyperCardの本体上で動作する.

ASCII1987(11)d02HyperCard_図1_W390.jpg
ASCII1987(11)d02HyperCard_図2_W509.jpg
開発者は天才Bill Atkinson

 HyperCardの開発者は,4年前に発表されるや一大センセーショナルを巻き起こし,お絵描きソフトのスタンダードとまで言われた「MacPaint」の作者,Bill Atkinsonである.
 彼は,Macのスクリーンに表示される物すべてにかかわっている描画ルーチン「QuickDraw」の作者としても有名だ.Macの発表以来,彼の動向は深い霧に包まれていたのだが,3年という歳月をかけてHyperCardをコツコツと開発していたのだ。
 HyperCardの開発には,他にも多くの人間がかかわっている.例えば,プログラミング言語「HyperTalk」はDanWinkler,基本デザインは「Switcher」や「Survant」の作者として名高いAndy Hertzfeldが,それぞれ担当している.
米国のソフトにはこうした作者の名前が出てくる。しかも、「天才」とか言われる人たちだ。35年前リアルタイムで天才たちの登場を知ったのが楽しかった。
HyperCardの仕組み

1.HyperCardの基本はカード
 HyperCardの基本になるのは,その名が示すように1枚のカードだ。このカードが何枚か集まって、1つのStackを形成する.そして,情報はStackという単位でディスクに記録される.言い換えれば,HyperCardが直接的に扱えるファイルは,Stackだけということになる(図3を参照).
 Stackに格納されるカードは、同じような外観を持っている。つまり,同一のフォーマットで記録されたカードをまとめて、1つのStackが生まれることになる(図4を参照).そして,Stackに格納されたカードの間で,フォーマットなどの情報が共有される.
 1枚のカードには,グラフィックスとテキスト(音声や動画も可能)を混在させることができる(図5を参照).カードのサイズは,Macの画面と同一で(MacIIでは画面中央に同一サイズで表示される),グラフィックスは,カードの範囲内であれば、どこにでも描くことができる.ペイントツールは、プルダウンメニュー中に用意されている(図6を参照).
 グラフィックスとして文字を描くことも可能だが,テキストは,基本的には別扱いになっている.カードに文字を書くためには,あらかじめ「Field」と呼ばれる枠を設定しておく.このFieldの大きさや文字のサイズ,フォントは自由に選ぶことができる(図7を参照).また,Fieldは,スクロールバーを設定できる機能も持っている.このため、1枚のカードに表示しきれないテキストも,スクロールさせて見られる.つまり,テキストの情報量は,Fieldの範囲に限定されないのである。

ASCII1987(11)d02HyperCard_図3_W425.jpg
ASCII1987(11)d03HyperCard_図4_W512.jpg
ASCII1987(11)d03HyperCard_図5_W514.jpg
ASCII1987(11)d03HyperCard_図6_W520.jpg
ASCII1987(11)d03HyperCard_図7_W520.jpg
2.ButtonがHeyperCardのカギ
 カード上にはもう1つ、重要なパーツである「Button」(図8を参照)がある.Buttonによって,HyperCardは,単なるカード型データベースでは考えられない,様々な機能を実現する.
 Buttonは,カード上のあらゆる場所にいくつでも置くことができる.その形状やサイズ,他のパーツとの重なり方なども,ペイントツールを使って自由に設定できる(図9を参照).
 Buttonをマウスでクリックすると,そのButtonに定義されている機能が直ちに起動される.機能の定義は,後述の「HyperTalk」と呼ばれる言語によって記述される.この言語を使えば,ユーザ-が,ペイントツールを使って描いたButtonに,新たな機能を定義することも可能だ。
 Buttonは,あらかじめ「ButtonIdeas」として,各種の機能が,各種のサイズでHyperCardに登録されている.Buttonに定義されている機能の中で,最も頻繁に使用されるのは,表示中のカードから,別のカードに移動するという機能だ.移動先のカードは、元のカードと同じStack中にあっても、別のStack中にあってもよい。つまり,異なるファイルのデータ間でリンクが取れるわけだ(図10を参照).リンクは,HyperCardが扱うすべてのカード間で実行できる.これによって,HyperCardのデータは階層的、組織的に管理される.

ASCII1987(11)d03HyperCard_図8_W515.jpg
ASCII1987(11)d03HyperCard_図9_W516.jpg
ASCII1987(11)d04HyperCard_図10_W520.jpg
3.添付されているカードとStack
 既存のカード型データベースとの違いを明確にする意味で,添付されているカードやStackを見てみよう.
 HyperCardを起動すると,「Home Card」と呼ばれる特殊なStackがオープンされる(図11を参照).Home Cardは,HyperCardのFinderに当たるビジュアル・シェルである.カード上に並んでいるアイコンが,前述の「Button」である.これらのButtonには,対応するStackを呼び出す機能が定義されている.Stackは,このButtonをクリックするだけで呼び出せる.また,ここに登録されていないStackも,Fileメニューの「Open Stack...」によって呼び出せる.もちろん,カード上に新たなButtonを登録して,それに任意のスタックを呼び出すような定義を加えることも可能になっている.
 Home Cardの中から,「Calendar」のStackを選んでみよう。カード上のマウスポインタは,通常手の形をしている(図12を参照).これを,特に「Browse Tool」という.このポインタで,Calendarのアイコンを1度だけクリックすると,半年分が1枚のカードになったカレンダ-が開く(図13を参照).
 カードの上の方に並んでいるアイコンは,Buttonである.右端にある家の形をしたButtonは,Home Cardの初期画面に戻る定義がされている.その他のButtonは,Home Cardにあったものと同じで,それぞれのStackを呼び出すように定義されている.
 現行のFinderでは,1つのアプリケ-ションやファイルには、必ず1種類のアイコンが割り当てられている.しかし,HyperCardでは同一のStackに対しても,カードごとに異なるアイコンが設定できる.ここにあるアイコンは,Home Cardにあったものとは大きさやデザインが多少異なっているが,機能はまったく同じである.
 カレンダーの中身は、単なる数字の羅列のように見える.しかし,ここにも仕掛けが隠されている.カレンダーの日付の部分もButtonになっているのだ任意の日付をクリックしてみると,その日付を含む週の週間カレンダーのStackがオープンされる(図14を参照).この週間カレンダーでは,各日付の罫線が描かれている部分に,ユーザーがメモ(テキスト)を記入できるようになっている。これは,この部分に前述のFieldが設定されているからだ。
 この他にも,Stackのサンプルとして,アドレス帳や備忘録などが用意されている(図15を参照).

ASCII1987(11)d04HyperCard_図11_W516.jpg
ASCII1987(11)d04HyperCard_図12_W287.jpg
ASCII1987(11)d04HyperCard_図13_W520.jpg
ASCII1987(11)d05HyperCard_図14_W520.jpg
ASCII1987(11)d05HyperCard_図15_W520.jpg
Help Stackが最上の教材

 HyperCardにあらかじめ登録されているStackの中で、もっとも秀逸なのが,Help(図16を参照)だ.このHelpのカードを,マウスでパラパラとクリックしていけば,HyperCardの全貌を一通り理解できるようになっている.
 Help Stackは,プログラマが新たなカードやStackをデザインする際の,貴重なサンプルになっている.一通りカードをめくって見たあと,カードに配置されているButtonの定義を引っ張り出して調べると,HyperTalkのプログラムの方法が分かるようになっている。現時点では,正式なマニュアルがないため,筆者自身もHyperCardに関する情報のほとんどは,このHelpから得ている.
 Helpも,それ自体が階層的な構造になっている(図17を参照).このStackは、インデックス付きカードで構成されている.インデックスのタグの部分がButtonになっているため,それをクリックすると目的のカードがすぐに引き出せる.また,自分がどこにいるのか分からなくなったら,図17のMapを開けばよい.*印のあるStackが,その時のポジションを表している.また,これらのStackを表しているアイコンもButtonになっているため,ここをクリックすることによって目的のStackにジャンプすることが可能だ。
 このHelpは、いわゆる「オンラインマニュアル」なのだが,秀逸な点は,これを見ていけばユーザーが実際にHyperCardの様々な機能を試し体得できるということだ.Help自体が,HyperCardとして機能しているために,興味をひく機能の解説に出会ったら,それがどうやって実現されているのか,直接的に見ることができる。

ASCII1987(11)d05HyperCard_図16_W520.jpg
ASCII1987(11)d05HyperCard_図17_W520.jpg
オブジェクト指向言語 HyperTalk

 HyperCardの中核を形成しているHyperTalkは,オブジェクト指向で,自然言語に近い文法を持ったプログラミング言語だ。
 オブジェクト指向と言えば,すぐに思い出すのはSmalltalkだが,いろいろな面でHyperTalk(というよりもHyperCard)は,Smalltalkに影響を受けている.例えば,前述のように,実際に動作しているもののソースがすぐに参照できる点などは,Smalltalkそのものだ。
 HyperTalkは,本格的に解説しようとすると,連載記事が組めるほどの内容になってしまう.そこで今回は、ほんのさわり程度,トピックス的な事柄だけを紹介することにする.詳しい解説は次号に掲載する予定だ.

1.Scriptを見る
 HyperCardでは、HyperTalkで書かれたプログラムをScriptと呼ぶ.手初めに,Home Cardに登録されているButton定義のScriptを見てみよう.ここでは「Address」のStackを呼び出すButtonを調べてみよう.このScriptは非常に単純で,全部で4行しかない(図18を参照).
 Scriptid,11TD(on mouseUp)と4行目(end mouseUp)でくくられた形をしている.これらは,Buttonの上でマウスがクリックされたことを示すシステムからのメッセージ「mouse Up」に対する応答の仕方を記述している部分だ
 これは「メッセージ・ハンドラ」と呼ばれ,Smalltalkのメソッドに相当するものだ。ここでは、メッセージ「mouseUp」に対応するハンドラが用意されているから,メッセージはButtonによって処理される.もし,このメッセージに対するハンドラが用意されていない時は、メッセージは1つ上のレベル,つまりButtonが載っているカードのScriptに渡される.もし,そこにもハンドラがなかったら,次はそのカードのBackGround(後述)のScriptへ,そこにもない場合はStackへ,その次はHome Stackへ,最後にこれらのいずれにも定義されていない時は,HyperCard自身へと渡される.これは,SmallTalkのインヘリタンス(継承)の機能と同じものである.
 元に戻って,このカードのScriptの内容を見てみよう.2行目の「visual effect zoom open」はこのカードから目的のカードへと画面を更新する際のワイプパターンを定義している.「zoom open」がワイプパターンの種類を表し,これはFinderでウィンドウをオープンする時のように,アイコンから長方形が放射状に広がるパターンである.この他にも,「wipe left/right/up/down」「scroll left/right/up/down」などが用意されている.これに加えて,「slowly」などの副詞を付けて,例えば,「visual effect checkerboard slowly」などと書くこともできる.b  次に,3行目の「goto stack "Address"」によって、文字どおり「Address」という名のStackに飛ぶことになる.これで,一連の処理は終了する.b  この他に,特徴的な例として,「Play」コマンドを挙げておこう.このコマンドは,「Boing」と「Harpsichord」という音を,テンポ,音階を指定して演奏させることができる(図19を参照).標準では,この2種類の音しか用意されていないが,ユーザーがサンプリングした音のリソースを付け加えることによって,別の音色も使用できる.実際の効果をお見せできないのは残念だが,画面のワイプパターンや効果音に,ここまで凝っていることだけでも驚きである.
 もう少し複雑な例を見てみよう(図20を参照).これは週間予定表(Weekly)を開くButtonのScriptである.内容は割愛するが,これによって,その時点の日付を含む週の予定表を,一発で開くことができるようになっている.

ASCII1987(11)d06HyperCard_図18_W518.jpg
ASCII1987(11)d06HyperCard_図19_W515.jpg
ASCII1987(11)d07HyperCard_図20_W520.jpg
2.アプリケーション・ラウンチャーとしての機能
 HyperTalkは,この他にも実に豊富な機能を持っている.例えば,HyperCardから他のアプリケーションを起動するようなこともできる.そのために,「Open」コマンドが用意されている.
 具体的には,MacPaintを起動したい時は,Open MacPaintというコマンドを実行するだけでいい.さらに,「Open“PaintFile" With MacPaint」とすれば,PaintFileというファイル名のMacPaintドキュメントがオープンできる.この機能を使用すれば,少なくともMiniFinder程度の機能を持ったカードが簡単にデザインできる.

ユーザーレベルとメニュー
 HyperCardは,ユーザーの技術レベルによって,使用可能なメニューバーの機能を制限している.設定されている技術レベルは,(1) Browsing, (2) Typing, (3) Painting, (4) Authoring, (5) Scripting――という5レベルである.これによって,初心者が,不用意にカードの内容やScriptを書き換えてしまい,本来の機能を壊せないようなレベル分けが可能になっている。
 ユーザーレベルは,Home Stack中のカード「User Preferences」によって設定できる(図21を参照).Browsingレベルでは,既存のカードに書かれた情報を見ることしかできない.Typingレベルでは,Fieldに文字を書き込んだり,編集することが許される.Paintingレベルでは、ペイントツールによってグラフィックスの編集までが許される.Authoringレベルでは,Scriptの変更以外がすべて可能となる.そして,Scriptingレベルでは,HyperCardが提供するすべての機能が使用可能になる.これらのレベルを適宜に選択することによって、メニューバーに表示されるメニューの数も変化する(図22を参照).

ASCII1987(11)d07HyperCard_図21_W520.jpg
ASCII1987(11)d07HyperCard_図22_W520.jpg
共通フォーマットを作るには
 これまで見てきた機能だけを使っただけでも,何らかのカードやStackがデザインできる.しかし,本格的なアプリケ-ションを作るには,HyperTalkに精通する必要がある.今回はHyperTalkの概観に終始したので,ここではオリジナルなカードを作るための予備知識を紹介しておこう。
 Stack中のカードは、フォーマットなどの情報を共有すると前述した.この場合のフォーマットとは、カードの罫線とか,カードそのものの形状を指す.そして,あるStack中のすべてのカードに共通の情報(フォーマット)を記憶しているのが「Back Ground」である.Back Groundの編集は,EditメニューからBack Groundの項目を選択することによって可能になる.Back Groundにも通常のカードと同様に,グラフィックス,Field,Buttonを設定することができる(図23を参照).
 また,Buttonに定義された機能で,最も多く用いられるのは,他のカードやStackを呼び出す機能だが,このリンクの作成は非常に簡単だ他にリンクするためのButtonを作るには,まずToolsメニューからButtonを選ぶ.この状態で、次にObjectsメニューから「New Button」を選ぶすると,カード上に新たなButtonが現れる.ここで,このButtonをダブルクリックすると,飛び先を決定するダイアログが開く(図24を参照).この状態で目的のカードを開き,このダイアログの「This Stack」あるいは「This Card」ボタンを押せば、リンクは完了する.これで,元のカード上のButtonのScriptが自動的に記述される.リンク先をStackに指定すると,そのStackの先頭カードに飛ぶことになる.一方,リンク先をカードに指定しておけば,あるStackの特定のカードに飛ぶことができる。
 カードやStackをデザインする場合,ゼロから自分で作る必要はない。カードやButtonは、テキストやグラフィックスと同様に,カット/ペーストが可能になっている.このため、既存のStackから,自分の目的に合ったカードやButtonをコピーしてきて,組み合わせたりするだけで新しいデザインが可能になる.また,こうした目的で,StackIdeaやButton Ideaなどのサンプル集が用意されている(図25を参照).

ASCII1987(11)d07HyperCard_図23_W520.jpg
ASCII1987(11)d07HyperCard_図24_W520.jpgASCII1987(11)d07HyperCard_図25_W356.jpg
ASCII1987(11)d08HyperCard_図26コラム_W511.jpg
この頃は、オブジェクト指向なんて知らなかった。C++でプログラムを作りだしてやっと知りえた知識だった。PC-9801を使っている自体、何年も遅れているということを今更ながら確認した。

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。