基本情報技術者 2016年 秋期 午前(科目A) 問13
問題文
3層クライアントサーバシステム構成で実現したWebシステムの特徴として、適切なものはどれか。
選択肢
ア:HTMLで記述されたプログラムをサーバ側で動作させ、クライアントソフトはその結果を画面に表示する。
イ:業務処理の変更のたびに、Webシステムを動作させるための業務処理用アプリケーションをクライアント端末に送付し、インストールする必要がある。
ウ:業務処理はサーバ側で実行し、クライアントソフトはHTMLの記述に従って、その結果を画面に表示する。(正解)
エ:クライアント端末には、サーバ側からのHTTP要求を待ち受けるサービスを常駐させておく必要がある。
3層クライアントサーバシステムの特徴 +【午前2 解説】
正解の理由
選択肢ウは「業務処理はサーバ側で実行し、クライアントソフトはHTMLの記述に従って、その結果を画面に表示する」と述べています。これは3層(プレゼンテーション層=ブラウザ、アプリケーション層=Webサーバ/アプリケーションサーバ、データ層=DB)の典型的な役割分担を正確に表現しています。クライアントは主に表示とユーザー操作を担当し、ビジネスロジックはサーバ側に置くため、保守性・スケーラビリティ・セキュリティの観点で優れています。よってウが正解です。
解法ステップ
- 問題の前提「3層クライアントサーバ」を思い出す:プレゼンテーション、アプリケーション、データの3層。
- 各選択肢を層の役割に照らして評価する:プレゼンテーション層は表示/入力、アプリケーション層は業務処理、データ層は永続化。
- クライアントの役割に「インストール」を必要とするか、あるいはサーバ側実行が主かを確認する。
- HTTPの基本(クライアントがリクエストを発行し、サーバが応答する)を踏まえて選ぶ。
選択肢別の誤答解説
- ア: 「HTMLで記述されたプログラムをサーバ側で動作させる」は誤り。HTMLは表示用のマークアップであり、サーバ側で動作するのはサーバサイドスクリプト(PHP, JSP等)やアプリケーションコードである。表現が不正確で誤解を招く。
- イ: 業務処理変更のたびにクライアントにアプリを配布・インストールする必要がある、というのはリッチクライアントやデスクトップアプリのモデルであり、Web(3層)モデルの利点と真逆。保守性・配布の容易さが失われる。
- ウ: 業務処理はサーバ側で実行し、クライアントソフトはHTMLの記述に従って、その結果を画面に表示する。 → 正解。3層の役割分担を正しく述べている。
- エ: 「クライアント端末にサーバ側からのHTTP要求を待ち受けるサービスを常駐させる必要がある」は誤り。通常HTTPはクライアントがリクエストを送る方式であり、クライアントはサーバからの受動的なプッシュを常駐サービスで待つ必要はない(ただしWebSocketなどの例外技術はあるが、問題の文脈では該当しない)。
よくある誤解
- 誤解1:HTML自体が「サーバ側で動くプログラム」であると考える。HTMLはマークアップ言語で、動作ロジックはサーバ側(スクリプトやアプリケーションコード)やクライアント側のスクリプト(JavaScript)で実装される。
- 誤解2:業務変更ごとにクライアントにアプリを配布・インストールする必要があると思い込む。Webアプリはサーバ側で更新すればクライアントはブラウザで即座に最新版を利用できるのが利点。
- 誤解3:HTTPはサーバが常時クライアントの要求を待つのではなく、クライアントがリクエストを送る(リクエスト/レスポンス)プロトコルであることを忘れがち。
補足コラム
- 3層アーキテクチャの利点:開発と保守の分離、スケーラビリティ(アプリ層を水平分散)、セキュリティ(重要ロジックをサーバ側に集約)があります。
- 現代のWebでは、プレゼンテーション層にJavaScriptフレームワーク(SPA)が入り込むことが多く、クライアント側でも動的処理を担いますが、ビジネスロジックの中核は依然サーバ側に置く設計が一般的です。
- プッシュ型通信(WebSocket、Server-Sent Events)は例外的にサーバからクライアントへリアルタイム送信が可能ですが、これもクライアント側に常駐サービスをインストールする概念とは異なります。
FAQ
Q1. HTMLとサーバサイドスクリプトの違いは何ですか?
A1. HTMLは文書構造と表示を定義するマークアップ言語であり、サーバサイドスクリプト(PHP, JSP, Python等)はサーバ上で動作して動的にHTMLやデータを生成するプログラムです。
A1. HTMLは文書構造と表示を定義するマークアップ言語であり、サーバサイドスクリプト(PHP, JSP, Python等)はサーバ上で動作して動的にHTMLやデータを生成するプログラムです。
Q2. 3層でクライアント側に全く処理がないのですか?
A2. 完全にないわけではなく、入力検証やUI制御などの軽微な処理はクライアント(JavaScript等)で行いますが、主要な業務ロジックはアプリケーション層に置きます。
A2. 完全にないわけではなく、入力検証やUI制御などの軽微な処理はクライアント(JavaScript等)で行いますが、主要な業務ロジックはアプリケーション層に置きます。
Q3. クライアントがサーバのHTTP要求を待ち受ける必要があるケースは?
A3. 通常は不要です。リアルタイム双方向通信が必要な場合はWebSocketなどを用いるが、これも専用サーバとブラウザ間のプロトコルで実現し、クライアントに常駐サービスを恒常的にインストールするような設計とは異なります。
A3. 通常は不要です。リアルタイム双方向通信が必要な場合はWebSocketなどを用いるが、これも専用サーバとブラウザ間のプロトコルで実現し、クライアントに常駐サービスを恒常的にインストールするような設計とは異なります。
関連キーワード: 3層アーキテクチャ、プレゼンテーション層、アプリケーション層、データ層、HTTP、Webアプリケーション、サーバサイド、ブラウザ、保守性、スケーラビリティ

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

