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

FutureBasicでCGI

発言者:重松修
( Date Saturday, March 15, 1997 23:59:16 )


いつもお世話になっております。

FutureBasicIIを買ってきて、何とか、ちょっとしたプログラムが作れるように
なったのですが、速度的に案外速く動作するためCGIをこれで作れないかな?と思
うようになりました。

メーカーのサポートは大変親切なので聞いてみようと思っていますが、どなたか
既に実行されておりましたら、是非サンプルなど分けて頂ければと思います。

よろしくお願いします。

重松修


→  モモデラーズブランド

前薗 健一 さんからのコメント
( Sunday, March 16, 1997 00:33:27 )

MacOS での CGI は

1.AppleEvent の Handle
2.漢字コード処理
3.CGI 独自の処理

ですので、FutureBasicII を使い AppleEvent あたりから始めてはいかが
でしょうか?

田中求之 さんからのコメント
( Sunday, March 16, 1997 00:37:46 )

Future BASIC で CGI は作れるはずです。基本的には、サーバーから渡される
AppleEvent を処理する部分をうまく作れば、あとは思うがままにプログラミング
次第で色々なことができるでしょう。


田中求之 さんからのコメント
( Sunday, March 16, 1997 00:40:06 )

>MacOS での CGI は

>1.AppleEvent の Handle
>2.漢字コード処理
>3.CGI 独自の処理

2は、FORM の処理を行わない(ユーザからメッセージは受け取らない)のなら
必要ないですね。逆に、FORM を処理する CGI の場合は、この部分が最大の
ネックになる可能性もありますね。

重松修 さんからのコメント
( Sunday, March 16, 1997 01:28:22 )

やっぱりポイントはApple Eventのハンドルですね。
その件に関しては、マニュアルに若干記載があり、今読んでいる最中です。

それ以外にも、URLデコードや漢字コード変換など、結構めんどくさそうなことが
沢山ありますが、折角買ったから何か作ってみたいと思います。(^_^)

重松修

前薗 健一 さんからのコメント
( Monday, March 17, 1997 01:41:55 )

URL decode は、日経 BYTE 誌に MS Visual Basic を使ったサンプルが
掲載されていたと記憶しています。昨年だったか、一昨年だったかは
記憶があやふやなんですけど。(^^;

漢字コード変換については、Ken Lunde 氏の「日本語情報処理」
ISBN 4-89052-708-7 を参考にして、 C -> Basic の移植が
必要かもしれませんね。

MS VB のサンプルがあれば、FB でもそのまま使えるはずです。

田中求之 さんからのコメント
( Monday, March 17, 1997 15:43:18 )

私の osax のソースは HyperTalk ですので、Cよりは BASIC に移植しやすい
かもしれません。でも、コード変換のヤツは、ちょっとぐちゃぐちゃしてますが (^_^;;

URL のデコードは、基本的には、文字列の %xx のパターンを見つけだしていって
変換するのと、+ をスペースに変換するだけですから、簡単だと思います。



ショージ さんからのコメント
( Monday, March 17, 1997 19:33:39 )

簡単にApple Eventを操作できるライブラリを含むライブラリ集が
モモデラから29,800円で出ています。ドラッグアンドドロップなども
あり、非常に便利みたいですよ。

ショージ
shoji@dit.co.jp

重松修 さんからのコメント
( Monday, March 17, 1997 23:46:35 )

色々情報をありがとうございます。m(__)m
ダメ元かな、と思っていたのですが、聞いてみるものですね。

個人的にCよりも敷居が低く、AppleScriptより早いから便利かなとは
思うのですが、やはりプログラムは人のを見るのが早く修得できるので
サンプルの件はモモデラサンに問い合わせてみます。

でも、ちと高いな。。。

重松修 さんからのコメント
( Monday, May 05, 1997 19:29:54 )

何時もお世話になっております。

実はまだ何も作れていないのですが、。。。。
ちょっと役にたつかもしれない情報を仕入れましたので、ご報告いたします。

FutureBasicはXCMDなどを使用できるそうです。説明書を読んだのですが、あい
かわらず、さっぱりですが、田中先生のXCMD(漢字コード変換、URLデコード)
を活用できれば、その部分は解決できそうだと分かりました。

それと、サンプルの件はモモデラあらためモードさんからDMで宣伝がありまし
た。今は貧乏なので、お金をためてかおうと思います。

→  モード(旧:モモデラーズブランド)

重松修 さんからのコメント
( Sunday, June 15, 1997 04:40:09 )

FutureBasicのAppleEventを含むフィルターを買いました。
税・送料込、直販価格で、金29800円也。
高いようで、出来ることを考えると安い気もします。

AppleEvent以外にもJPEGやGIFなどのフォーマットを読み書きできるとあり
ましたので、画像のアップロードできる掲示板などを作れればと思います。

# 話しはそれますが、たしかGIF(圧縮)はUNISYSかどこかが特許をもって
# いて保存が出来る場合は、ライセンス料の支払が必要ときいたのですが。

実は昨日届いて現在格闘中なのですが、AppleScriptしか知らないので、そも
そもAppleEventがどのようなものか、いま一つ理解していません。

AppleScriptでは、

on ヌWWWスsdocネ 引き数 givien 引き数....
  ・・・・処理・・・・
  return 返す値(処理結果)
end ヌWWWスsdocネ

が大間なかな処理の流れとなると思うのですが、このreturnというのは、WWW
サーバ、つまりWWWスsdocでCGI(AppleScriptアプリケーション)を呼び出
した呼びだし元に、データをAppleEventで送っているんだと思いますが、正しい
でしょうか?

この時、当該アプリ(WWWサーバ)からCGIへは多数のイベントが送られている
可能性もありますが、呼びだし元を含め、呼びだしID(←正確な名称があるので
しょうが)などは、AppleScriptが自動で管理しているのでしょうか?

その他にも速度的にQPQのマニュアルによれば、AppleEvent Managerが68K
コードなので、非常に速度的に不利である(が、それが標準なので対応している)
とありました。FileMaker ProをCGIで操作すると、WWWとCGI、CGIとFMP3
というふうにAppleEventを多用するためか、(それともFMP3が遅いから?)
速度的にかなり遅く感じました。やはりこれを高速化し、一度に転送できるデータ
サイズの制限を受けないためには、Plug-inを作成するということになるのでしょ
うか?

とんちんかんな質問かもしれませんが、その節はご容赦ください。また、なにか
お勧めの書籍もあればあわせてご紹介頂ければ助かります。


→  FutureBASIC II CGI勉強部屋

田中求之 さんからのコメント
( Sunday, June 15, 1997 07:58:55 )

>サーバ、つまりWWWスsdocでCGI(AppleScriptアプリケーション)を呼び出
>した呼びだし元に、データをAppleEventで送っているんだと思いますが、正しい
>でしょうか?

正確には、メッセージの送り主(サーバー)に、そのメッセージの返答(Reply)
を返している、ということになります。

CGI の側では、送られてきたイベントの reply を返すのであって、あらたに
イベントをサーバーに向けて送るのではありません。

サーバー(Web サーバー)にとっては、CGI からの reply が返ってきて、
はじめて1つのプロセスが完了するようになってます。


田中求之 さんからのコメント
( Sunday, June 15, 1997 08:05:53 )

AppleEvent/AppleScript に関する参考書といえば、やはりこれ↓でしょうね。


→  Interapplication Communication(IM:IC)

重松修 さんからのコメント
( Monday, June 16, 1997 02:58:43 )

田中先生、ありがとうございます。
さっそくダウンロードしています。それにしても、8Mとは読むのはもちろん、
理解しないとと思うと、すでにびびっています。

次の問題は、前薗さんもご指摘のURLデコードと漢字コードの変換なのですが、
たしかQuid Quo ProにはPreProsessorというものがあったように思います。
言葉の意味からすると、前処理ということで、事前にコード処理をするフィルタ
などをいれれば、引き数をSJISにして渡せる気がするのですが、例えば、
ここだけAppleScriptでかけば、とりあえず、漢字コードの問題を先送りに
出来るかなと思いました。あるいは、MacProxy+で変換するとか?

もちろん、単に先送りするだけなのですが、どうもCやPascalのソースを変換
したり、あるいはコンパイル済みのものであれば、呼び出せるようなことを書いて
あったので、基本的にはありものを使う方向で模索したいと思っています。

田中求之 さんからのコメント
( Monday, June 16, 1997 12:46:06 )

>たしかQuid Quo ProにはPreProsessorというものがあったように思います。
>言葉の意味からすると、前処理ということで、事前にコード処理をするフィルタ
>などをいれれば、引き数をSJISにして渡せる気がするのですが

漢字コードの変換を PreProcessor にやらせるのは無理です。なぜだかは、
よ〜く考えてみてください。

URL デコードも合わせて行うのであれば可能ですが、こちらのばあいは、エラー
を引きおこす可能性が高くなります。


田中求之 さんからのコメント
( Monday, June 16, 1997 12:58:59 )

>URL デコードも合わせて行うのであれば可能ですが

「URL デコードも合わせて行うのであれば不可能ではないですが」の誤りです (^_^;

PreProcessor がどのような処理を行うものか、また漢字コードの処理は CGI の
処理のどの時点で必要になるものかをよく考えてください。

なお、Inside Mac は、すべてを理解する必要はありません。AppleEvent が
どのような仕組みでやりとりされるのか、そして受け取った AppleEvent の
オブジェクトから必要な情報を得て、リプライを返すには、どのようにするのか
を押さえればよいでしょう。

あと、アプリケーションを作る場合には、 Required Event をサポートする必要も
ありますので、この辺もお忘れなく。

重松修 さんからのコメント
( Monday, June 16, 1997 17:56:04 )

漢字コードはURLデコードとセットということですね。

Required Eventとは、起動、書類が開かれる、印刷、終了のことでしょうか?
このことなら、大丈夫なのですが。

田中求之 さんからのコメント
( Monday, June 16, 1997 18:27:12 )

>Required Eventとは、起動、書類が開かれる、印刷、終了のことでしょうか?

そうです。

重松修 さんからのコメント
( Thursday, October 30, 1997 10:06:11 )

Future Basic をかってから、10ヶ月もの歳月が流れ、ようやく CGI がひとつ
完成しました。

何の事は無いただのカウンターCGIです。PICTリソースをオフスクリーンで
組み立てQuickTimeによりJPEGに変換しています。

今は CGI としてきちんと動くか確かめ中なので機能は全く無いですが、
将来的には、アクセスリポート機能をつけたいと思います。

まだ、バグがあるかも知れないのですが、テストしてやってもいいぞ!って
いうやさしい方はいらっしゃいませんか?

# 完成には程遠いですが、一応 URL デコード、漢字コード変換 etc...の
# 処理を集めたファイルも公開しました。

→  重松の CGI のページ