CGI
出典: フリー教科書『ウィキブックス(Wikibooks)』
メインページ > 工学 > 情報技術 > プログラミング > CGI
CGI(シージーアイ、Common Gateway Interface)とは、ウェブサーバ上で動作するプログラムがウェブページを生成できるようにする仕組みです。CGIプログラムの記述にはPerlなどのスクリプト言語がよく用いられますが、基本的に標準入出力を備えているプログラミング言語であれば(たとえばC言語やシェルスクリプトでも)CGIプログラムを記述することは可能です。
[編集] 概要
CGIとはウェブページでユーザからの入力に応答したり、動的な出力を行ったりするための機構です。CGIの規格は[1]で定められています。ここで動的とはたとえば、ブラウザからリクエストを受け付けた日時をページとして表示させるものも動的なページの一つです。ウィキやブログなども動的なページに含まれます。これに対して静的とはあらかじめ用意してあるHTML等で記述されたドキュメントを動的な変更を行わずに配信することを指しています。
実際にCGIを用いているかどうかは別として、現在インターネット上で大規模、あるいは著名なウェブサイトのほとんどは何らかの動的な仕組みを有していると考えられます。CGIの仕組みを理解することは大規模なデータをインターネット上で出版する技術的な背景を学ぶのと強い関係があると言えます。
CGIが行う動的な作用は主に以下の4要素によって成り立っています。
- 標準入力・標準出力・コマンドライン引数
- 環境変数
- HTTP
- HTMLのFORM要素
本書ではApache HTTP Serverを用いた例を示しますが、ほかにも多くのウェブサーバでCGIが利用可能です。
[編集] CGIプログラムの例
Perlによる単純なCGIプログラムの例です。
#!/usr/local/bin/perl use strict; use warnings; print <<"EOT"; Content-Type: text/html; charset=UTF-8 <!DOCTYPE html> <html> <head> <title>Example Web Page</title> </head> <body> <p>Hello, world!</p> </body> </html> EOT
より高度なCGIプログラムは次のようになります。
#!/usr/local/bin/perl use strict; use warnings; use CGI; my $q = CGI->new; print $q->header( -charset => "UTF-8" ); print $q->start_html( -title => "Example Web Page" ); print $q->p("Hello, world!"); print $q->end_html;