Perl/CGI研究室 'PERL-LABO'

Perl/CGI研究室 'PERL-LABO' TOPへ
戻る(History.Back)

CGIって?Perlって?

研究内容

そもそもCGIって何?Perlって何?ということを研究しましょう。

結果

CGIって?

CGIっていうのは "Common Gateway Interface" の略…なんだそうです。 なんて言われても意味分かりませんね。 試しに直訳してみたら、"共通の、出入口の、インターフェース" となりました。 インターフェースはもう日本語になってますけど、 例えばAとBの間の繋がりというか境界というか、そんなものですね。 でも直訳しても良く分かりませんね。もう少し分かるように、 言葉を補って見ましょう。 "全てのウェブサーバーに共通の、ウェブサーバーと外部のプログラムとの間の情報の出入口の、 インターフェース" …という意味だと思います。 結局CGIっていうのは、 ウェブサーバーが外部の(といっても同じサーバーにある別のという意味です)プログラムを 起動したり、そのプログラムに情報を渡したり、そのプログラムから情報を受け取ったりする、 やり方、ルール。それがCGI。ですから、CGIというのは物じゃありません。 統一ルールというか、規格とか、そんなようなものですね。

CGIプログラムとは

このCGIというルールに従ってウェブサーバーによって実行されるプログラムを、 CGIプログラムと呼びます。

CGI=CGIプログラム?!

CGIとCGIプログラム、本来は別物なのに、同じCGIという言葉で呼んでいるのをよく見かけます。 CGIプログラムというと長ったらしいので、略してCGIって呼んじゃうことが多いんですね。 でも、紛らわしいので、当サイトでは出来るだけCGIとCGIプログラムをちゃんと呼び分けようと思いますが、 ごっちゃになってたら、すいません (^^; でも実際、CGIプログラムのことをCGIって呼んでいる場合ってすごく多いようです。 ちょっと "無料CGI" で検索してみたら、うようよ出てきました。 CGI=CGIプログラムなページが。 あるいは、"CGI" の検索ヒット件数1,300万件(すご…)、 "CGI プログラム"の検索ヒット件数100万件。うーん、圧倒的にCGIという言葉は 単独で使われている場合が多いですね。 それじゃ故郷の米国では?と思って、試しに "Free CGI" で英語のページを検索すると、ちゃんと "Free CGI Script" という 形でCGIという言葉を使ってるみたいです。CGIプログラムじゃなくて CGIスクリプトって呼んでるみたいですが、少なくとも CGI=CGIプログラムみたいなことは無いみたいです。 うーん日本ではなんでそうなったのか?CGIという言葉の輸入ミスでも あったんでしょうか?とりあえず当サイトでは、 やっぱり出来るだけ区別して、ちゃんとCGIプログラムと呼ぶようにします。 (実は私、CGIという言葉の意味を自分で調べてみるまで、 CGI=CGIプログラムだと思ってました…^^;)

CGIの生い立ちを想像してみる

InternetExplorerなどのブラウザは、URLでページが指定されるとそのページを表示します。 URLは、世界のどこかにあるウェブサーバーの中にある1つのファイルを指しているんですね。 この動作、内部では、 ブラウザがウェブサーバーにそのURLで指定されているファイルを下さいっていう お願いをして、ウェブサーバーがそのファイルをどうぞってブラウザに送って、 ブラウザがそのファイルの中身を画面に表示する、 ということをしていますが、これは、たぶんもうご存知ですね。

この仕組み、言うまでもなく凄いことです。インターネット凄いです。 でも、これだとちょっとつまらないですね。というのは、単にファイルの内容を 表示するだけだと、あらかじめ用意されたファイルを表示するだけですから、 1つのURLは、管理者がそのファイルを変更しない限り、 いつも同じものしか表示することができないわけです。 そうじゃなくて、表示するたびにちょっと違ったことをしたい。なんて考えた人がいたんじゃないかな? そのためにどうしたらいいだろうか、ファイルの中身を送り返すんじゃなくて、 プログラムからの出力を送り返すようにしたらいいんじゃないだろうか、 それじゃあ、プログラムを起動したり、ブラウザからプログラムに情報を渡したり、 プログラムからの出力を受け取る仕組みについて、統一ルールを作った方がいいんじゃないか…。 そうしてCGIというものが生まれたんじゃないかな。

CGIプログラムが指定された場合に起きること

ウェブサーバーは、指定されたURLが普通のファイルの場合、単にそのファイルの内容をそのまま ブラウザに送ります。でもそのファイルがCGIプログラムだった場合、 ちょっと違うことが起こります。 ウェブサーバーは、ファイルの内容をそのままブラウザに送るのでなく… そのCGIプログラムを実行するのです! そう、CGIのルールに従って。そして、そのCGIプログラムを実行するときには CGIのルールに従って必要な情報をCGIプログラムに渡します。 CGIプログラムはブラウザに送りたい情報を出力します。 その出力をウェブサーバーはしっかりブラウザに届けてくれるのです。 CGIプログラムが「こんにちは」と出力すれば ブラウザに「こんにちは」と送られてきます。「んちゃ!」なら「んちゃ!」が ブラウザに送られてきます。 こうして、 いつも同じでつまらないなぁ…と考えていた人は毎回挨拶を変えることもできるよう になったわけなのです。

CGIプログラムになれるもの

CGIプログラムというのは、CGIのルールに従うプログラムっていうことでした。 ルールに従うっていうとなんだか難しそうなんですが、 CGIのルールで、CGIプログラムがしなきゃいけないことっていうのは そんなにたくさんは無いです。 分かりやすく書くと、CGIプログラムの条件は、3つだけです。 1つ目は「ウェブサーバーが実行できるプログラムであること」 2つ目は「ウェブサーバーからの入力を受け取れること」 3つ目は「ウェブサーバーへの出力が行えること」です。 この3つを満たすものは、みんなCGIプログラムになることができます。

Perlって?

Perlは、「パール」と読みます。 パールというと、真珠のことですよね。 でも真珠という意味のパールのスペルはPearlで、Perlとは少し違っています。 要するに、真珠とはまったく関係なくて、こちらのパールは、「プログラム言語」です。

プログラム言語っていうのは、コンピュータへの命令を ある決まりに従って書いておくと、 その決まり通りにいろんなことを実行させることができるっていうようなものです。 上で、CGIプログラムになれる条件を3つ書きましたが、 Perlは3つともできます。ですから、CGIプログラムになれる条件をクリアしてます。 そして、Perlはとても使いやすくて便利なものなんです(皆がそう言います)! プログラム言語はとても沢山あります。 そして、みんなCGIプログラムになることができます。 でもその中でPerlが特に CGIプログラムに向いている言語なんですね。 なんでかと言えば、いろんな便利な機能が用意されているとか、 簡単だとか、いろんな理由があるのですが、とにかくPerlは人気抜群で、 CGIプログラムに非常に良く使われます。 あんまり人気があるので、CGIプログラム=Perl、Perl=CGIプログラムみたいなイメージがあるくらいです。 でもPerlとCGIプログラムは本来関係のないものです。 Perlというプログラム言語が先に あって、それがCGIプログラムに使われているというのが正しいです。 そんなわけで、PerlはCGIプログラムの世界で見事にチャンピオンになった 素晴らしい言語なんです!

CGIスクリプトって?

Perlはスクリプト言語です。 スクリプト言語というのは、コンパイルという処理をしてコンピュータが 直接実行できる形式にしなくても、人間が書いたテキストのままで1つ1つの命令文を その場で解釈しながら実行することができるようなプログラム言語のことをいいます。 スクリプト言語で書かれたプログラムはスクリプトとも呼ばれます。 なので、スクリプト言語であるPerlで 書かれたCGIプログラムを、CGIスクリプトって呼ぶことがあるんですね。 Perlで書かれているかぎり、CGIプログラムでもCGIスクリプトでも、どちらも正解です。 私は、CGIプログラムでもCGIスクリプトでもどちらでもいいんですが、 Perlで書かれたCGIプログラムをCGIスクリプトって わざわざ言い直すことも無いと思うので、CGIプログラムって呼びますね。

長くなりましたが、CGI、Perlという言葉の意味について研究してみました。 これでスッキリ、安心してPerl/CGIの勉強ができそうですね!(^^

分かったこと

  1. CGIというのはウェブサーバと外部プログラムとの間のルールです。
  2. CGIプログラムというのはCGIに従ってウェブサーバーに実行されるプログラムです。
  3. CGIプログラムのことをCGIと呼ぶのは正確には間違いです。
  4. Perlというのはプログラム言語です。
  5. PerlはもともとCGIとはまったく無関係でした。
  6. でもPerlはCGIプログラムに向いているのでCGIプログラムによく使われます。
  7. Perlはスクリプト言語なので、Perlで書いたCGIプログラムを CGIスクリプトとも呼びます。
Perl/CGI研究室 'PERL-LABO' TOPへ
戻る(History.Back)

Copyright (c) 'PERL-LABO' All Rights Reserved.  リンクフリーです。