MVCとドメイン層分離は「対立」ではない
ここまでのシリーズでは、 MVCの限界から始まり、 ドメイン層・Application層・Infrastructure層の役割を 順番に見てきました。
ここで一度、 MVCとドメイン層分離の関係を 整理して理解しておきましょう。
結論から言うと、 MVCとドメイン層分離は 対立する設計ではありません。
MVCは「構造」を整理する設計
MVCは、 Webアプリケーションの構造を 分かりやすく整理するための設計です。
- Model:データと処理
- View:画面表示
- Controller:リクエストの制御
主に、 画面と処理の流れを整理する ことに強みがあります。
ドメイン層分離は「意味」を守る設計
一方、ドメイン層分離は、 業務としての意味やルールを 守るための設計です。
技術的な都合に引きずられず、 業務ロジックを中心に考える という視点を提供します。
そのため、 MVCよりも 一段深い設計レベル を扱っていると言えます。
設計レベルの違いで考える
両者の違いを、 設計レベルという視点で整理すると 分かりやすくなります。
- MVC:アプリケーションの構造レベル
- ドメイン層分離:業務ルールの設計レベル
つまり、 MVCの上にドメイン層分離が乗る イメージです。
MVCだけで設計が苦しくなったとき、 ドメイン層分離を導入すると 整理できるケースが多くあります。
実務での使い分けイメージ
実務では、 次のような段階で考えると自然です。
- まずMVCで全体構造を整理する
- Controllerが太り始めたら違和感に気づく
- 業務ルールをドメイン層に寄せる
最初から完璧に分ける必要はありません。
困ったときに使える引き出し として、ドメイン層分離を知っておくことが大切です。
この先に学ぶとよいこと
ドメイン層分離の考え方に慣れてきたら、 次のようなテーマに進むと理解が深まります。
- エンティティと値オブジェクト
- Repositoryと依存関係の逆転
- テストしやすい設計
これらは、 ドメイン層分離を 実装レベルで活かす ための次のステップです。
まとめ
- MVCとドメイン層分離は役割が違う
- MVCは構造、ドメイン層分離は意味を整理する
- 設計が苦しくなったときに使い分ける
※ 参考:MVCの全体像から振り返りたい場合はこちら
▶ MVC学習シリーズ 目次
0 件のコメント:
コメントを投稿