牧原真治
CGI(Common Gateway Interface)とは何か.どんなところに利用されるのか.その原理は?ということを実際のCGIを例にあげて説明する.
図1 普通のHTMLを送る
WWWブラウザからURLをサーバに送ると,WWWサーバはURLからファイルの拡張子を認識し,「.html」となっていればそれがHTMLファイルと認識して,ヘッダとして情報を付け加えてブラウザに返す.これが普通のHTMLドキュメントを返す手順である. CGIはクライアントからの情報をWebサーバを経由して伝達され,それをCGIで処理しWWWサーバを経由してWWWブラウザに返す(図2).
図2 CGIでドキュメントを返す場合
この間WWWサーバは中継をするだけで,伝達される情報には手を触れない.従って,ヘッダもCGIで面倒を見てやらなければならない.CGIは必ずしもドキュメントを返す必要はなく,URLを返しそこにアクセスするよう仕向けることができる.これをリダイレクトと呼ぶ(図3).
図3 CGIでリダイレクトする場合
この場合,ドキュメントを返す場合とヘッダが異なる.リダイレクトの代表的なものがクリッカブルマップである.クリッカブルマップをクリックすると,クライアト側からは,
図4 クリッカブルマップの例
ブラウザの一番下に示されるURLに注目.
図5 クリッカブルマップの構造
次に,データベースとの結合であるが,ここではMyButlerというMacOSで動くデータベースサーバとWebSTARとをとり持つTango.acgiを例にあげるが,クライアントはクエリードキュメントをTango.acgiを通じて読み,フォームに書き込みをしてその内容を送る.Tango.acgiは,クライアントからの情報とクエリードキュメントの内容から判断してMyButlerにアクセスし検索結果をユーザに返す(図6).
図6 WWWサーバとデータベースをCGIにより結合させた例
このクエリードキュメントは,TangoEditorで編集するが,編集する時に自動的にデータベースの構造を取り込み,データのどの項目について検索するのか,検索結果としてどんなものを表示するかをグラフィックユーザインターフェースで設定できる.
次に,使用頻度の高いCGIの1つであるクリッカブルマップの処理について紹介する.
2.クリッカブルマップ
インライン表示されている画像の上をクリックすることで,その画像の座標に応じてリンク先が設定してあるものをクリッカブルマップと呼ぶ.クリッカブルマップは,CGIで実現するため,CGIアプリケーションが必要であるが,一部のサーバではこれが組み込まれているものもある.Macintosh上で動くサーバでは,InterServer Publisherはこうしたサーバの1つであるが,その他のサーバはCGIアプリケーションが必要になる.クリッカブルマップのためのCGIとしては,MapServe, Imagemap, MacImagemapなどがあるが,MapServeが一番軽快に動くため,これを利用することを勧める.そのほかに必要なものは,座標とリンク先の関係を書いたマップファイルであるが,これもWebMapをはじめとするマップエディタで編集することが可能である.また,Netscape Navigaterでは,クライアントサイドクリッカブルマップが組み込まれ,CGI不要のしくみも組み込まれている.
[クリッカブルマップ作成手順]
という手順になる.
1)WebMap<http://www.city.net/cnx/software/webmap.html>で,マップを作成する.
2)MapServe<http://www.spub.ksu.edu/other/machttp_tools/mapserve/mapserve.html>の設定をする.
3)HTMLファイルを設定する(WebSTARでアクションを設定したり,InterServer Publisherを使用する場合には,HTMLファイルの記述方法が簡単になる).