CGI とは Common Gateway Interface の略です。通常のページでは、あらかじめ用意された HTML ページを表示するだけですが、CGI を用いることにより、例えば、以下のようなページを作成することができるようになります。
CGI 処理の流れは次のようになります。
1) ブラウザがWWWサーバーに要求する
ブラウザは特に「CGI を起動する」とは意識しません。<a href="~"> や <img src="~"> や <form action="~"> で記述されたアドレス(URL)を単にサーバーに要求するだけです。
2) サーバーが CGI プログラムを起動する
サーバーは受け取った URL を見て、これが CGI プログラムかどうか判断し、CGI プログラムであるならこれを起動します。判断の基準は拡張子が .cgi であるとかですが、サーバーの設定やプロバイダによって異なります。CGI をサポートしていないサーバーやプロバイダもあります。
3) CGI プログラムは結果を返す
CGI プログラムは標準出力に実行の結果を書き出します。CGI プログラムの作り方次第で、複数のファイルを読み込んで連結したり、カウンター値を演算してその結果を返すことができます。
4) CGI プログラムの結果をブラウザに返す
CGI プログラムが書き出した内容は、WWW サーバーを経由して、Web ブラウザに送信され、Web ブラウザはこれを表示します。
「CGI」とは WWW サーバーがプログラムを起動する際の起動方法(環境変数の名前や値)を定めた仕様の名称です。この仕様に基づいて作成されたプログラムを「CGIプログラム」と呼びます。
「CGIプログラム」のうち、Perl、awk、sh などコンパイル作業が不要なスクリプト言語で記述されたものを「CGIスクリプト」と呼びます。CGI プログラムは Perl で記述されたものが多いですが、環境変数と標準入力を参照できて、結果を標準出力に書き出せるものであれば、C言語、C++言語、VisualBasic でも何でも構いません。
本書では特に Perl を用いた CGI を中心に説明していきます。Perl に関する詳細は「とほほの perl 入門」を参照してください。