Web サーバでクライアントからの要求に応じて適切なプログラムを動作させるための仕組みに CGI がある。CGI を経由して実行されるプログラムを作成できるスクリプト言語はどれか。
平成24年度 春期 ITパスポート試験 問55
この問題の解説と、これまでの解答の記録です。
問 55
不正解ア
CASL は、情報処理技術者試験のために定められた仮想的な計算機 COMET 用のアセンブラ言語であり、試験の中でプログラムの基本的な動作原理を学ぶための教育用言語である。実在の Web サーバ上で動作する処理系があるわけではなく、そもそもスクリプト言語ではなく機械語と一対一に対応するアセンブラ言語なので、CGI で呼び出すプログラムを書く言語には該当しない。
不正解イ
Fortran は、数値計算や科学技術計算を目的として作られた歴史の古いプログラム言語で、ソースコードをコンパイルして実行形式を作ってから動かすコンパイラ型言語である。行列演算や数式記述に向く一方、ソースをそのまま逐次実行するスクリプト言語ではないため、この設問が求める「CGI 経由で実行されるプログラムを作成できるスクリプト言語」には当てはまらない。
- ウ
正解 正解はウ「Perl」。CGI (Common Gateway Interface) は、Web サーバがクライアントからの要求を受け取ったときに、サーバ上の外部プログラムを起動して処理させ、そのプログラムが標準出力に書き出した結果を HTML などの応答としてクライアントへ返すための取決め (インタフェース仕様) である。CGI 自体はプログラミング言語ではなく「サーバと外部プログラムの受渡しのルール」なので、そのルールに従って入出力できる言語であれば何で書いてもよいが、実際には要求パラメータの解析や応答テキストの組立てといった文字列処理が中心になるため、コンパイル不要で手軽に書き換えられるスクリプト言語が使われる。Perl は正規表現によるテキスト処理に非常に強く、実行前のコンパイル作業なしにソースをそのまま実行できるインタプリタ型のスクリプト言語であり、CGI プログラムを記述する言語の代表格として長く用いられてきた。したがって、CGI 経由で実行されるプログラムを作成できるスクリプト言語はウの Perl である。なお Perl のほかに PHP、Python、Ruby なども同じ用途に使われる。
不正解エ
SQL は、関係データベースに対して表の定義、データの検索・追加・更新・削除、アクセス権の設定などを指示するためのデータベース言語 (問合せ言語) である。データベース管理システム (DBMS) に問い合わせを送るための専用言語であって、条件分岐や繰返しを組み立てて一つのアプリケーションを構成するための汎用のスクリプト言語ではない。CGI プログラムの中から SQL を発行してデータベースを利用することはあるが、CGI プログラムそのものを SQL で作成するわけではない。
- CGI の定義 — Web サーバがクライアントの要求に応じてサーバ上の外部プログラムを起動し、その出力を応答として返すためのインタフェース仕様。CGI は言語ではなく受渡しの約束事であり、動的な Web ページを実現する古典的な仕組みである。
- スクリプト言語かどうかで選択肢を仕分ける — Perl・PHP・Python・Ruby・JavaScript などはコンパイルなしに実行できるスクリプト言語、Fortran や C はコンパイラ型言語、CASL はアセンブラ言語、SQL はデータベース言語。言語の分類を押さえておけば言語名を問う問題は確実に解ける。