SSブログ

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

「HyperCardの全貌 後編」スクラップの続き。
4. HyperTalkのコマンド

 HyperTalkのコマンドを表1に示す.これらすべてについて解説する誌面がないので,特に興味深いものをピックアップして解説しよう.
Answer<質問>with<答え1>or<答え2>or<答え3>
 このコマンドは、画面にダイアログボックスを出して,ユーザーに質問ができる.このとき,ユーザーは最大3つまでの答えの中からどれかを選ぶことができる.ユーザーの選んだ答えは「it」とい|うローカル変数に代入される.例えば,
Answer“Which color do you like?" with“red”or“yellow”or“green”
とMessageboxにダイレクトに入力すると(図9を参照),HyperTalkの画面には図10のようなダイアログが現れる.
Ask<質問>with<デフォルト>
も同様にユーザーに対して質問をするコマンドだが,この場合は,選択肢ではなくデフォルトの答えを与える.
Choose<ツール名>
は,[Tools]メニューから目的のツールが選べる.これにより,例えば「rectangle」ツールを選んでおいて,次のClickやDragコマンドを使用して長方形を自動的に描くようなことも可能だ。
Click at h,v with shift Key optionKey commandKey
h,vで指定したスクリーン座標を,マウスでクリックした場合と同じ効果が得られる.Macのスクリーンは,左上が(0,0)である.例えば,
Click at 100, 200 with commandKey
は、コマンドキーを押しながら(100,200)の点をクリックしたことになる.
Dial<ソース>with modem<モデムパラメータ>
 ソースで与えられた電話番号に対応するプッシュ回線用の音を発生する.また,オートダイヤラー付のモデムを使用する場合は、モデムに対して電話番号を送出する.例えば,カレンダーなどに付いている電話型のButtonのScriptは,図11のようになっている.これによって目的の番号に電話をかけることができる.
DoMenu<メニュー項目名>
メニューの項目を指定して,あたかもユーザーがマウスでメニューを選択したのと同じ効果を得られる.
Drag from h1,v1 to h2,v2 with shiftKey optionKey commandKey
h1,v1で指定した座標からh2,v2で指定した座標までを、マウスでドラッグしたのと同じ効果が得られる.例えばChooseコマンドと組み合わせて,
Choose oval tool
Drag from 100,100 to 350,130
とすれば、スクリーンに楕円を描くことができる。
Get<式>
式の値をローカル変数「it」に代入する.例えば先の電話ボタンの例では,
get the selection
によって選択された文字列を,電話番号とみなしてitに代入している.
open<ドキュメント>with<アプリケーション>
HyperCardを抜けて別のアプリケーションを起動する.このとき,そのアプリケーションのドキュメントを指定することもできる.例えば,
Open field 3
とすれば,そのカードの3番目に書かれた名前のアプリケーションをオープンできる.これを使用すればMini Finderと同程度の機能を持ったCardが簡単に作れる。

 以上に説明したコマンドだけでも,ユーザーが,マウスやキーボードを使って行うオペレーションと等価のことを,ほとんどすべてHyperTalkによってプログラムできることが分かっていただけたと思うここで説明しなかったコマンドの中には,HyperCardがデータベースとして機能するために不可欠なFind,Sortや,ファイルにアクセスするためのRead,Writeなどもある.また,前号で紹介したように,Cardをめくる際に,視覚的効果を指定できるVisual effectもHyperCardならではのコマンドである.

ASCII1987(12)d05HyperCard図9_W510.jpg
ASCII1987(12)d05HyperCard表1_W328.jpg
ASCII1987(12)d06HyperCard図10_W435.jpg
ASCII1987(12)d06HyperCard図11_W473.jpg
ASCII1987(12)d08HyperCard表2_W331.jpg
5. コマンドの拡張

 前述したように,HyperTalkのコマンドは、ユーザーが自由に拡張できる.ここれには2つの方法が考えられる.1つはScriptとして記述する方法,もう1つはコードリソースとしてHyperCard自体に付け加える方法だ。ここでは、誰でも手軽に行える前者の方法を紹介しよう.
 これは非常に簡単で,コマンド,つまりMessageに対応するMessagehandlerを書いてやればよい.例えば,1つ前のカードをオープンするBackというコマンドを作りたかったら
onBack
 go to previous card
end Back
のようなScriptを書くだけだ。ただし,Scriptは,それを書いたオブジェクトに属するものだから、前に述べたMessageの伝達経路を考慮してオブジェクトを選ぶ必要がある.

6. HyperTalkのファンクション

 HyperTalkには、コマンドだけではなく,「ファンクション」と呼ばれるものがある.これは,Pascalなどと同じく値を返すものである.HyperTalkのファンクションとして定義されているものを表2に示す.
 これらの解説は,次号以降に譲るとして,ここではユーザーがファンクションを定義する際の書式を紹介する.これもほとんどがコマンドの定義と同じである。例えば,与えられた数値の自乗を返すsquareの定義は
function square x
 return x * x
end square
のようになる.このファンクションを使うには,例えば,
put 3 * square(5) into card field1
と書く.これによって,5の次乗に3をかけた値が,そのカードの1番目のFieldに記入される。

III 明日のために,その1

―“習うより慣れろ”―

 HyperTalkを使ってみて痛感したことは、言葉で説明すればするほど,もどかしくなるということだつたない解説の言い訳に過ぎないかもしれないが,HyperTalkやHyperCardの解説は、むずかしそうだということくらいは,薄々感じていただけるのではないかと期待している.それは,HyperCardが,今までのアプリケーションとあまりにも異なり,HyperTalkが他に類を見ないようなプログラミング言語だからということももちろんだが,提供される環境が,非常にインタラクティブであることが一番の原因だと思う.つまり,HyperCardは,HyperCardだけでは成り立たないということだ。言い換えれば,ユーザーがHyperCardに向かって操作をし,それに対してHyperCardが応える,そのアクション全体が,HyperCardそのものなのである.したがって,HyperCardを理解するには,操作してみるのが一番だ,としか表現のしょうがない.もう,ほとんど開き直った心境だ.
 賢明な読者であれば,当の昔にお気付きと思うが,HyperCardの全貌は,前・後編の2回連載だけでは,とても紹介しきれない.そこで、番外編として次号以降に,Stackの作り方講座を計画している.しかし,そうしたところで、もどかしさは残りそうだ。
 本稿の結論は,HyperCardに興味を持った人は,1日でも早くディスケットを手に入れること,である.
その通りだ。スクラップして分かったのはHyperTalkはWindowsでマウス操作、入力操作の自動化をするときに使ったVisual Basic Script(VBS)だったということ。仕事でWindowsのソフトウェアを使っていたとき何本かスクリプトを作った。習うより慣れろのとおりだった。35年前全然理解できないものが大したものではなかったことに自分の能力のなさを再認識した。






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

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