CGIとは?初心者向けに解説

コンピューター

CGIとは

CGIとはWebサーバー上でプログラムを動かすための仕組みのことです。 「仕組み」を「仕様」と言い換えることもできます。 CGIの仕組み(仕様)に沿って作られたプログラムを「CGIプログラム」と言います。

正式には「Common Gateway Interface」といいます。 「Interface」という単語からわかるように、CGIはあくまで仕組み(仕様)です。 CGIというプログラミング言語があるわけではありません。

HTMLだけだと動きのない静的なホームページだけになりますが、 CGIを使うことで動的なホームページを作成できます。

CGIでできること

CGIという仕組みを使うと次のようなWebページを作成することができます。

  • チャット
  • 掲示板
  • カウンター
  • メールフォーム
  • アクセス解析
  • ウェブログ
  • ショッピングカート

CGIを使う場合の処理プロセス

CGIを使用する場合の処理プロセスを説明します。 登場するのは「ブラウザ」「Webサーバー」「CGIプログラム」の3つです。

下図の①②③④の順番で処理が進んでいきます。


・ブラウザ
 ①↓  ↑④
・Webサーバー
 ②↓  ↑③
・CGIプログラム

  1. 「ブラウザ」が「Webサーバ」に対して、Webページの内容を要求
  2. 「Webサーバ」が「CGIプログラム」を起動
  3. 「CGIプログラム」が「Webサーバー」に結果を返す
  4. 「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つの言葉を結構あいまいに使っていて、 両者をほぼ同じものとして捉えているケースが多くあります。 きちんと区別したい場合だけ、上で述べたように区別すれば十分だと思います