Webアプリ開発事始 第8回

CGIの仕組みを覗く(1)~基本原理とSSIによるアクセスカウンタ 長谷川裕行
有限会社 手國堂

CGIとSSI

CGIでは、「ユーザーの入力を受け取る→プログラムがそれを処理する→結果をクライアントに送り返す」という形で処理を進めます。この仕組みは少し複雑なので、もう少し簡単な仕組みを先に理解しておきましょう。


- 仕組みはSSIの方が単純 -

CGIと似た機能にSSIがあります。SSIは“Server Side Include”の略で、文字通り「サーバー側にプログラムを組み込んで実行する」仕組みです。

SSIとCGIの決定的な違いは、

  SSIはユーザーからの入力を受け取れない

という点です。

そのため、仕組みとしては非常に単純になります。現在の日付や時刻を表示させたり、Webサイトにアクセスした人の件数を数えるアクセスカウンタなど、ユーザーの入力を受け付ける必要のない処理では、SSIの方が簡単です。


- シンプルな処理に向いている -

CGIでは単独のプログラムが実行されます。SSIでも同じように単独のプログラムをWebサーバー側に保存しておき、それを実行させることもできますが、SSIの場合は別プログラムを用いず、実行したい処理をHTMLファイルの中にスクリプトとして記述することもできます。

この場合、プログラムのソースコード自体はHTMLファイルの中に記述されますが、プログラムを実行するのはクライアントではなくWebサーバーの側です。

現在時刻の表示などは、命令文を1行書くだけで実現できます。また、HTMLファイルの中に、別のHTMLファイルの内容を表示させたり、CGIプログラムを実行させることもできます。

日付の表示処理などは、現在ではSSIよりJavaScriptを使った方が簡単でしょう。しかし、Javaを実行できない(あるいは実行できる機能を制限している)ブラウザも存在します※2。サーバーサイドで実行されるSSIなら、ブラウザの設定に関係なくプログラムを実行できます。

※2 特にセキュリティの面から、クライアント・コンピュータのブラウザでJavaやActiveXの実行機能を制限している企業や研究機関も多くあります


- 結果の送信手順が異なる -

HTMLファイルの中にプログラムの実行命令を記述しておくという点は、CGIもSSIも同じです。しかし、処理結果の表示方法が異なります。

CGIでは、CGIを通じて実行されたプログラムが直接Webサーバーに対してHTMLデータを送りますが、SSIではHTMLファイルがブラウザに送られる前にHTMLファイル内に記述されたプログラムが実行され、その処理結果がHTMLファイルの中に書き込まれた状態で、ブラウザに送られます。


図5:SSIによる日付表示



- 目次 -
CGIの基本原理
標準入力と標準出力
入出力の切り替え
CGIとSSI
仕組みはSSIの方が単純
シンプルな処理に向いている
結果の送信手順が異なる
アクセスカウンタの仕組み
あとがき

Copyright © GrapeCity inc. All rights reserved.