【読書感想文】DDD(ドメイン駆動開発)について①
はじめに
最近.NETエンタープライズアプリケーションアーキテクチャ第二版を分からん分からん言いながら読んでるので、 メモついでにブログ記事にしました。
.NETのエンタープライズアプリケーションアーキテクチャ第2版 .NETを例にしたアプリケーション設計原則
- 作者: ディノエスポシト,アンドレアサルタレロ
- 出版社/メーカー: 日経BP社
- 発売日: 2015/06/18
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
DDD(ドメイン駆動開発)
「抽象的な設計原則を現実のソフトウェアに適用する」 というのが開発者のエリック・エヴァンスさんが提唱したDDDの概要です
はい、サッパリですね
今回は、DDDで扱われいる用語を自分なりにまとめて行きます
DDDによる分析
DDDによる分析の要素はユビキタス言語と境界付けられたコンテキストの2つ。 この2つは互いに関連しあっている。
ユビキタス言語
境界付けられたコンテキスト
- ドメインの領域の内、独自のユビキタス言語を持つため別個に扱ったほうが良い領域のこと
- 境界付けられたコンテキストごとに、適切なアーキテクチャを決定する必要がある。
- アーキテクトの主な役割は、ドメインから、ドメインごとのコンテキストを洗い出しサブドメインことにある
- この洗い出しをコンテキストマッピングという
- ユビキタス言語を変化させるのであれば、新しい境界付けられたコンテキストが発生したということ
- コンテキストの数と境界付けられたコンテキスト同士の関係が、企業の物理的な組織を反映していることもよく有り、部署ごとにコンテキストが定義されるのが一般的
- 大抵は境界付けられたコンテキスト毎に開発チームが割り当てられる
- コンテキスト間で重複した言語を共有カーネルとして共有事も可能だが、コンテキストAで行われた変更でコンテキストBのコードが動かなくなるなど、弊害は多い
コンテキストマッピング
コンテキストの種類
コンテキストマッピングの関係パターン
コンテキスト毎にアーキテクチャを定義する
- 階層化アーキテクチャ
- DDD分析から見つかるアーキテクチャの内で最も一般的
- 元は、プレゼンテーション層/ビジネス層/データ層の三層構造であった
- 最近(2014年頃)では、プレゼンテーション層/アプリケーション層/ドメイン層/インフラストラクチャ層で構成される
- プレゼンテーション層
- UIを提供する画面の集まり
- 各画面には、データが読み込まれその画面のアクションは明確に定義されたデータを転送する
- アプリケーション層から、プレゼンテーション層に追加されるデータをビューモデルと呼ぶ
- 逆に、プレゼンテーション層からアプリケーション層に渡されるデータを入力モデルと呼ぶ
- アプリケーション層から、プレゼンテーション層に追加されるデータをビューモデルと呼ぶ
- アプリケーション層
- プレゼンテーションの指示に従い、アクションを手配する層
- つまりは、ユースケースの実装を取りまとめる層でもある
- プレゼンテーションの指示に従い、アクションを手配する層
- ドメイン層
- ドメインモデルとサービスで構成される
- インフラストラクチャ層
- セキュリティ、ログ、キャッシュなどが分類される
次回は、プレゼンテーション層の具体的な扱いについて書いていきます
リンク
次回を作成次第、追加していきます