メインコンテンツへ
開発技術システム開発技術

Webアプリケーションの3層アーキテクチャ(プレゼンテーション層・ビジネスロジック層・データ層)において、最も適切な責務の分担として正しいものはどれか。

ア.データ層にビジネスロジックを配置し、プレゼンテーション層でSQL文を直接実行する
イ.3層のすべての処理をプレゼンテーション層に集約することで応答速度が最速になる
ウ.プレゼンテーション層はUIの表示とユーザー入力の受付、ビジネスロジック層は業務処理・ルール実行、データ層はデータの永続化と取得を担当する正解
エ.ビジネスロジック層は不要であり、プレゼンテーション層とデータ層の2層で十分

解説

3層アーキテクチャは「レストラン」の仕組み。フロア(プレゼン)はお客様対応、厨房(ビジネスロジック)は調理、食材庫(データ層)は保管。それぞれが専門に徹する!

なぜ ウ が正解か

3層の責務: プレゼンテーション層(UI層): HTML/CSS/JSなどで画面表示、ユーザーの操作を受け付けてビジネスロジック層に伝達。ビジネスロジック層(アプリケーション層): 業務ルール・計算・ワークフロー・バリデーションを処理。データ層(永続化層): DBMS接続・CRUD操作・ORMなど。各層が独立することで: ①変更の影響が限定、②テストが容易、③スケールアウトしやすい。

なぜ ア は間違いか

プレゼンテーション層でSQL実行はSQLインジェクションリスク増大・保守性低下・テスト困難など問題だらけ。絶対に避けるべきアンチパターン。

なぜ イ は間違いか

全処理をプレゼンテーション層に集約するとモノリシックになり再利用・保守・テストがすべて困難に。応答速度も層分離と無関係。

なぜ エ は間違いか

ビジネスロジックは業務の中核。省略するとすべての業務ルールがUIかDBに散らばり、コードの重複・一貫性喪失・保守地獄になる。

出典: AI生成問題(学習用)