読み方 : シージーアイ

CGI 【Common Gateway Interface】

概要

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

プログラムファイルの置かれている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更新)

他の用語辞典による「CGI」の解説 (外部サイト)

資格試験などの「CGI」の出題履歴

▼ ITパスポート試験
平24春 問55】 Webサーバでクライアントからの要求に応じて適切なプログラムを動作させるための仕組みにCGIがある。CGIを経由して実行されるプログラムを作成できるスクリプト言語はどれか。

▼ 基本情報技術者試験
令7修7 問26】 Webサーバにおいて,クライアントからの要求に応じてアプリケーションプログラムを実行して,その結果をWebブラウザに返すなどのインタラクティブなページを実現するために,Webサーバと外部プログラムを連携させる仕組みはどれか。
令6修7 問26】 Webサーバにおいて,クライアントからの要求に応じてアプリケーションプログラムを実行して,その結果をWebブラウザに返すなどのインタラクティブなページを実現するために,Webサーバと外部プログラムを連携させる仕組みはどれか。
令5修7 問26】 Webサーバにおいて,クライアントからの要求に応じてアプリケーションプログラムを実行して,その結果をWebブラウザに返すなどのインタラクティブなページを実現するために,Webサーバと外部プログラムを連携させる仕組みはどれか。
令1修7 問35】 Webサーバにおいて,クライアントからの要求に応じてアプリケーションプログラムを実行して,その結果をWebブラウザに返すなどのインタラクティブなページを実現するために,Webサーバと外部プログラムを連携させる仕組みはどれか。
平30春 問35】 Webサーバにおいて,クライアントからの要求に応じてアプリケーションプログラムを実行して,その結果をWebブラウザに返すなどのインタラクティブなページを実現するために,Webサーバと外部プログラムを連携させる仕組みはどれか。
平28修6 問35】 Webサーバにおいて,クライアントからの要求に応じてアプリケーションプログラムを実行して,その結果をWebブラウザに返すなどのインタラクティブなページを実現するために,Webサーバと外部プログラムを連携させる仕組みはどれか。
平26修7 問35】 Webサーバにおいて,クライアントからの要求に応じてアプリケーションプログラムを実行して,その結果をWebブラウザに返すなどのインタラクティブなページを実現するために,Webサーバと外部プログラムを連携させる仕組みはどれか。
平24修12 問39】 Webサーバにおいて,クライアントからの要求に応じてアプリケーションプログラムを実行して,その結果をブラウザに返すなどのインタラクティブなページを実現するために,Webサーバと外部プログラムを連携させる仕組みはどれか。
平22春 問39】 Webサーバにおいて,クライアントからの要求に応じてアプリケーションプログラムを実行して,その結果をWebブラウザに返すなどのインタラクティブなページを実現するために,Webサーバと外部プログラムを連携させる仕組みはどれか。
平21修6 問7】 CGI(Common Gateway Interface)の機能と仕組みに関する記述のうち,適切なものはどれか。