インターネット活用塾 2.CGI


CGIって何?(CGIの概要)

 CGIは「Common Gateway Interface」の略でPerlやC、C++、VBなどで開発されたソフトウェアです。(Perlとは限りませんが、このサイト上ではPerlを中心に解説してます)
 CGIには掲示板や注文フォーム、カウンタ、ショッピングカートなど多種多様のソフトがあり、このようなソフトウェアを使用することによりインタラクティブ(双方向性)を持つことができます。

 また、JavaScriptやFLASHなどもWEBサイトで頻繁に使用しています。
これらのソフトはどのように動作しているのかを知っておくことが必要です。
1.CGIで出来ること
 ・CGIは以下の作業を行うことが出来ます。
 (1)PCやサーバーからデータを受け取る
 (2)データ処理(加算、減算やマッチング、)
 (3)データ制御(条件分岐、繰り返しなど)
 (4)ディレクトリやファイルの処理(ディレクトリ作成・削除、ファイルの作成、データ保存など)
 (5)データベースとの接続
 (5)ネットワークへの接続

 ・逆に出来ないことや適さないこともあります。
 (1)アクティブな処理(CGなどのアクティブな操作)
 (2)動作を続けること(自動実行、
   2.ホームページの閲覧、入力等の違い
 CGIはサーバーサイドで動作しています。

(1)ホームページを見る時のデータの流れは以下のようになっています。
ホームページを見る時のデータの流れ
PC
(ブラウザ)

このページを見たい
WEBサーバー


HTMLデータ
このデータの流れでは、PCから画像や文字を見ることはできますが、PCからデータを入力することはできません。

(2)JavaScriptやJavaアプレット、FLASHなどは以下のようになっています。
ホームページを見る時のデータの流れ
PC
(ブラウザ)

このページを見たい
WEBサーバー

JavaScriptを実行
HTMLデータを出力


閲覧

HTMLデータ
JavaScript
JavaScriptなどはWEBサーバーからダウンロードし、PC上で実行します。
PC単独の動作に適した計算やアクティブな動作に適していますが、サーバー上にデータを保存することはできません。
つまり、プログラムが処理した結果を他のユーザーと共有することができません。

(3)CGIは以下のような流れになります。
CGIのデータの流れ
PC
(ブラウザ)

データを送信
WEBサーバー
CGIを実行
データ処理
HTMLデータを出力


CGIが出力したHTMLデータ
CGIはWEBサーバーで実行されます。
実行する度に実行結果をPCに送信して閲覧しますので、アクティブな動作には適していませんが、サーバー上にデータを保存することができ、プログラムの処理結果を複数のユーザーが使用することができます。

また、CGIはJavaScriptなどを出力したりFLASHなども使用することが可能です。
CGIとJavaScriptを同時に使用すると以下のような流れになります。
CGIのデータの流れ
PC
(ブラウザ)

データを送信
WEBサーバー
CGIを実行
データ処理
HTMLデータを出力

JavaScriptを実行
HTMLデータを出力


閲覧

CGIが出力したHTMLデータ
JavaScript、FLASHなど
これでアクティブに動かしたいものはアクティブに!複数のユーザーで共有したいデータも共有できるようになりました。

3.CGIプログラム
(1)CGIはスクリプト言語で開発されています。
 コンピューターは人間が理解できる言葉をそのまま理解して実行することができません。

 どのプログラムも人間が理解できるソースで作成し、作成したソースをコンピュータに理解できる内容に修正して実行します。
 C言語やJAVAで開発した場合、コンパイルして実行用ソフトを作成しますので、そのまま実行することが出来ます。

 PerlによるCGIやPHP、ASPなどはスクリプト言語と言われ、人間が理解できるソースそのままをサーバーに入れておきます。
 ○○.cgiを実行する命令が出されると、実行命令が出される度にサーバーでコンパイルし、実行しています。

(2)動作の違い
 C言語やJAVAで開発されたソフトはコンパイルされていますので、そのまま実行することができ、高速処理が可能です。
 しかしながら、コメントや改行など、人間が理解できるように書き込まれた内容がコンパイルによって削除されてしまいますので、コンパイルされたソフトをソースに戻すことは出来ません。
 そのため、ソフトの動作を加工するためにはソフトのソースを取り寄せる必要があります。

 スクリプト言語はソースそのものですので、修正が容易です。
また、開発過程でも「ソースの書き込み→コンパイル→実行」の流れを「ソースの書き込み→実行」とコンパイルを省略することができ、開発速度も向上しています。

<開発言語?>
 C言語:コンパイルして実行ソフトを作成していますので、高速処理が可能ですが、OSに対する依存度が高いため、OS毎に開発する必要があります。
 Java:C言語と同様にコンパイルして実行ソフトを作成しますが、仮想ハードを想定して開発していますので、OSとは無関係に開発することが出来ます。
 PHP:HTML内にスクリプトを書き込み、処理結果を埋め込んで出力しています。また、SQL(データベース)に接続しやすい開発言語です。
 ASP:PerlやVBで開発し、PHPのようにHTML内に書き込んで出力しますが、Windowsサーバー専用の開発言語です。
 CGI:Perl又はC言語で開発され、実行するとHTML全体を出力することが出来ます。




© Copy Right 2001 Chama.ne.jp