このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

HyperCardでのCGI

発言者:祖父江 剛一郎
( Date Thursday, October 10, 1996 09:05:38 )


初めまして。このページを一週間ほど前に見つけて夢中で
みさせてもらっています。
なぜそんなに興味があるかというと、昔やっていたHyperCardが
CGIに使えるらしいからです。
そこで教えていただきたいことがあります。
MacHTTPからの呼び出し(変数の受け渡しなど)と、
hypercardからMacHTTPへのフィードバックの仕方について教えてください。
hypercardに関しては、外部拡張コマンド以外は一通り知っています。

みなさん今後ともよろしくお願いします。

田中求之 さんからのコメント
( Thursday, October 10, 1996 21:08:09 )

HyperCard による CGI は、私のサーバーのページでは説明していませんが、
AppleEvent の処理を行うハンドラーをきちんと書けば、あとは比較的簡単に
作ることができます。ただし、処理速度の点で難点があることは覚えておいてく
ださい。特に MacHTTP をサーバーに使っている場合には、かなり遅くなります。

明日にでも、ClipDecoder を CGI に改造して、FORM のメッセージを受け
取ってカードに記録していくサンプルをアップしておきます。また、簡単な解
説をコメントとして書き込みますね。


田中求之 さんからのコメント
( Friday, October 11, 1996 21:12:23 )

HyperCard による CGI のサンプルを登録しました。 FORM からのメッセージを
受けて、それをカードに記録するという、基本的な動作だけのものですが。

スクリプトについては、見てもらえばわかると思います。

使い方などもスタックに書いておきました。


参考になれば、幸いです。


→  FormCGI (HyperCard CGI Sample)

田中求之 さんからのコメント
( Friday, October 11, 1996 23:40:25 )

HyperCard の CGI は、確か Info-mac にもいくつか登録されていたように
思いますので、探してみるのもよいと思います。

まぁ、基本的には、appleEvent ハンドラーによって Web サーバーからの
イベントを受け取って、処理をして、ヘッダーといっしょにページを reply
するという手順になります。


祖父江 剛一郎 さんからのコメント
( Friday, October 11, 1996 23:57:59 )

コメントありがとうございます。
AppleEventを受け取る場合は、既にHyperCardスタックが
開かれている必要がありますか?
もし、HyperCardスタックを起動する必要があればその方法を教えて下さい。
ただ単に拡張子を「.cgi」にすればよいのでしょうか?

(余談)やっぱりHyperCardは遅いようですね。
早ければ最高のソフトだと思うのですが・・
AppleScriptを覚えるまでのつなぎにしようかと思います。

田中求之 さんからのコメント
( Saturday, October 12, 1996 00:56:13 )

先ほど登録したサンプルを見ていただければ分かりますが、HyperCard で CGI を
作る場合は、

1: HyperCard のエイリアスを Hyper.acgi という名前(拡張子を .acgi にして
おけば名前はなんでもいいのですが)にして Web サーバーに入れておく

2:スタックのスクリプトに AppleEvent を受けとめるハンドラーを書いておく

3:そのスタックを start using でライブラリに加えておく(こうすれば、
スタックが開いていなくても、CGI として動きます)

という必要があります。


あるいは、ホームページに CGI 用のハンドラーを書いてしまうならば、特定のスタック
を開いたり start using する必要はなくなりますので、こちらの方が便利な場合
もありますね( HyperCard が立ち上がったら、いつでも CGI になるわけですから)

>(余談)やっぱりHyperCardは遅いようですね。

速度を稼ぐには、CGI の処理中は HyperCard が一番手前のアプリケーションに
なるようにします。こうすれば、スクリプトの実行速度は上がります。また、カラー
などは絶対に使わないことと、スクリプトは極力シンプルかつコンパクトに書くよう
気を付け、もし XFCN などが利用できるのであれば、XFCN で速度をかせぐ、
などの配慮によって、多少の速度向上は可能ですよ。

また、サーバーは WebSTAR や WebCenter のような、Thread Manager 対応の
ものを使うのも大切なポイントです。

もちろん、どんなに工夫しても、HyperCard ゆえの限界はあります。この点は、
速いマシンを使うしかないでしょう。しかし、速度に目をつぶれば、カスタマイズの
容易さなど、それなりの可能性を持ったものであることは確かです。

田中求之 さんからのコメント
( Saturday, October 12, 1996 17:49:01 )

訂正です

「ホームページに CGI 用のハンドラーを書いてしまうならば」

→ 「Home スタックに CGI 用のハンドラーを書いてしまうならば」

(^_^;;


なお、Info-mac に Hyper-CGI というスタックの CGI があるようです。

祖父江 剛一郎 さんからのコメント
( Tuesday, October 15, 1996 01:04:32 )

スタックがうまく動きました。
有り難うございました。

やはりハイパーカードは複雑な処理には遅いようですね。
ところで、速度が早くて、メモリもあまり必要としないCGI
が必要な場合、どんな言語が適しているのでしょうか。

田中求之 さんからのコメント
( Tuesday, October 15, 1996 01:21:06 )

>ところで、速度が早くて、メモリもあまり必要としないCGI
>が必要な場合、どんな言語が適しているのでしょうか。

C/C++ で書いて、コンパイルしてアプリケーションにしてしまう
のが、サイズ、速度ともにベストですが、そうではなく、いわゆる
スクリプト言語で、ということであれば、AppleScript か Frontier
ということになるかと思います。Frontier の場合は、Frontier
というアプリケーションを立ち上げておかなければならないのですが
速度などの点では、こちらの方が速いでしょう(比較したことはあり
ませんが)。

また、これとはべつに、さほど凝ったことをしないのであれば、
NetCloak や OpenWorld といった、マクロ言語を HTML に
埋め込んでおけばそれを処理してくるツール( Server Side Include
みたいなもの)を使うという方法もありますね。

とりあえず、そこそこの速度で動き、カスタマイズの自由度も高い、という
点では AppleScript がお勧めです。この会議室程度の処理速度は出せます。

祖父江 剛一郎 さんからのコメント
( Monday, October 21, 1996 22:05:24 )

どうもおありが問うございました。
大変参考になりました。
またなにか分からないことがあったときはよろしくお願いします。

ちなみに私のマックサーバーによるホームページができました。
ちゃっかり宣伝させてもらいます。
田中さんのゲストブックスクリプトを利用させていただいてます。



→  Landscape of Western America