パーソナルビジネスソフトとお役立ち情報のサイト
Webを構成する基本技術
4.CGI

適用する業務の範囲を広げようとすると、単にHTML文書を探して表示するだけではなく、サーバ上でデータベースを検索したり、データやロジックの処理をしてその結果をクライアントに返す機能が必要となります。

ウェブシステムでは、サーバ側のプログラムにデータを渡し、起動する方法として、CGI (Common Gateway Interface)があります。CGIはNCSAによって規定され、代表的なHTTPサーバ全てでサポートされています。CGIは、データの受け渡しのルールを定めただけの比較的単純なしくみですが、逆にサーバー側でプログラムを組めば何でもできる柔軟性があることから広く普及しています。サーバーのプログラムは、基本的に標準入出力の処理ができる言語であれば何でも良いのですが、特にUnixではPerlというスクリプト言語がもっとも使われているようです。

クライアントユーザからの要求を受け入れるために、HTMLではフォーム(FORM)というタグを使用します。フォームには、イベント(サブミット)が起きたときに実行されるCGIプログラムの場所、チェックボックスなどの入力の設定を指定します。ユーザが所定の入力を行い、サブミットボタンを押すと、CGIプログラムの場所と入力データがHTTPサーバに送信されます。HTTPサーバでは、指定されたCGIプログラムを起動し、入力データを標準入出力ストリームなどを経由して渡します。CGIプログラムは入力データに基づき何らかの処理を行い、その結果をHTML文書の形式で生成し、HTTPサーバに返します。HTTPサーバは、これをクライアントに送信します。

ウェッブシステムの仕組み

CGIではリクエストの都度、CGIプログラムを起動・終了するオーバーヘッドなどのため性能上の問題があるといわれています。これを解消する目的で、ネットスケープ社のNSAPIやマイクロソフト社のISAPIといったウェブサーバAPIやOpen Maket社のFastCGIなどが提案されています。