CGI 【Common Gateway Interface】

概要

CGI(Common Gateway Interface)とは、Webサーバが、Webブラウザなどからの要求に応じてプログラムを実行する仕組みの一つ。Web上で最も初期から用いられている動的なプログラム起動のための技術仕様で、多くのWebサーバソフトウェアが対応している。

プログラムファイルの置かれているURLにクライアント(ブラウザなど)がアクセスすると、Webサーバがオペレーティングシステム(OS)を介してプログラムを起動し、実行結果がクライアントに送信される。主にWebページ上のフォームに記入されたデータの受け取りや、ブラウザからのファイルアップロードなどに用いられる。

Webサーバからプログラムへは環境変数や標準入力によりデータが渡される。例えば、アクセス元のIPアドレスは「REMOTE_ADDR」、ブラウザがURLパラメータクエリ文字列)として「?」以降に記述した内容は「QUERY_STRING」、ブラウザ名や利用者の実行環境は「HTTP_USER_AGENT」といった名前の環境変数で参照できる。

HTTPのPOSTメソッドでブラウザ側からHTTPリクエストのボディ部に格納されて送られてきたデータ(アップロードされたファイルなど)はプログラムの標準入力として渡される。

CGIの登場以前は、Webサーバはあらかじめ用意されたHTMLファイルなどの静的なコンテンツを要求に応じてただ送信するのみだったが、CGIによって閲覧者側からデータを受け取って動的に処理し、結果を送信内容に反映させられるようになった。

現在では多くのWebサーバが標準でCGIに対応しているため、サーバの種類を問わず同じプログラムを利用することができる。また、CGIは特定のプログラミング言語に依存しないため、様々な言語でプログラムを開発することができる。

CGIは仕組み上、Webサーバプログラムとは別にOSを介して外部のプログラム(プロセス)を毎回起動・終了するため、大規模環境では負荷が大きく、性能向上の妨げとなってきた。このため、プログラムをWebサーバプログラムの内部で実行する様々な仕組みが考案され、CGIに代わって広く利用されている。その多くはWebサーバ固有(ASP.NETなど)あるいはプログラミング言語固有(mod_perlやJSPなど)のため、汎用性ではCGIの方が優れていることが多い。

(2020.5.21更新)

他の辞典による解説 (外部サイト)

試験出題履歴

ITパスポート試験 : 平25春 問77 平24春 問55