CGIとは?初心者向けに解説
CGIとは
CGIとはWebサーバー上でプログラムを動かすための仕組みのことです。 「仕組み」を「仕様」と言い換えることもできます。 CGIの仕組み(仕様)に沿って作られたプログラムを「CGIプログラム」と言います。
正式には「Common Gateway Interface」といいます。 「Interface」という単語からわかるように、CGIはあくまで仕組み(仕様)です。 CGIというプログラミング言語があるわけではありません。
HTMLだけだと動きのない静的なホームページだけになりますが、 CGIを使うことで動的なホームページを作成できます。
CGIでできること
CGIという仕組みを使うと次のようなWebページを作成することができます。
- チャット
- 掲示板
- カウンター
- メールフォーム
- アクセス解析
- ウェブログ
- ショッピングカート
CGIを使う場合の処理プロセス
CGIを使用する場合の処理プロセスを説明します。 登場するのは「ブラウザ」「Webサーバー」「CGIプログラム」の3つです。
下図の①②③④の順番で処理が進んでいきます。
・ブラウザ
①↓ ↑④
・Webサーバー
②↓ ↑③
・CGIプログラム
- 「ブラウザ」が「Webサーバ」に対して、Webページの内容を要求
- 「Webサーバ」が「CGIプログラム」を起動
- 「CGIプログラム」が「Webサーバー」に結果を返す
- 「CGIプログラム」から受け取った結果を踏まえ、 「Webサーバー」が「ブラウザ」に結果を返す
CGIとPHPは別物
たまに「CGIとPHPは同じですか?」という質問を受けますが、両者は別物です。 CGIは仕組み(仕様)であってプログラミング言語ではありません。 PHPはプログラミング言語です。
CGIプログラムで使う言語
CGIプログラムを作成するにあたって、使用できる言語はいろいろあります。 CGIの仕様にそって書かれていれば何でもOKです。
Perl、C、C++などいろいろありますが、 CGI用の言語として一番多く使われている言語は「Perl」です。
ただし、その言語が使えるかどうかはサーバー環境によって異なりますから、 確認してから作成するようにしてください。初心者向けの解説は以上です。 これ以降は少し難しいと思うので、興味のある方だけ読んでください。
CGIプログラムとCGIスクリプトの違い
CGIについて調べていると、「CGIスクリプト」という言葉もよく聞きます。 CGIプログラムとCGIスクリプトの違いは、使っているプログラミング言語の違いです。
上で説明したように、CGIの仕様に沿って作られたプログラムをCGIプログラムといいます。 そのCGIプログラムの中でも、 Perlなどの(コンパイル不要な)スクリプト言語を使って作られたプログラムを 「CGIスクリプト」と言います。
C言語やC++言語などのコンパイルが必要な言語で作った場合は単に 「CGIプログラム」と呼びます。 ですから、CGIプログラムの方が範囲が広く、CGIスクリプトの方が範囲が狭くなります。
CGIスクリプトとサーバーサイドスクリプトの違い
同じスクリプトという言葉が付いていますが両者は異なります。 CGIの処理プロセスの所で見たように、CGIスクリプトは外部プログラムで、 Webサーバーから起動されます。CGIスクリプトの代表的な言語がPerlです。
一方、サーバーサイドスクリプトはHTMLの中に プログラムを埋め込んだスクリプトです。 Webサーバーがプログラムの処理をするため、外部プログラムは不要となります。 サーバーサイドスクリプトの代表的な言語がPHPです。
ただし、一般的にはこの2つの言葉を結構あいまいに使っていて、 両者をほぼ同じものとして捉えているケースが多くあります。 きちんと区別したい場合だけ、上で述べたように区別すれば十分だと思います