基本情報技術者 2012年 秋期 午前(科目A) 問13
問題文
3層クライアントサーバシステム構成で実現したWebシステムの特徴として、適切なものはどれか。
選択肢
ア:HTMLで記述されたプログラムをサーバ側で動作させ、クライアントソフトはその結果を画面に表示する。
イ:業務処理の変更のたびに、Webシステムを動作させるための業務処理用アプリケーションを配布し、クライアント端末にインストールする必要がある。
ウ:業務処理はサーバ側で実行し、クライアントソフトはHTMLの記述に従って、その結果を画面に表示する。(正解)
エ:クライアント端末には、サーバ側からのHTTP要求を待ち受けるサービスを常駐させておく必要がある。
3層クライアントサーバシステム構成で実現したWebシステムの特徴【午前2 解説】
要点まとめ
- 結論: 3層構成のWebシステムでは業務ロジックをサーバ側(アプリケーション層)で実行し、クライアントはHTMLで結果を表示します。
- 根拠: ロジックをサーバに集中させることでクライアント側の配布を不要にし、HTTPのリクエスト/レスポンスで画面が生成される仕組みです。
- 差がつくポイント: HTMLは表示指示でありプログラムではない点、HTTPはクライアント起点の要求応答でサーバがクライアントに直接要求を送らない点を押さえてください。
正解の理由
選択肢の中で正しいのは ウ です。3層(プレゼンテーション層/アプリケーション層/データ層)において、業務処理(ビジネスロジック)はアプリケーション層のサーバ上で実行され、サーバはその処理結果をHTMLやJSON等の表現で返します。クライアント(Webブラウザなど)は返されたHTMLの指示に従って画面表示を行うのみであり、業務処理を直接実行したり、業務用アプリケーションをクライアントに配布してインストールしたりする必要はありません。したがって「業務処理はサーバ側で実行し、クライアントソフトはHTMLの記述に従って、その結果を画面に表示する」記述が正解となります。
よくある誤解
- HTMLを「プログラム」と誤認する: HTMLは文書・表示のためのマークアップであり、業務ロジックを直接実行するものではありません。
- クライアント側に毎回アプリを配布する必要があると考える: 3層ではアプリケーションロジックをサーバに集約するため、クライアント配布は不要です。
- HTTPはサーバからクライアントへの常時要求であると誤解する: 通常のHTTPはクライアントからのリクエストに対するレスポンス方式で、サーバが勝手にクライアントへ要求を投げるわけではありません(別途プッシュ技術が必要)。
解法ステップ
- 問題文の「3層クライアントサーバ」から層の役割(表示・業務・データ)を想起する。
- 各選択肢が「どの層で処理が行われるか」「クライアントの役割は何か」を照らし合わせる。
- 「HTMLが業務ロジックを実行する」「クライアントへ配布が必要」「サーバがクライアントへHTTP要求を送る」といった誤った前提を含む選択肢を除外する。
- 残ったもの(業務処理をサーバ実行、クライアントは表示)が正解と判断する。
選択肢別の誤答解説
- ア: HTMLで記述されたプログラムをサーバ側で動作させ、クライアントソフトはその結果を画面に表示する。
誤り。HTML自体はプログラムではなくマークアップ言語です。サーバ側でプログラム(スクリプトやアプリ)が動いてHTMLを生成するのは正しいが、「HTMLで記述されたプログラムを動作させる」という表現が不適切です。 - イ: 業務処理の変更のたびに、Webシステムを動作させるための業務処理用アプリケーションを配布し、クライアント端末にインストールする必要がある。
誤り。3層化の目的は業務ロジックをサーバ側に集約してクライアント配布を不要にすることです。イはシンクライアントの利点を否定しています。 - ウ: 業務処理はサーバ側で実行し、クライアントソフトはHTMLの記述に従って、その結果を画面に表示する。
正解。3層構成の典型的な動作を正しく述べています。 - エ: クライアント端末には、サーバ側からのHTTP要求を待ち受けるサービスを常駐させておく必要がある。
誤り。通常のHTTPはクライアントがリクエストを送り、サーバがレスポンスを返す方式であり、クライアント側でサーバからの要求を待ち受ける常駐サービスは不要です(プッシュが必要な場合は別技術)。
補足コラム
3層アーキテクチャは保守性・拡張性・セキュリティの点で有利です。プレゼンテーション層(ブラウザ)は表示とユーザー操作を担当し、アプリケーション層(Web/APサーバ)が業務ロジックを処理してデータ層(DBサーバ)とやり取りします。現代のWebでは、クライアント側でJavaScriptが動作して表示や一部ロジック(バリデーション、非同期更新)を担当するケースも増えていますが、重要な業務ロジックやデータ制御は依然としてサーバ側で行うべきです。また、サーバからクライアントへプッシュ通知が必要な場合はWebSocketやServer-Sent Eventsなどの技術が用いられ、これは通常のHTTPリクエスト/レスポンスとは異なる点に注意してください。
FAQ
Q: HTMLとJavaScriptはどちらが「プログラム」ですか?
A: HTMLはマークアップ言語(構造・表示指示)、JavaScriptはクライアント側で動作するスクリプト言語でありプログラムです。業務ロジックはサーバ側で処理するのが原則です。
A: HTMLはマークアップ言語(構造・表示指示)、JavaScriptはクライアント側で動作するスクリプト言語でありプログラムです。業務ロジックはサーバ側で処理するのが原則です。
Q: サーバからクライアントへデータを送るには必ずクライアント常駐サービスが必要ですか?
A: いいえ。通常はクライアントがリクエストして応答を受け取る形です。リアルタイム性が必要な場合はWebSocket等を利用しますが、それは別の仕組みです。
A: いいえ。通常はクライアントがリクエストして応答を受け取る形です。リアルタイム性が必要な場合はWebSocket等を利用しますが、それは別の仕組みです。
Q: 2層と3層の違いは何ですか?
A: 2層はクライアントとデータベース(またはサーバ)が直接やり取りする形で、業務ロジックがクライアントに分散されやすいです。3層は業務ロジックをアプリケーション層に集約して保守性を高めます。
A: 2層はクライアントとデータベース(またはサーバ)が直接やり取りする形で、業務ロジックがクライアントに分散されやすいです。3層は業務ロジックをアプリケーション層に集約して保守性を高めます。
関連キーワード: 3層アーキテクチャ、プレゼンテーション層、アプリケーション層、データ層、HTTP、HTML、ブラウザ、Webサーバ、アプリケーションサーバ、DBサーバ、ステートレス、WebSocket、クライアントサーバ、MVC、シンクライアント

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

