田中求之(Motoyuki Tanaka)
Last Modified: September 02, 2003
かつて購入した HyperCard 用の開発ツールを引っ張り出してきて、久しぶりにたちあげてみました。
今となっては、ほとんどがハードディスクの中で静かに眠っており、利用されることもありません。ですから、それらのツールを今更紹介してみたところで、ただの懐古趣味ですが、まぁ、こういうツールが次々と登場して、HyperCard が開発環境としても熱い時期があったということの記憶のために、ここにスクリーンダンプを並べておきます。私自身が懐かしむために作ったページですので、画像を山のように並べるなど、けっして見やすいとは言えないページになっています。すみません。
なお、基本的に、サードパーティ製の製品として販売されていたものを並べてあり、フリーウェアとしてパソコン通信などで配付されていた Rinaldi 氏の膨大な XCMD, XFCN のコレクションなどは含まれていません。
Marionet というバックグランドで動くアプリケーションを介して HyperCard や SuperCard あるいは AppleScript(AppleEvent) で TCP/IP の通信を行うというものです。HyperCard からは XCMD で Marionet と通信を行うようになっています。非同期で通信を行うためにちょっと変則的なスクリプトを書かなければなりませんでした。
Marionet が本体で、Marionet Manager が管理ソフトです。
HyperCard からコミュニケーションツールボックス(CTB)を利用して通信を行うためのツールです。
コミュニケーションツールボックス自体が、そんなに成功したとは言えない仕組みだったので、あんまり使わずに終わってしまいました。
HyperCard に通信端末の機能を持たせるためのツールです。先の CommsTalk と似たようなものです。
シリアル回線を使ってパソコン通信のホストや UNIX のマシンにログインしたり、ファイル転送を行う機能を実装できました。確か、当時は勤務校が 2400Bps の通信機能を提供していたので、このツールを使って、電話をかけて、大学のホスト(UNIXマシン)にログインし、メールを確認する、というのを試した覚えがあります。でも、結局、自分でターミナルを操作したほうが早かったので、スタックとして通信の道具を作ることはありませんでした(NinjaTerm 使って Emacs とか動かしていたんだよな、確か)。
HyperCard を CGI として動かしたうえで、スタックを Web ページに自動変換して利用できるようにするという、アイデアは面白いツールでした。ただ、画面の画像を表示したうえで、フィールドなどは別の FORM として展開するという仕様になっていたことや、画像の JPEG 化以外はすべて HyperTalk で処理を行うという野心的な作りだったため、私の LC475 なんかではとうてい遅くて使い物にならず、なんどか遊んだ後はお蔵入りになったツールです。
HyperCard 自身に TCP/IP 通信機能を持たせてスタックをリモートでお互いに開くことができる(今のファイルメーカーのネット共有機能みたいなもの)、そういう仕様へと HyperCard が進化していたら、面白い展開があったのかもしれません。
XCMD 制作専用の BASIC コンパイラです。私が最初に XCMD を自作した時は HyperBASIC 1.0 を使いました。
HyperCard 2 の登場後のサポートが遅れたことや、XCMD がけっこうでかくなる(というか CompileIt がタイトなコードを吐き出すということなのかもしれませんが)等の理由で、すぐに CompileIt! を愛用するようになったので、HyperBASIC を使っていた期間は短かったです。v1.5 はほとんどつかいませんでした(こういうコレクターズアイテムのようなものが私にはけっこう多い)。
スタックの中で(HyperCard の中で) HyperTalk を使って XCMD (後にコードリソース一般へ拡張)が作成できるという画期的なツール。このツールに出会ったことで、私は Mac のプログラミング(Inside Mac に首を突っ込むプログラミング)へと突入することになりました。
作者の Tom Pittman 氏は、パソコン史においては TINY BASIC の作者として知られています。なお、現在(2007年)、彼の Web サイト(Itty Bitty Computers)で CompileIt を入手できるようになっています。
CompileIt の最大の特徴として、MacOS の API (ツールボックス)を HyperTalk 中で利用できることがあります。これによって、Toolbox の様々なプロシージャや関数を利用した XCMD が作れるわけです。また、この機能があったおかげで、後に osax 作りにも CompileIt! が使えたわけです。
Apple が提供しているヘッダファイルを読み込んで新たに CompileIt! 内で利用することも可能になっています。こいつは今でも現役です。
CompileIt! の関連ツール。他の開発環境で作成したコードを取り込んで使えるようにしたり、自分が良く使う関数などをコンパイルしたオブジェクトコードとして取り込んで再利用を簡単に行えるようにするためのリンカです。
これも CompileIt! の関連ツール。スクリプトの編集機能を拡張するスタックです。CompileIt! をリモートで利用する感じで動きます。複数のスクリプトをバッチ処理的にコンパイルさせたりもできるようになっています。このツールを解析する(マニュアルにも丁寧な説明がのってたと記憶しています)ことで、CompileIt! のカスタマイズを行うための知識が身に付きました。CompileIt! は伝説の TinyBASIC のハッカーの Tom Piitman が作ったものだけあって、技術情報を解説した文書もたくさん提供されていていました。
これも CompileIt! の関連ツールなのですが、こいつは HyperTalk でアプリケーションを作ってしまうためのツールです。HyperTalk のサブセットが走るシェルに XCMD あるいは TEXT リソースに収めた HyperTalk スクリプトとして機能を追加していくことでアプリケーションを作成します。WindowScript という GUI 構築ツールと組み合わせると、いわゆるマック的なソフトウェアが実際に作成できます(HyperCard が後になって実装したスタックのアプリ化とは全く別の仕組み)。
これが実際のプロジェクトのスタックです。アプリケーションの開発に必要な作業はこのスタック上で行えます。aete リソースの編集も行えるあたりが心憎い作りになってます。
メニューの編集画面。メニュー項目と、そのメニューが選ばれたときに実行されるスクリプト(呼びだされるべきハンドラー)を設定していくようになっています。
リソースの編集画面。TEXT リソースが並んでいますが、この中に HyperTalk のハンドラーが入っています。アプリケーションになった際には、この TEXT リソースを読み込んで、それを HyperTalk インタプリターのシェルに do script コマンドで実行させていくというやり方が私は気に入ってました(先ほどのメニュー編集の画面のスクリプトの部分を参照)。TEXT リソースになった HyperTalk の編集/デバッグ用のスタックなんかも作ったんだよな…
XCMD として組み込む機能のソース編集画面。スクリプトを XCMD あるいは XFCN としてコンパイルしてしまって実装することも可能です。ビルドの際には CompileIt! が呼びだされてコンパイルされます。
ビルドして完成したアプリケーションの画面です。
HyperTalk インタプリターが走っていますので、メッセージボックスから HyperTalk のコマンドを送り込むと、ちゃんと実行されます(アプリケーションのデバッグの際には、このようにメッセージボックスから色々なハンドラーを呼びだしたりして動作の確認を行ってました)。
スクリプトエディタ+デバッガ+各種モニターからなる HyperCard の開発環境の強化ツールです。
Worksheet では HyperTalk を書いてエンターで実行できるなど、HyperTalk をひたすらプログラミング言語として使い込もうという場合には重宝するものになっています。ただ、最大の欠点は、非常に不安定なことです。そのため、機能にはかなり魅せられたのですが、あんまり使用しませんでした。
一時期愛用していたスクリプトエディタです。残念ながら HyperCard のバージョンアップに伴って利用できなくなりました(その時は、本当に困った)。
これもスクリプトエディタです。ScriptEdit でサードパーティ製のスクリプトエディタの味に目覚めてからは、あれこれと新しいスクリプトエディタの製品が出ると買って試していました。
これの最大の特徴は、スクリプトのブラウジングがとても楽なことです。スタック全体のオブジェクトの一覧の中から編集したいオブジェクトがすぐに選べること、スクリプトはハンドラー単位でブラウズできるなど、なかなか高機能なエディタでした。
ただ、これも若干不安定だったことと、これを購入したあたりから、スタックの制作はほとんどやらず、もっぱら CompileIt! で osax を作るだけになったこともあって、結局、あんまり使いませんでした。
これもスクリプトエディタです。
MasterScript や CodeCatcher に比べるとシンプルなエディタなんですが、安定して使えるということで、現在も愛用しているエディタです。
これは直接は HyperCard で使うものではありません。HyperCard の XCMD を HyperCard 以外でも利用できるようにするというツールです。私自身は、Quickeys のマクロの中で XCMD を使うというのを一時期愛用していました。AppleScript が登場するまでは、Toolbox が提供する機能をマクロなんかで利用するのに重宝してたツールです。
このツールは、結局は購入しなかったものなのですが、自分の中で印象が強かったものです。確か、海外(米国外)への出荷については電話で問い合わせないといけないということもあって、購入に踏み切らなかったものです。で、どういうツールかというと、Tbx という XCMD と XFCN がコアになるもんなんですが、HyperTalk の中で Toolbox を直接アクセスできるようにするというものなんです。このデモ版といっしょに配付されていたサンプルのスクリプトの一部を参考までに載せておきます。
function GetIndStr StrResName, num
global ResError
put Tbx("GetNamedResource,R", "oSTR#^", "s"&StrResName) into aHandle
if (ResError is 0) then
Tbx "Hlock", aHandle
put FromMem(aHandle,4) into aPtr
put FromMem(aPtr,2) into numStrs
if num <= numStrs then
add 2 to aPtr
repeat with i=1 to num
put FromMem (aPtr,"str") into aString
add length(aString) to aPtr
end repeat
else
answer "Error: GetIndStr wanted more strings than there are"
end if
Tbx "HUnlock", aHandle
end if
delete char 1 of aString
return aString
end GetIndStr
ハンドルとかポインタが HyperTalk の中で扱われていて、GetNamedResource や Hlock といった Toolbox がコールされているのが分かると思います。こんなツールまで販売されていたわけです。
HyperCard の中で各種ダイアログが自由自在に作れてコントロールできるというツールです。かつて大阪の近鉄難波駅の横のビルの2階にあったビープス(小さいけど良いお店だったなぁ。よく通いました)というお店でこのツールに出会いました。そのあたりから HyperTalk のプログラミングにのめり込んでいったんだよなぁ。
このツールのおかげで、HyperCard 上に自分の使い勝手の良い作業環境を構築できるようになりました。感じとしては、HyperCard という OS の上でアプリケーションを走らせるといったもの。
Dialoger が更に高機能になった GUI 構築ツールです。このツールを使うと、スタックはスクリプトとリソースの収納ファイルとなってしまい、インターフェースはすべてこいつでコントロールするといった感じでソフトが作れます。
Dialoger 同様に Leonard Buck 氏の作品です。この人は、確か、このあと FaceSpan の開発に携わったはずです。とことん Mac の GUI ツールの開発を行った人といったところでしょうか。
HyperCard 上でテーブル(Excel のシートのようなセル単位でデータの表示/編集が行えるもの)を利用できるようにするツールです。XCMD が独自のウィンドウを作画し、それがテーブルになっているというものです。
こちらも HyperCard でテーブルが利用できるようにするツール。
こちらの方が細かにコントロールできたように記憶しています。でも、あえて HyperCard でごちゃごちゃやるより、エクセルを使ったほうが結局は早いのでは?という感じで、色々と実験して楽しみはしたけど、実際のツール作りには使わなかったですね。
HyperCard のカラー対応が遅れる中、HyperCard のスタックでカラーが使えるツールがいくつか出てきました。一時期、かなり盛り上がった分野です(結局、HyperCard 自身がカラー化のツールを付けたわけですが。でも、HyperCard 自身がカラーになることはなかったですね)。
フリーウェアとしてパソコン通信などで配付されて NIFTY の私が出入りしていたフォーラムでは一時期、このスタックを使いこなしてカラー化する方法などが盛り上がりました。
これは製品として販売されていたカラー化のツール。高速かつ高機能なカラー化ツールだったと思います(このツールは購入していない)。Cyan の Myst の最初のバージョンは、この HyperTint を使ったスタックとして作られていました。
HyperCard のツールの販売元として有名だった Heizer Software (後に売却されて Royal Software になった)が出していたカラー化ツールです。
製品ならではの細かな仕掛けがあったと記憶しています。ただ、私自身はスタックのカラー化にそんなに熱くならなかった(もっぱらプログラミング環境として HyperCard を使っていたので)ので、あんまり使い込みはしませんでした。
スタックの画面なんですが、それを感じさせないですよね。
エキスパンドブックの最初のバージョンは HyperCard で作られたものでした。PowerBook が発売された後に登場してきたときには、かなり話題になったもので、いわゆる電子出版のはしりのツールですね。ただ、日本語版はむちゃくちゃ遅くて、とうてい使ってられないものでした(機能は野心的なものだったと思う)。
この後、アプリケーション版へ変更になったはずです。そして、現在の T-Time へとつながっていくわけです。
System 6.x までは、複数のアプリケーションを同時に走らせるということがまだ一般的ではなかったので、アプリケーションを使っている最中にちょっと呼びだして使う補助的な小さなソフト=デスクアクセサリというものがありました。この HyperDA はデスクアクセサリの中でスタックを開くものです。
スタックに記録しておいたデータをちょっと参照したりするといった使い方には便利なものなんですが、HyperCard 2 対応のこの HyperDA II は、動作が不安定だったのと、System 7 が普及する中で DA はすたれて、複数のアプリを同時に立ち上げるのが普通になったので、消えていってしまいました(Font/DA Mover が懐かしい〜)。