|
CGIとはそもそもなんなのでしょうか? ホームページ上でよく見かける「掲示板」や「お問い合わせフォーム」・・・ これらはほぼ間違いなくCGIと呼ばれるものですね。
まず、CGIとは「Common Gateway Interface」(コモン・ゲートウェイ・インターフェース)の略なのは知っていましたでしょうか?
えっ?知ってました?(^^;
となると今度は、「Common Gateway Interface」ってなに? ということになりますが、日本語に直訳すると「共通の通り道の仕様」・・・
う〜ん、いまいちピンとこないですね。では、「Common Gateway Interface」はいったんおいておくことにしましょう。
皆さんがふだんホームページを見てるときって、基本的に情報のやり取りが一方通行になっていますよね。つまり、ホームページ制作者側からホームページ閲覧者側へ向けて、一方的に情報が流れていることになります。実際にはホームページ制作者が作ったHTMLファイルが格納されているWebサーバーから、ホームページ閲覧者のブラウザに向けて情報が流れているわけですね。この場合、閲覧者はホームページを「見ること」しかできず、Webサーバーに向けてなんらかの情報を送ってページを「書き換えて」しまう手段はありません。
例えが適切かどうかかなり不安ですが、これは「流しそうめん」に近いかもしれません。ふつうは「流しそうめん」って、高いところから低いところへ流れるだけの一方通行ですよね。そう、あの半分に割った竹筒は「そうめんを流す人」側から「そうめんを食べる人」側へ傾いたものが一本しか用意されていません。この場合、「そうめん(HTMLファイル)を流してくれる人(Webサーバー)」に、自分の要求を伝える手段はなく、例え「そうめんを食べる側のあなた(ブラウザ)」が『私はそろそろピンクのそうめん(違ったHTMLファイル)が食べたい』と思っていて、それをどんなに大声で叫んだとしても、「そうめんを流してくれる人(Webサーバー)」にその声が届くことはないのです。結果として、いつまでも「白い色のそうめん(同じHTMLファイル)」しか流れてこないことになります。これではちょっとおもしろくありませんね。
(正確に言えば、ブラウザからWebサーバーに向けて頻繁に情報を送ってはいるのですが、ここではWebサーバーから発信されるページの情報そのものを、ブラウザから意図的に書き換えることはできないということから、このように考えて下さい)
それに対して、「掲示板」や「お問い合わせフォーム」などの場合は、そのページを「見ること」だけにとどまらず、ホームページ閲覧者側からWebサーバーへ情報を送ることができ、その送られた情報を元に新しくページを構成する、つまりページを「書き換える」といったことも可能になっています。実際、掲示板などに何かの書き込みをすると、明らかに書き込んだ情報が掲示板に反映されますね。
これを先ほどの「流しそうめん」で例えると、今度は「そうめん(HTMLファイル)を流してくれる人(Webサーバー)」に、自分の要求を伝える手段がきちんと確立されています。つまり、「そうめんを食べるあなた(ブラウザ)」側から「そうめん(HTMLファイル)を流してくれる人(Webサーバー)」側へと傾いた竹筒もちゃんと用意されています。あなたが『私はそろそろピンクのそうめん(違ったHTMLファイル)が食べたい!』と思って、『次、ピンク!』と書いた紙を竹筒に載せてぴゅーっと流せば、「そうめん(HTMLファイル)を流してくれる人(Webサーバー)」は、笑顔(かどうか知らんけど)で「ピンクのそうめん(違ったHTMLファイル)」を流してくれることになります。もちろんピンクじゃなくてもグリーンでもイエローでもなんでもいいんですけど(笑)
一見すると、これで何の問題もなく「好きな色のそうめん(HTMLファイル)」を食べられるような気がしますね。ところが、「そうめん(HTMLファイル)を流してくれる人(Webサーバー)」は、いつも日本人とは限らず、アメリカ人かもしれませんし、エスキモーかもしれません。同様に「そうめんを食べる人(ブラウザ)」も、常に日本人とは限らず、仮に日本人だとしても、訛りがひどかったり字が汚かったりで、何を伝えたいのかわからないときがあるかもしれません。
ということは、「そうめんを食べる人(ブラウザ)」から送られたリクエストを的確に解釈・実行して、「そうめん(HTMLファイル)を流してくれる人(Webサーバー)」が理解できる言葉で伝えてくれる「第三者」がいればよさそうな気がします。こうしておけば、ナマケモノだろうが捕まった宇宙人だろうがチュパカブラだろうが、とにかくその「第三者」に向かってリクエストを送れば、いつでも好きな色のそうめんを食べられることになります。これはなかなかナイスです。これならそうめんを食べるのもちょっと楽しくなります。
もうおわかりですね!(ホンマかいな(^^;)。この「流しそうめんの竹筒に流されてきたリクエスト用紙が誰からのものであろうが、そうめんを流してくれる人がわかる言葉で的確に伝えてくれる第三者」こそが、まさしく「共通の通り道の仕様」であり、「Common Gateway Interface」、つまり「CGI」なのです。自分で書いていて恐ろしく乱暴な例えなのは十分にわかっていますが、「まぁ、なんとなく雰囲気はわかったよ」と思っていただければラッキーです(笑)
余談ですが、よくCGIというと Perl (パール)と混同されがちですが、CGIが仕様なのに対して、Perl
はプログラミング言語の一種にすぎず、他にもCやJava、Ruby、PHPなどいろいろなプログラミング言語がCGIとして使われています。「流しそうめん」でいえば「Webサーバーに伝言してくれる人はたくさんいるけど、その中の田中さん(山田さんでも可(笑))」にすぎません。ただ、Perl
はコンピュータがプログラムを解釈できる状態にする「コンパイル」という作業を人間がしなくても、WebサーバにアップロードしてCGIファイルに適切な実行権を与えれば動きますし、WindowsやMac、UNIXなどいろいろなOSの上で動いてくれるので、OSごとにプログラムを書き換える手間もありません。しかもPerl
自体もネット上無料で配布されています。これらの手軽さや汎用性の高さから現在大人気なわけですね。
Perl の開発者はLarry Wallさん lwall@netlabs.com という方で、Perl は『C』とUNIXの『Shell』のいいとこ取りの結果生まれたプログラム開発言語だそうです。Perl
の語源は「Practical Extraction and Report Language」=『実用的なデータ取得レポート作成言語』と言われていますが、一方で「Pathologically
Eclectic Rubbish Lister」=『病的折衷主義のがらくた出力装置』とも言われています。どちらが正しいかの判断はお任せしますが、Perl
のプログラミングに慣れてくると、Perlの「いいかげんさ」にはとてもありがたみを感じると思います。いちいち変数の型指定をしなくていいのはかなり楽チンです。
それでは、次のCGIの設置はなぜ難しい?へ行ってみましょう!
⇒CGIの設置はなぜ難しい?
|