ITパスポート 2013年 春期 問77
問題文
Webページの来訪者数カウンタなどのように、訪問者が訪れるごとに新たなページを生成する機能を実現できる仕組みはどれか。
選択肢
ア:CGI(正解)
イ:cookie
ウ:HTML
エ:SQL
🔒 解説は解答すると表示されます
CGIによる動的ページ生成【ITパスポート解説】
正解の理由
正解は選択肢 ア のCGIです。
CGI(Common Gateway Interface:ウェブサーバと外部プログラムをつなぐ仕組み)は、ブラウザからのリクエストを受けてサーバ側でプログラムを実行し、その結果として新しいHTMLページを動的に作成して返すことができます。来訪者数カウンタでは、訪問のたびにプログラム側でカウントを増やし、その値を反映したページを生成して返すため、まさにCGIの役割に当てはまります。
CGI(Common Gateway Interface:ウェブサーバと外部プログラムをつなぐ仕組み)は、ブラウザからのリクエストを受けてサーバ側でプログラムを実行し、その結果として新しいHTMLページを動的に作成して返すことができます。来訪者数カウンタでは、訪問のたびにプログラム側でカウントを増やし、その値を反映したページを生成して返すため、まさにCGIの役割に当てはまります。
- 「新たなページを生成する」=サーバ側で処理して応答を作る、という動作が必要。
- CGIはそのための典型的な仕組みです。
解法ステップ
- 問題文のキーワードを確認:「訪問者が訪れるごとに新たなページを生成する」=動的にページを作る仕組みを探す。
- 各選択肢の役割を短く思い出す:
- CGI(ウェブサーバと外部プログラムをつなぐ仕組み)→ サーバでプログラム実行、動的ページ生成が可能
- cookie(ウェブブラウザに保存される小さなデータ)→ クライアント側に情報を保持
- HTML(HyperText Markup Language:ウェブページを記述する言語)→ ページの構造・表示を記述(静的)
- SQL(Structured Query Language:データベースを操作する言語)→ データの検索・更新を行う言語(表示はしない)
- 「動的にページを作る」という条件に合うものはサーバ側でプログラムを動かせる仕組み、すなわち ア(CGI)と判断する。
選択肢別の誤答解説
- ア:CGI(Common Gateway Interface:ウェブサーバと外部プログラムをつなぐ仕組み)
→ 正解。リクエストごとにプログラムを実行して、動的なHTMLを生成できる。カウンタの保存先(ファイルやデータベース)に値を書き込み、現在の値を埋め込んだページを返す、といった実装が可能。 - イ:cookie(ブラウザに保存される小さなデータ)
→ 誤り。cookieはユーザの端末(クライアント)に短い情報を保存する仕組みです。訪問者の識別や設定の保存には使えますが、「サーバ側で新しくページを生成する」機能そのものではありません。 - ウ:HTML(HyperText Markup Language:ウェブページを記述する言語)
→ 誤り。HTMLはページの構造や表示を記す言語で、単体では訪問ごとの処理やカウント更新などの「動的処理」はできません。サーバ側の処理やスクリプトと組み合わせる必要があります。 - エ:SQL(Structured Query Language:データベースを操作する言語)
→ 誤り。SQLはデータベースへの問い合わせや更新を行う言語です。カウンタの値を保存・取得するために使えますが、SQL自体がウェブページを生成するわけではありません。ページ生成はサーバ側プログラム(例:CGI)が行います。
よくある誤解
- 「cookieがあれば訪問者ごとにページを作れる」
→ cookieは訪問者の情報を端末に保存するだけです。ページの生成やサーバ上のカウント更新はできません。 - 「HTMLが動的ページを作る言語だ」
→ HTMLは表示のための言語で、動的に値を変えるにはサーバ側(CGI/PHPなど)やクライアント側のスクリプト(JavaScript)との連携が必要です。 - 「SQLがそのままページを返す」
→ SQLはデータ操作言語です。データを取ってきた後に、その結果をHTMLに組み立てて返すのはサーバプログラムの役割です。
補足コラム
近年はCGIの代わりに、より便利な仕組みやフレームワークがよく使われます。たとえば:
- PHP(サーバサイドスクリプト):HTMLに埋め込んで動的ページを作ることが多い。
- PythonのWSGI(Web Server Gateway Interface):CGIの後継的な役割を果たすサーバとの接続方式。
- Node.js(サーバ上でJavaScriptを動かす環境):非同期処理を得意とし、動的サイトでよく使われる。
これらも「サーバ側で処理して動的なページを返す」点ではCGIと同じ目的を果たします。来訪者数カウンタの実装パターンは主に次のどれかです: - ファイルに数値を書き込む(簡単だが同時アクセスに弱い)
- データベースに保存する(堅牢、安全) — このときSQLはデータ操作に使う
- クラウドのデータストアやキャッシュを使う(高速)
簡単なイメージ(擬似コード、Python風):
# 受け取ったリクエストでカウントを増やし、HTMLを返すイメージ
count = read_count_from_db() # SQLを使って値を取得
count += 1
write_count_to_db(count) # SQLで更新
html = f"<html><body>訪問者数: {count} 回</body></html>"
return_html_response(html) # サーバが返す
この一連の処理を呼び出す仕組みがCGIや他のサーバサイド技術です。
FAQ
Q1: cookieを使えばカウンタは作れませんか?
A1: cookieはユーザごとに情報を保存できますが、全体の訪問者数(サイト全体のカウント)を正確に管理するにはサーバ側で集計する必要があります。cookieは重複訪問の判定などの補助には使えます。
A1: cookieはユーザごとに情報を保存できますが、全体の訪問者数(サイト全体のカウント)を正確に管理するにはサーバ側で集計する必要があります。cookieは重複訪問の判定などの補助には使えます。
Q2: CGIは今でも使われていますか?
A2: はい。ただし、古い方式のCGIは性能面での問題があり、より高性能なフレームワークや仕組み(PHP、WSGI、Node.jsなど)がよく使われます。役割(サーバで処理して応答を作る)は同じです。
A2: はい。ただし、古い方式のCGIは性能面での問題があり、より高性能なフレームワークや仕組み(PHP、WSGI、Node.jsなど)がよく使われます。役割(サーバで処理して応答を作る)は同じです。
Q3: SQLを知らないとカウンタは組めませんか?
A3: データベースを使うならSQLの基本は役立ちますが、ファイルベースの簡単な実装も可能です。実務的にはデータベース+SQLの組み合わせが多いです。
A3: データベースを使うならSQLの基本は役立ちますが、ファイルベースの簡単な実装も可能です。実務的にはデータベース+SQLの組み合わせが多いです。
関連キーワード: 動的ページ生成、サーバサイド、クライアントサイド、HTTP、カウンタ、ウェブプログラミング、CGI、cookie、HTML、SQL、データベース

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

