• ベストアンサー

CGIとは結局何なのでしょうか。

CGIの流れというものについて勉強したところ、 サーバがユーザから要求を受けて、 そしてCGIという決まりに従って 外部プログラムを起動し、結果を返してもらい、 またユーザに返す。というものらしいですが… では、結局のところ、CGIという決まりは どういう決まりなのでしょうか。 どなたか教えていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.5

>結局のところ、CGIという決まりはどういう決まりなのでしょうか。 RFC3875という文書で定められています。 http://www.studyinghttp.net/rfc_ja/rfc3875 主要な記述は次の3つの章でしょうか。   3 スクリプトの呼び出し   4 CGI リクエスト   6 CGI レスポンス この文書に定義されている変数やデータ形式を用いて,要求(request)と応答(response)のやりとりができるのであれば, そのWebサーバはCGIに対応していると呼ばれますし, そのサーバ側プログラムはCGIプログラムと呼ばれます。 用いるプログラム言語については規定されていませんから,どんなプログラム言語で書かれていようとRFC3875の仕様を満たすのであればCGIプログラムです。

その他の回答 (5)

  • gon987
  • ベストアンサー率16% (53/312)
回答No.6

Apacheで言えばmod_cgi.soを介して呼び出されるシステム。 PerlやC言語などまたPHPもCGIモードで動かせる 逆にPerlもPHPもCGIモードではなくてWebサーバのモジュールとして直接呼び出すことができる。

  • nijjin
  • ベストアンサー率27% (4811/17773)
回答No.4

プログラムの一種です。 テキストの書式を取った形でかつインターネットを主体としています。 よく使われるものの一つはBBS(掲示板)です。

  • hisappy
  • ベストアンサー率46% (184/392)
回答No.3

ここで言うサーバとは、ユーザからの要求を受け付けるマシンとしてのサーバもありますが、 具体的にはWEBサーバの事を指しています。 サーバには他にも、認証サーバとかデータベースサーバとか ファイルサーバとかプロキシサーバなどなどがあります。 WEBサーバ自体には 狭義にはユーザからの要求に対応するHTMLファイルを送り返すという処理しか行いません。 そこで、同じHTMLなんだけれども何かをきっかけに 表示内容を変更する処理が行えるようにすると、 ファイルやデータの管理がやりやすくなる場合があります。 実際、この質問サイトも「質問タイトル、質問内容、回答内容」などのデータを 質問IDをキッカケ(キー)としてデータ管理することで、 見た目の各質問毎のHTML自体は1枚分で処理されています。 その処理を行う言語にPHPやPerlやASP、Javaなどなどがあり それを広義に「CGI処理部」と呼ぶこともあります。 質問文にある「CGIという決まり」はユーザからの要求に対応した CGI処理部を呼び出すというWEBサーバの拡張部分の辺りをいうのでしょう。 ただ、そこで具体的に何が行われているのか、どういう設定が絡んでくるのか といった内容までは知らないので、私からの説明は失礼ながらこの辺りにて。

  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

CGI=Common Gateway Interfaceはクライアントからサーバに対して リクエスト(要求)が送られたときにサーバがある決まりに従って プログラムを実行するための仕組みなどのことです。 この決まりに関しては事細かく規定されていますけど、仕様書とか しっかりみないと分からないでしょうね。 サーバはこの決まり(仕様)に従ってプログラムを実行することによって CGIを実行できます。 CGIの実行機能はサーバ自体が持っていることもあればサーバの モジュールや拡張機能として実装されることもあります。 基本的にはそのサーバコンピュータ上で動作するプログラムや スクリプトであれば言語は問いませんが、サーバプロセス内で プログラムを実行しているため、プログラム自体の実行スピードや 安定性などに大きく影響を受けます。 言語仕様が簡単で更にすぐに実行できて手軽であり、CGIとして 実行するのにうってつけの機能を標準で実装しているためCGIの 言語としてよくPerlが利用されるため、CGI=Perlと思っている人も いますがこれは間違いです。 Cなどでコンパイルした実行ファイルやUNIX/Linux系ならシェル、 Winならバッチなどでも作成することは不可能ではありません。 (実用性があるかどうかなどは別の話) ただ、補足説明なしにCGIといった場合は大抵、Perl CGI(Perlで実装 されたCGI)を指します。 似たような技術にPHP,ASP,JSPなどがあります。 PHPはCGIモードとして動作させることもできます。

参考URL:
http://ja.wikipedia.org/wiki/Common_Gateway_Interface
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

CGIっていう規則性が無かったらどうデータを受け取るのか判らなくなるんじゃない? そして返すにもただデータを渡してもだめだから どう返すべきであるかというのを定めて置いた方が良い事になるよね? jpgという拡張子ならjpeg画像だという規則 と同じ。(実際には中にjpegですよーっていう印が有るんだけど) それが無かったらそれが何のデータでどう処理するのか 全くわからなくなるでしょ それを件の受け答えに関して定めた物の事。

mogesato
質問者

お礼

なるほど、つまりhttpプロトコルのようなものですか。 ちょっとまた考えてみたいと思います。 ありがとうございました。

関連するQ&A