DDD
ドメイン駆動設計のこと
ざっと全体を俯瞰したい人向けの資料
ドメイン駆動設計をわかりやすく - ドメインのモデル設計を手を動かしながら学ぼう(2020-05-26)
DDDに関わるアーキテクチャ
わかる!ドメイン駆動設計 ~もちこちゃんの大冒険~【C91新刊】 - TechBooster - BOOTH
ドメイン
コアドメイン
事業上重要なドメイン
サブドメイン
支援サブドメイン
コアドメインを助けるドメイン
こっちも事業上重要
Generic Subdomains
ビジネス上重要でないが必要なドメイン
におい
解決したい問題が異なるなら、別のサブドメインになる
3.2. ドメイン層の実装 — TERASOLUNA Server Framework for Java (5.x) Development Guideline 5.3.0.RELEASE documentation
bounded context
ユビキタス言語の適用境界
におい
別チームなら別のコンテキストを持っているはず
context mapping
問題意識
コンテキストどうしのやり取りをしたい
コンテキストとコンテキストの関係性をあらわす
分類されてる
Shared Kernel
Customer/Supplier Development Teams
Conformist
consumer/supplier がとれない場合につかう
どんなとき
supplierにメリットがないとき
何をする
supplierのドメイン用語をcustomerが使う
Anticorruption Layer
Separate Ways
Open Host Service
出展:Domain-Driven Designのエッセンス 第3回|オブジェクトの広場
Domain Driven Design(ドメイン駆動設計) Quickly 日本語版
ボトムアップドメイン駆動設計 │ nrslib
エンジニアのためのドメイン駆動設計実践入門 / DDD for Engineer newbie - Speaker Deck
ざっくりわかるDDD (戦術的のみ) - Speaker Deck
コード付きの実例。layered architectureを前提としている
より深く
ドメイン駆動設計の道標 - sandbox
Domain-Driven Designのエッセンス 第1回|オブジェクトの広場
.NETのエンタープライズアプリケーションアーキテクチャ
エリック・エヴァンスのドメイン駆動設計
実践ドメイン駆動設計
IDDD本から理解するドメイン駆動設計連載一覧:CodeZine(コードジン)
実践
2021.01.12 ドメイン駆動設計で保守性をあげたリニューアル事例 〜 ショッピングクーポンの設計紹介 - Yahoo! JAPAN Tech Blog
フロントでの活用事例]
DeNA TechCon 2018– FrontEnd:DDD – | DeNA DESIGN BLOG
DDDの用語
kadoyau.icon
実装(エラー処理やキャッシュ戦略やミドルウェアの都合)にとらわれず、そのアプリケーションのやりたいこと(コアドメイン)をコードで表現するためのメソドロジー
用語の統一(ユビキタス言語)やコードの整備から要求〜開発の全体最適を図る
気軽に取り組むのがよさそう
本読んでも何言ってるのかわかんない、というようなことが結構あるが、わかるところからはじめるのがいい
チームで共通の理解が必要なので、一人でできることではない
複数人のチームで1人だけDDDします、とかは無理
https://gyazo.com/eee1fd724762daef296db31db43dcfff
のじゃおじスタンプは便利
業務で困らないとありがたみが理解しにくいので具体例(自分たちのコードベースでの例)が理解に重要
本に書いてある抽象的な議論を真似ようとすると、ディレクトリ構成だけマネたなんちゃってDDDになる
例:domainとinfraが切り分けられているのにdomainの中にinfraに依存したコードが交じる
2018年の自分の理解(1つのアプリケーションの場合。複数のアプリケーションにまたがる場合は別スコープ)
Clean architectureでDomainにinfraが依存していて、DIをするというような構造になっているコードは読みやすい
理由1. インフラの都合に縛られないのでドメインコードはビジネスロジックの凝集度が高いから
このため、枝葉にとらわれずに何をしたいのかが(理想的には)わかる
理由2. インフラとドメインがレイヤリングされているので、インフラの変更がドメインを歪めない
コードの変更の目的が切り分けやすい
コードの変更も少なくて済む
#ソフトウェア設計