目次
- アプリケーションアーキテクチャとは
- Webアプリケーションにおける三層構造とは
- メリット、デメリット
- MVCとの違い
1. アプリケーションアーキテクチャとは
ソフトウェア開発において、アプリケーションの構造や設計を定義するための枠組み。
わかりやすく言うと「アプリケーションの基本構造」のこと。
どのようなアーキテクチャを用いるかは様々な要素を考慮して決定する。
2. Webアプリケーションにおける三層構造とは
プレゼンテーション層
ビジネスロジック層
インテグレーション層(データアクセス層)
上記3つの層で構成される。
アプリケーションの各機能を役割ごとに分離することで、開発・保守がしやすくなる。
-
プレゼンテーション層
ユーザ側に対するデータの入出力を担当。
主にユーザからのリクエストの受付、レスポンスの処理、ロジックの呼び出し等を行う。 -
ビジネスロジック層
アプリケーションの中核となるビジネスロジックを担当。
ビジネスルールやバリデーション処理を実装、リクエストから受け取ったデータの加工や処理を行う。 -
インテグレーション層
データベースや外部サービスとのデータの受け渡しを担当。
外部サービスとの連携やデータの整合性処理などを実装、データベースへのアクセスや外部APIとの通信などを行う。
3. 三層構造のメリット
-
保守性、拡張性の向上
各層ごとに役割を明確化することで、変更や修正が発生した場合でも影響範囲を抑えることができる。 -
テストの効率向上
各層毎に分かれていることでテストの作成が行いやすく、またビジネスロジック部分や外部接続先等のテスト実施も容易になる。 -
セキュリティの強化
プレゼンテーション層での入力データの検証やバリデーション、インテグレーション層でのデータベースへのアクセス制御など、セキュリティ対策がしやすくなる。
4. MVCとの関係性
そもそもMVCとは、モデル(Model)、ビュー(View)、コントローラ(Controller)
この3つで構成する形を取る、主にプレゼンテーション層に焦点を当てたアーキテクチャ。
GUIベースのアプリケーション等で使用されることが多い。
そのため、MVCをWebアプリケーションの三層構造に当てはめた場合
- コントローラ(Controller)、ビュー(View) → プレゼンテーション層
- モデル(Model) → ビジネスロジック層、インテグレーション層
に該当する形となる。
その他、MVP、MVVMなどもプレゼンテーション層に焦点を当てたアーキテクチャのため
基本的に三層構造と競合するようなものではない。
上記で記載したWebアプリケーションの三層構造においての各層の役割は一般的な定義であり、
実際には開発要件や規模に応じて、これらの設計を調整して使用することもある。
(ビジネスロジック層とインテグレーション層の一部の機能が統合されるなど)
また、三層構造をさらに細分化して複数の層にすることもある。
(例: プレゼンテーション層、アプリケーション層、ドメイン層、データアクセス層など)
アプリケーションアーキテクチャと一言に言っても範囲が広く
様々な組み合わせが存在するため、まずは大枠から理解していく方が学習しやすい。