0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

設計に関する用語を全て整理する。 /MVC/MVVM/3層アーキテクチャ/オニオン/クリーン/ヘキサゴナル/...

Last updated at Posted at 2025-02-23

きっかけ

MVCとかMVVMとかクリーンアーキテクチャとかそれぞれどの部分の設計思想なのか分かりずらすぎるからまとめたいと思った。

注意事項
本記事は筆者が初学者として学んだ内容をまとめたものです。MVC、MVVM、MVPの解釈や各アーキテクチャとの対応関係について、厳密な定義と異なる可能性があります。

Webアプリケーションの構成

一般的にwebアプリケーションはwebサーバ, アプリケーションサーバ, DBサーバの3つで構成される。

そしてこのサーバの構成を3層アーキテクチャと呼ぶ。
image.png

アプリケーションサーバの構成

アプリケーションサーバ内部の構成はどんなものがあるのかみていく。

3層アーキテクチャ

ややこしいことに、サーバの構成と同じく3層アーキテクチャと呼ぶ。混同しないように注意。
3-layer architecture
システム全体を以下の3層に分ける。

  • プレゼンテーション層(UI層)
    ユーザーとのインターフェース(例:Webページ、モバイル画面)
  • アプリケーション層(ビジネスロジック層)
    業務処理やビジネスルールを実装
  • データロジック層
    データベースやリポジトリなど、データの永続化を担当

各設計パターンとの対応例:

設計パターン 3層アーキテクチャでの対応例
MVC ControllerView → プレゼンテーション層
Model → アプリケーション層(ビジネスロジック)
MVVM ViewViewModel → プレゼンテーション層
Model → アプリケーション層(ビジネスロジック)
MVP ViewPresenter → プレゼンテーション層
Model → アプリケーション層(ビジネスロジック)

レイヤードアーキテクチャ

Layered Architecture

レイヤードアーキテクチャは、以下の4層でシステムを構成する。

  • プレゼンテーション層(UI層)
    ユーザーインターフェースの実装
  • アプリケーション層(サービス層)
    ユースケースや業務ロジックの調整
  • ドメイン層(ビジネスルール)
    ビジネスの中心となるルールやエンティティ
  • インフラストラクチャ層
    データベース、外部API、その他技術的な基盤

各設計パターンとの対応例:

設計パターン レイヤードアーキテクチャでの対応例
MVC Controller → プレゼンテーション層
Model → ドメイン層
View → プレゼンテーション層
MVVM ViewModel → プレゼンテーション層
Model → ドメイン層
View → プレゼンテーション層
MVP Presenter → プレゼンテーション層
Model → ドメイン層
View → プレゼンテーション層

ヘキサゴナルアーキテクチャ

Hexagonal Architecture
画像元

ヘキサゴナルアーキテクチャは、以下の要素で構成され、システムのコア(ドメイン)と外部との依存関係を明確に分離する。

  • ドメイン層(アプリケーションのコア)
    ビジネスルールやエンティティを実装
  • ポート
    ドメイン層が外部と通信するためのインターフェースの定義
  • アダプタ
    UI、データベース、APIなど、外部システムとの接続部分の実装

各設計パターンとの対応例:

設計パターン ヘキサゴナルアーキテクチャでの対応例
MVC Model → ドメイン層
ControllerView → アダプタ層(ポートを介してドメインと連携)
MVVM Model → ドメイン層
ViewModelView → アダプタ層
MVP Model → ドメイン層
PresenterView → アダプタ層

オニオンアーキテクチャ

Onion Architecture
画像元

オニオンアーキテクチャは、システムの中心にドメイン(コアビジネスロジック)を据え、その周囲にアプリケーション層、インフラ層、プレゼンテーション層を配置して依存関係の逆転を実現する。

  • ドメイン層
    システムの中核となるビジネスロジック・エンティティ
  • アプリケーション層
    ユースケースの実装や、ドメイン層と外部の橋渡し
  • インフラストラクチャ層
    データベース、外部APIなどの技術的基盤
  • プレゼンテーション層
    UIやAPIなど、ユーザーとの接点

各設計パターンとの対応例(※Controller/Presenter/ViewModelはアプリケーション層に位置づける場合もあります):

設計パターン オニオンアーキテクチャでの対応例
MVC Controller → アプリケーション層
Model → ドメイン層
View → プレゼンテーション層
MVVM ViewModel → アプリケーション層
Model → ドメイン層
View → プレゼンテーション層
MVP Presenter → アプリケーション層
Model → ドメイン層
View → プレゼンテーション層

クリーンアーキテクチャ

Clean Architecture
画像元

クリーンアーキテクチャは、依存関係の逆転原則に基づいてシステムを以下の4層に分割し、内側ほど抽象度が高くビジネスロジックに集中する。

  • エンティティ層
    ビジネスルールやエンティティなど、システムの核となる部分
  • ユースケース層
    アプリケーション固有のビジネスロジックや処理の流れ
  • インターフェースアダプタ層
    Controller、Presenterなど、外部と内部の橋渡しを行う
  • フレームワーク&ドライバ層
    UI、データベース、外部API、Webフレームワークなど、技術的な実装

各設計パターンとの対応例:

設計パターン クリーンアーキテクチャでの対応例
MVC Controller → インターフェースアダプタ層
Model はエンティティ層とユースケース層にまたがる
View → フレームワーク&ドライバ層
MVVM ViewModel → インターフェースアダプタ層
Model はエンティティ層とユースケース層にまたがる
View → フレームワーク&ドライバ層
MVP Presenter → インターフェースアダプタ層
Model はエンティティ層とユースケース層にまたがる
View → フレームワーク&ドライバ層

クリーンアーキテクチャをより詳しく

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?