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

CGI Programming with MacPerl 移転公開

発言者:田中求之
( Date Tuesday, March 21, 2000 16:45:00 )


私の友人である吉本伸一氏が、かつて彼のサイトで公開していた MacPerl Island
という MacPerl の情報提供のコーナーがあったのですが、事情により現在は
運営されていません。

そこで、MacPerl Island で公開されていたコンテンツの中から、CGI 作成に
関する情報を掲載した "CGI Programming with MacPerl" のコンテンツを
私が譲り受け、公開することにしました。

一部、リストや情報が抜けている部分があるのですが、基本的な知識を得る
ことができると思います。


*私の作ったページとは異なって、しっかりとした HTML で書かれてます (^_^;

→  CGI Programming with MacPerl

よしもと さんからのコメント
( Tuesday, March 21, 2000 18:18:01 )

>そこで、MacPerl Island で公開されていたコンテンツの中から、CGI 作成に
>関する情報を掲載した "CGI Programming with MacPerl" のコンテンツを
>私が譲り受け、公開することにしました。

どうもご手数おかけします m(..)m

>一部、リストや情報が抜けている部分があるのですが、基本的な知識を得る
>ことができると思います。

割とまともなのは3くらいまでですね。う〜ん、すみませんです。

>*私の作ったページとは異なって、しっかりとした HTML で書かれてます (^_^;

これは割と気合いを入れて書きました(笑)


きむら さんからのコメント
( Tuesday, March 28, 2000 16:22:12 )

macperl-ml@MacOS.comにて、吉本さんのページが移設されたことを知りました。
問い合わせは会議室へとあったので、こちらへ書き込ませていただきます。

補足の執筆者募集とありましたが、「.cgiと.acgi」について多少誤解があるようですので、それだけでも補足させていただけますか?

あまり割ける時間がないかもしれないので、いいものができるかどうかお約束はできないかもしれませんが。

kim@arch.waseda.ac.jp
(メールいただけると幸いです)

田中求之 さんからのコメント
( Tuesday, March 28, 2000 16:57:36 )

>「.cgiと.acgi」について多少誤解があるようですので、それだけでも補足させていただけますか?

修正原稿を私宛にメールしていただくが、場合によっては、ここに書き込ん
でもらっても結構ですよ。

田中求之 さんからのコメント
( Tuesday, March 28, 2000 17:01:11 )

きむらさん以外にも、内容に関してコメントや修正案などをおもちの方は、
遠慮なくここに書き込んで下さい。

オープンソースじゃないけど、公開の元でよいものに仕上げていくことが
できたらと思います。

私自身は MacOS での CGI の実装やサーバー側の動作については理解できて
いますが、Perl を理解できていないので(だいたい、最新版のバージョンすら
知りません (^_^; )、私の独断でいくより、皆さんの意見を伺った方が
確実だと思いますので。

よしもと さんからのコメント
( Tuesday, March 28, 2000 17:59:11 )

>補足の執筆者募集とありましたが、「.cgiと.acgi」について多少誤解があるようですの
>で、それだけでも補足させていただけますか?
>
>あまり割ける時間がないかもしれないので、いいものができるかどうかお約束はできない
>かもしれませんが。

どうもご手数おかけします m(..)m
間違い等ありましたら、どんどん突っ込んでやってください。




きむら さんからのコメント
( Monday, April 03, 2000 10:20:03 )

どうもMacPerlでCGIを作ると不安定だと思っていたのですが、最近MacPerlのメーリ
ングリストで、.cgiと.acgiの問題が議論されていて、どうやらMacPerlで複数のcgi
の処理をするのは難しそうだということが分かりました。

そこで、「mpcgi01.html」の「1.2.1 CGIとACGI」で、「後で述べますが、MacPerlで
作った...」以降を下記のように変えてはいかがでしょうか。

===== ここから =====
ただし、MacPerlは一度に一つのプログラム(スクリプト)しか実行できず、一つの
プログラムの処理中に他のプログラムを処理するように(Apple Event経由で)要求
されると、破綻を来してしまいます。
つまり、立て続けにアクセスされる可能性のあるCGIの場合は、拡張子を「.cgi」と
して、サーバー側に立て続けにアクセスしないように明示する必要があります。ま
た、異なるCGIプログラムでも、一つのプログラムの処理中に、もう一つのプログラ
ムが呼ばれると破綻を来してしまうので、このような可能性がある場合は、そのまま
ではMacPerlでCGI処理ができません。
従って、頻繁にCGIへのアクセスが予想される場合は、すべての処理を一つのCGIで行
うようにするなどの工夫が必要です。
一方、server pushという方式でCGIとサーバーがやりとりする必要がある場合にも拡
張子を「.acgi」とするようになっているので、頻繁にCGIへのアクセスがある場合に
server pushを使うのは非常に困難だといえます。
===== ここまで =====

よしもと さんからのコメント
( Monday, April 03, 2000 13:07:49 )

>どうもMacPerlでCGIを作ると不安定だと思っていたのですが、最近MacPerlのメーリ
>ングリストで、.cgiと.acgiの問題が議論されていて、どうやらMacPerlで複数のcgi
>の処理をするのは難しそうだということが分かりました。

そうなんですか。知らなかった...
そうなってくると、結構厳しいですね。
早くマルチスレッドで走るMacPerlが登場してくれれば良いんですが...

#それかMac OS X待ちかなぁ (^^;

田中求之 さんからのコメント
( Monday, April 03, 2000 13:51:31 )

>プログラムの処理中に他のプログラムを処理するように(Apple Event経由で)要求
>されると、破綻を来してしまいます。

実行中のプログラムが止められて、後から割り込んできたものが実行される
というのは AppleScript のアプレットの場合も同様なのですが、「破綻」を
来すというのは、どういうことなんでしょうかね?

1:中断されてしまったプログラム(先に実行されていたプログラム)の実行が
再開されないということ

2:実行は再開されるが、MacPerl の仕様により、正しく実行されない
  (プログラム側ではグローバル変数などは用いないと行った工夫を
   行うのは当然としても)

の2の方だとは思うのですが…

AppleScript で CGI を作る場合でも、安易にグローバル変数やプロパティに
頼った作りにしておくと破綻する(実行結果がおかしくなる)ので、割り込みが
かかるのを前提にしなければならないのですが、MacPerl では、そういう対処
ができないのでしょうか?

MacPerl をお使いの方、どうなんでしょう?

きむら さんからのコメント
( Monday, April 03, 2000 21:04:22 )

ちょっと曖昧な書き方になってしまったでしょうか?
「破綻」を来すというのは、現象としては、MacPerlあるいは、システムが
ハングアップするということです。
実行中のプログラムが止められるているのか、後からの要求が割り込んで
いるのかなどは今のところはっきりしていません。
MacPerlの場合、たぶんAppleScriptの場合のようなグローバル変数や、
プロパティはないと思うので、その影響はないと思うのですが、
CGIの時の環境変数がそれにあたるのでしょうか?

田中求之 さんからのコメント
( Monday, April 03, 2000 22:45:47 )

>現象としては、MacPerlあるいは、システムが
>ハングアップするということです。

これでは、まさに破綻ですねぇ。

>CGIの時の環境変数がそれにあたるのでしょうか?

そうですね。ただ、この部分は MacPerl が AppleEvent をどのようなメカ
ニズムで環境変数に変換しているのかにも依存しますね。

いずれにせよ、複数同時処理が行えないとすると、.acgi で動かすのは
無理ですね。また、UNIX からの Perl の移植にも、色々と制限が加わり
そうですね。

きむら さんからのコメント
( Monday, April 17, 2000 14:34:26 )

>いずれにせよ、複数同時処理が行えないとすると、.acgi で動かすのは
>無理ですね。また、UNIX からの Perl の移植にも、色々と制限が加わり
>そうですね。

MacPerl関連のメーリングリストを見ていると、Macの上で制作・動作確認をして
実際の運用はUNIX系のマシンでという使われ方が多いようです。

Public Server / Siteでは使わない、という表現がよく使われています。

マルチスレッドで走るMacPerlも開発中のようですから、それを待つのも一つの手
ですし、親CGIだけを本当のCGIとして、後は子CGIを呼び出すような感じにするの
ももう一手でしょうか。後者の方は、やりたいと思っているのですが、なかなか
時間がとれません。