CGI(Common Gateway Interface)とは、情報を取得しようとするスクリプトに対してWebサーバーとの間のデータ転送の方法を指定する仕様です。
予め作成されたHTMLページの場合には、検索エンジンの検索結果やウェブページ内のアンカーのクリックやURL直接指定などによってブラウザがURLを送信し(Webサーバに当該URL情報を表示するよう要求)することによってWebサーバが直接そのレスポンス(応答)としてURLにマッチするウェブページで適切に設定されたHTMLやCSSを解釈し、ブラウザに表示します。
ブラウザ <=> Webサーバ |
CGIスクリプトには、HTMLファイルに埋め込むタイプとHTMLファイルから専用のスクリプトファイルを呼び出すタイプがありますが、前者の場合は、見かけ上は、これと同様の仕組みとなります。
後者のタイプのCGIスクリプトの場合(前者も実際)には、ブラウザからCGIスクリプトのURLが要求されると適切な処理を行うように書かれたCGIスクリプトを介してWebサーバが応答することになります。
ブラウザ => CGIスクリプト <=> Webサーバ ↑_____________________________________________↓ |
*Webサーバは、多くの場合、WWWサーバ、httpdサーバと呼ばれます。
*通常はネットワーク経由でWWWサーバに接続するのが普通ですが、テストとしてなら必ずしもネットワーク接続をしなくてもローカル接続でWWWサーバを実行する事もできます。
*通常WWWサーバの初期設定でCGIは使用不可設定になっているものが多いと思います。CGIを利用する場合には、設定を確認しましょう。また、レンタルサーバ等でCGIを利用したい場合は予めCGI利用可能なサーバを選ぶ必要があります。
これらのCGIスクリプトは任意のスクリプト言語で作成する事ができますがその中でも最も広く使われているのがPerlです。
Webページ(htmlファイル)はこれまで見てきたようにhtmlタグとテキストの混在であるテキスト文書ですが、このテキスト編集処理がとても扱いやすいというのが一番の理由でしょう。
また、静的ページというのは情報を表示するページであり、動的ページは、ファイルをダウンロードできるようなページやブラウザで閲覧しているユーザーからフォーム(formタグ)を使用して情報を受信したり与えられた情報を元に結果のグラフやレポートを作成したりする事ができるページの事です。
こういった動的ページを作成する場合にはCGIスクリプトが必要になります。
因みに任意のスクリプトにはPerlのほかにPython、Ruby、phpスクリプト等があり、Web系システムにおけるサーバサイドプログラム言語としてJSP・ASP等があります。
また、UNIX/Linux環境では、shellスクリプトを活用するケースも多くあります。
WWWサーバに接続するには、URL(Uniform Resource Locator)を使用しますが、URLとは大まかにいうと次の2種類の情報を含んでおり、URIと呼ばれる事もあります(URL/IRI/URI/URN)。
◆プロトコル(http) ◆アドレス(IPアドレス)とデータ |
プロトコルにはいくつか種類がありますが、ここでは
http |
について見ていくことにします。
httpとは、HyperText Transport Protocol(ハイパーテキスト転送プロトコル)の略です。
そう、HyperTextと言えば、HyperText Markup Language、つまりHTML、httpは、『http://www.~』のようにアドレスの先頭にある『http』の事です。
アドレスは通常サーバの
・ホスト名 |
ですが、
・IPアドレス(19x.16x.10.1) ・アクセスしたいファイルの実際のパス名 |
としてその他のデータが含まれる等の場合もあります。
接続は全てTCP(Transmission Control Protocol)を使用して行われ、HTMLの場合、お約束としてコンピュータ端末の『ポート80番』が使用されることになっています。
ご自身のPC・端末(ローカルホスト)にWWWサーバをセットアップしてメインのHTMLページをindex.htmlとしている場合は次のように入力します。
http://localhost/index.html |
WWWサーバは特別な指定をしなければ標準では『index.html』や『index.htm』を自動的に探しに行くので
http://localhost/ |
でも構いません。
また何らかの理由でローカルサーバで他のポート(例『ポート番号8080番』)が指定されている場合は自動で探してくれないので
http://localhost:8080/ |
のように
『http://localhost』+『:(半角コロン)』+『ポート番号』+『/』 |
とすると接続する事ができます。
さて先ほどのブラウザとWWWサーバ、CGIの関係を
ブラウザ <=> CGIスクリプト <=> WWWサーバ
|
と言いましたが若干補足しますと
ブラウザがCGI経由でページのロード(読み込み)を要求すると
→WWWサーバーは受け取ったURLを調べ
→(CGI実行可能ディレクトリがcgi-binの場合)『/cgi-bin/』を探し
→ディレクトリを開き
→CGIファイルが見つかったら
→CGIスクリプトを実行
します。
CGIが起動しWebページを表示する場合、WWWサーバが認識できる形式でページを表示する為には、HTMLに埋め込まれたCGIスクリプトはもちろん、専用CGIスクリプトにおいても適切なHTMLタグを出力するロジックが必要です。
こうして接続がオープンしブラウザが要求したCGIが起動しWebページを表示する場合、WWWサーバが認識できる形式でページを表示する為には、CGIスクリプト内にHTMLタグが必要です。
そしてCGIスクリプトからこのHTMLタグの記述された文書をWWWサーバがブラウザに送信し、ブラウザがこれを解釈して表示するということになります。