3部 CGI リファレンス

製作を始める前に

インターネットの基礎知識

知らないでは済まされないインターネット

インターネットの仕組みはとてもシンプルです。どのようにリクエストを出して、どのように返答するか、それがインターネットで最も重要といえる規格です。この規格がオープンだったからこそ、様々な機器を接続することができ、インターネットが普及しました。

さまざまなコンピュータが接続されるインターネットでは、違う種類のコンピュータ同士が会話できるような共通の手続きと約束事、すなわち『プロトコル』というものが必要です。プロトコルにはいろいろな種類がありますが、特に『TCP/IP』と呼ばれる規格がもっとも重要です。ブラウザやメールなど、インターネット上にあるサービスのほとんどがTCP/IPを利用しています。

インターネット
(-Internet)通信プロトコルTCP/IPにより、全世界のネットワークを相互に接続したコンピュータネットワーク。
プロトコル
(-protocol)コンピュータ同士が通信を行うための、共通の仕様。
TCP/IP
(-Trancemission Control Protocol/Internet
Protocol)コンピュータ同士が通信するためのプロトコルセット。

爆発的な人気のワールド・ワイド・ウェブ

インターネットのサービスといえば、最初のころは『eメール』『FTP』などのサービスが中心でしたが、それらすべてのサービスを利用できて、さらに新しいことができるサービスが誕生しました。それが、『ワールド・ワイド・ウェブ』(WWW)です。ウェブは雑誌や新聞と同じように、写真や文章で様々な情報を伝えることができます。さらに、『ハイパーリンク』を使ってほかのページへのナビゲーションを利用することができます。

ウェブを楽しむためのツールが『ブラウザ』で、このソフトウエアはウェブ用のドキュメントを読み込んで、それを翻訳してから表示します。有名なブラウザには、皆さんご存知のインターネット・エクスプローラーやネットスケープ・ナビゲーターなどがあります。
ウェブをエンジョイするのにブラウザが必要なように、ウェブをサービスするには『ウェブサーバ』が必要です。ウェブサーバの主要な機能は、ブラウザからリクエストのあった『URL』を解釈して、適切なデータをブラウザに送信することにあります。このように、ウェブサーバとブラウザがうまく連携して、ウェブサービスを提供しています。

eメール
コンピュータ間で文字メッセージをやり取りするシステム。
FTP
(-File Transfer Protocol)
インターネットなどでファイルを転送するときに使われるプロトコル。
ワールド・ワイド・ウェブ
ワールド・ワイド・ウェブ(-World Wide Web)
「世界中に張り巡らされたクモの巣」の意。インターネット標準的のドキュメントシステム。ウェブ用のドキュメントには文章以外にも、画像や音声、ハイパーリンクを埋め込むことができる。
ハイパーリンク
他の文書や画像などへの参照機能。
ブラウザ
ウェブを閲覧するためのソフトウェア。
ウェブサーバ
ウェブを公開するためのサーバソフトウェア。
URL
Universal Resource Locatorの略。
ウェブのアドレス。

ユーザの要望はCGIで解決

ウェブ上で公開されているホームページのほとんどは、『HTML』(ハイパー・テキスト・マークアップ・ランゲージ)と呼ばれる言語で記述されています。HTMLは文書の構造や見栄えを決定するための言語で、画像や音声、他の文書へのハイパーリンクなどを埋め込むこともできます。

HTMLの詳しい詳細はHTML講座をご覧ください。

HTMLと対になってホームページで使われるのが 『CGI』プログラムです。CGIを利用して作られたホームページは、文字情報や画像を表示するだけではなく、ユーザのリクエストによって処理を決定することもできます。CGIを利用すれば、ユーザがチョイスした商品をショッピング・カートに入れたり、BBSチャットを設置したり、ランダムに情報を表示するといったことが可能になります。

用語
HTML
ハイパー・テキスト・マークアップ・ランゲージ(-HyperText Markup
Language)の略。
ウェブ用のドキュメントを記述するためのマークアップ言語。文字の飾りやレイアウト、さらに画像や音声などを埋め込むこともできる。
CGI
Common Gateway Interfaceの略。
Webサーバが、Webブラウザからの要求に応じて、プログラムを起動するための仕組み。
BBS
決められたテーマで、意見の交換や質問などをするインターネット上のコミュニティースペース
チャット
インターネット上でリアルタイムに会話できるコミュニティースペース

CGI の基礎知識

ダイナミックドキュメントが表示されるまでの流れ

掲示板やチャットを引き合いに出すまでもなく、CGIを使えば、対話的なホームページの作成が可能になります。ウェブで公開できるのは、あらかじめ用意しておいたドキュメントだけでなく、ユーザの入力に基づいたダイナミックドキュメントを生成することができるようになります。ダイナミックドキュメントとは、ユーザのリクエストに応じてその場で自動的に作成されるファイルのことで、HTMLに限らずテキスト、画像およびオーディオファイルなどが作成可能です。

それでは、ダイナミックなドキュメントが作成されるまでの流れを追っていきましょう。

  1. [ユーザ] がフォームの内容を送信したり、リンクをクリック
    ダイナミックドキュメントが作成されるきっかけは、ユーザがフォームの内容を送信したり、リンクをクリックしたときから始まります。
     
  2. [サーバ] がプログラムを実行
    ユーザが行った操作はサーバに伝えられ、リクエストされたアドレスがCGIプログラムであれば、ファイルの内容を返す代わりにそのプログラムを実行します。
    例えば「http://www.rfs.co.jp/samrt.cgi」のようにHTMLファイルではなくプログラムがリクエストされた場合、サーバはプログラムの内容をブラウザに表示させる代わりに、プログラムを実行させます。
     
  3. [プログラム] はユーザのリクエストを受け取り、その返答をサーバに出力
    実行されたプログラムはユーザのリクエストを処理し、ブラウザに表示させたい内容をサーバに出力します。
     
  4. [サーバ] は出力された内容を読み取り、ブラウザに転送
    サーバは出力された内容を読み取り、データをブラウザに転送します。
     
  5. [ブラウザ] が受け取ったドキュメントを表示
    最後にブラウザが読み取ったデータを整形してユーザ画面に表示させます。

以上のように、ユーザのリクエストとプログラムの返答がサーバを中継してやりとりされ、ブラウザ上にダイナミックなドキュメントが表示されているのですが、実際の製作作業はもっとシンプルです。ブラウザにデータを送ったりプログラムを実行させるのはサーバの仕事ですから、プログラミングに必要な工程はユーザのリクエストの処理と、その返答の出力です。

コモン・ゲートウェイ・インタフェイス略してCGI

よく間違われるのですが、CGIはプログラム言語の名前ではありません。CGIは、コモン・ゲートウェイ・インターフェイス(Common Gateway Interface)の略で、ウェブサーバと、プログラム、またはサーバアプリケーションとの間で通信を実現させるための規格です。といってもあまりに漠然としていてイメージが湧かないと思いますので、具体例でCGIの役目を見てみましょう。

たとえば、ホームページ上からデータベースにある情報を検索する場合です。まず最初は、ユーザの検索条件を受けたサーバがプログラムを起動します。次に、プログラムはその検索条件をもとにしてデータベースへ問い合わせを行い、結果をサーバに渡します。そして、最終的に結果がユーザのブラウザに表示されることになります。

このように「サーバ」-「プログラム」-「アプリケーション(例ではデータベース)」間で通信を行うには、インターネットの仕組みと同様に共通の規格があれば便利です。そしてその規格が、CGIというわけです。

CGIプログラミングで定番のPerl言語

CGIは特に言語を指定していないので、対応している言語であればどのような言語でも利用することが可能です。中でももっとも多く利用されているのがPerl言語です。Perlはテキスト関係の処理が得意ですので、ほんの数行でデータの保存や検索を簡単に実現させることができます。

『コンパイラとインタプリタ』 プログラムを組むのが初めてで、そのヴァージンホストをつとめるのが CGIだという人は、後々の理解を深めるためにもインタプリタ言語とコンパイラ言語との違いを理解しておくことをお薦めします。

コンパイラとインタプリタの違いは明確です。コンパイラとは、CPUに命令する機械語、もしくは人間が理解しやすいように設計された言語を機械語に翻訳して、実行形式のファイルを出力する開発環境のことです。この翻訳作業をコンパイルと呼びます。もうひとつ別の方法としてインタプリタがありますが、これはプログラムを実行する際に機械語に翻訳します。つまり両者の違いは、あらかじめ機械語になっているか、プログラムの実行と同時に機械語に翻訳されるかにあります。

コンパイラ言語の最大の恩恵は、なんといってもプログラムを高速に処理できることにあります。ウインドウズやマッキントッシュのアプリケーションのほとんどはC言語やPascal言語などのコンパイラ言語で作られています。その代わり、プログラムの変更や修正のたびにコンパイルする必要があり、この作業は大きなアプリケーションになればなるほど時間がかかります。
インタプリタの場合は、機械語に翻訳しながらプログラムを処理していくということもあり、コンパイラで作成したプログラムよりも遅くなります。その代わり、時間のかかるコンパイル作業は必要ありません。また、機械に直接命令するわけではないので、プログラムコードをまったく修正することなく様々な種類のマシンで利用することも可能です。

インターネットで使われているのは、サーバサイドではPerlやPHP、ブラウザ側ではJavaScriptといったように、インタプリタ言語がほとんどです。

用語
コンパイラ
CPUを直接操作する機械語、もしくはプログラミング言語で記述されたドキュメントを、コンピュータが実行できる形式に変換し、実行形式のファイルを出力する開発環境のこと。
コンパイル
プログラミング言語で記述されたドキュメントを、コンピュータが実行できる形式に変換する作業。
インタプリタ
プログラミング言語で記述されたドキュメントを、コンピュータが実行できる形式に変換し、そのままプログラムを実行するソフトウエア。

関連記事