CGIとは -概要-

[BACK] [NEXT]

 概要

 CGIはCommon Gateway Interfaceの略で、ブラウザの要求に対してサーバーが別プログラムを起動して実行し、その結果をブラウザに返すためのインターフェースの事です。このインターフェース規格を使ってブラウザにhtml文を表示したり、ブラウザから受け取ったデータを加工したりするプログラムがCGIプログラムです。CGIプログラムの事をCGIスクリプトとも呼びます。

 「スクリプト」とは直接OSのもとで実行されるプログラムではなくて、どこかにスクリプトをコンパイルする別の実行ファイルが有り、このプログラムがコンパイル(コンピューターが解釈できる言葉に変換する事)しながら、あるいは起動した後にコンパイルしてから実行させるプログラムの事を指すか、OS特有のコマンドをならべたものを指す場合が多いようです。後者はシェルスクリプトと呼ばれます。こういう意味でJavaScriptやVBScriptは一般的にブラウザがコンパイルしますから「ブラウザサイドスクリプト」、Perl言語で書いたCGIプログラムはサーバーマシンに入っている「Perl」というインタプリタがコンパイルしながら動作させるので「サーバーサイドスクリプト」と呼ばれる事が有ります。

 CGIが出力するのはhtml文つまりホームページの内容そのものですから、ブラウザから送られてきたデータによってホームページの内容を動的に変化させられるわけです。これがCGIによるインタラクティブ性の本質です。又CGIプログラムはサーバーマシン側で実行されますから、サーバーのファイルにアクセスするようなプログラムを書く事ができます。掲示板やチャットのように発言メッセージをファイルに保存しておく必要の有るアプリケーションには最適です。逆に言えばJavaScriptやVBScriptでは原則としてサーバーマシン内のファイルにはアクセス出来ないのです。

また、ORACLEやPostgreSQL、MySQLといったDBMS(DataBase Management System)との連携で

クライアント(ブラウザ) --- WebServer --- ServerSideProgram

という構成からなるシステムを「3層クライアントサーバーシステム」と呼んだりします。

 話は外れますが、サーバーマシンで実行されるWeb連携プログラムは何もCGIだけでは無く他にも有ります。MicroSoftのWindows + IISというサーバー環境であれば「ASP(ActiveServerPages)」という仕組みを使うとサーバー側でJavaScriptやVBScriptが実行され、そのスクリプト内からAPIを呼び出したりするとサーバー内ファイルにアクセスできます。さらに、Linuxでよく使われるPostgreSQLやMySQLなどのデータベースにアクセスするプログラムを書くのに便利なPHP」という仕組み(Perlに似た独自言語)や、Java言語を記述言語とする「JSP」「ServletProgram」という仕組みも有ります。これらはいずれもサーバーマシン内にスクリプトエンジンが常駐するため、その都度Perlが起動されるCGIスクリプトよりも一般的にパフォーマンスに優れているといわれますが、対応するWebServerが限定されるのが普通です。

[BACK] [NEXT]

更新日: