基本情報 平成30年度 秋期 問35:テクノロジ系に関する問題
Web サーバにおいて, クライアントからの要求に応じてアプリケーションプログ ラムを実行して, その結果を Web ブラウザに返すなどのインタラクティブなページ を実現するために, Web サーバと外部プログラムを連携させる仕組みはどれか。
- aCGI正答
- bHTML
- cMIME
- dURL
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは a「CGI」 です。
普通のホームページは「あらかじめ作っておいた紙を見せるだけ」。でも「アンケート結果をその場で集計して見せる」みたいに、その人専用の答えを返したいときに、サーバの裏でプログラムを動かす仕組みが必要です。それがCGI(Common Gateway Interface)。
👉 覚え方:CGI=サーバの裏でプログラムを動かす橋渡し。
ほかの選択肢:b HTML=Webページを書く言葉/c MIME=メール添付などのデータ形式の規格/d URL=Webページの住所。
なぜこれが正解か
正解は a。CGI(Common Gateway Interface)は、Webサーバがクライアント要求に応じて外部プログラム(Perl、Python、Shellスクリプト等)を起動し、その実行結果を動的にWebブラウザへ返すインタフェース規約。動的Webページ(掲示板・問い合わせフォーム等)の元祖的技術。
各選択肢の解説
- b HTML:Webページのマークアップ言語。静的な構造記述。
- c MIME:メールやHTTPで多様なメディアタイプ(text/html、image/png等)を扱うデータ形式規約。
- d URL:リソースの所在指定書式。`https://example.com/path` の形式。
覚え方・ひっかけ注意
「Gateway=サーバとプログラムの橋渡し」と理解する。現代はCGIからFastCGI/WSGI/ASGI/サーブレット等の常駐型に進化したが、概念としての「動的ページ生成の橋渡し」はCGIが起源。試験ではWebの動的処理=CGIと結びつけて答える。
理論的背景
CGIはRFC 3875で規定。リクエスト時にサーバが子プロセスをfork/execし、環境変数(REQUEST_METHOD、QUERY_STRING、CONTENT_LENGTH等)で入力を渡し、標準出力でレスポンスを返す。毎リクエストで新プロセス起動するためオーバヘッドが大きく、高負荷サイトには不向き。これを改善するのが常駐型実装。
実装の進化
- FastCGI:プロセスを常駐させソケット通信で高速化。Nginx+PHP-FPMなど現役。
- mod_perl/mod_php:ApacheにインタプリタをDSO組込み。
- WSGI(PEP 3333):Pythonの標準WebサーバI/F(GunicornやuWSGI)。
- ASGI:WSGIの非同期版(FastAPI、Django Channels)。
- サーブレット/JSP:JavaのWeb実行環境(Tomcat)。
- Node.js:イベントループでCGI概念を不要にし、サーバ自身がHTTP応答を返す。
実務での使われ方
レガシーシステム(cgi-binディレクトリで稼働するPerl/Shell)は今もインフラ系管理画面、ホスティングサービスの簡易動的ページで生存。新規開発ではコンテナ+アプリケーションサーバまたはサーバレス(AWS Lambda、Cloud Run)が主流。
試験での位置づけ
基本情報のWeb技術・ネットワーク分野で頻出。応用情報ではセッション管理(Cookie、サーバサイドセッション)、REST/GraphQL、SPAとSSRといったモダン技術と並べて出題される。
選択肢の発展補足
MIMEはRFC 2045〜2049でメール用に策定後、HTTPでも `Content-Type` ヘッダに流用された。これによりHTTPは画像・音声・JSON・PDF等あらゆるデータ型を扱える。URLはRFC 3986で構文規定。`scheme://userinfo@host:port/path?query#fragment` という構造を覚えると、HTTPSセキュリティやCORS議論が理解しやすい。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成30年度 秋期 問35/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。