今年の大掃除シリーズ!
JJUGで聞いてきた、
開け!ドメイン駆動設計の扉
もメモしてなさそうなので、ここにメモメモ
このセッションの説明
・社内研修の1つ
・動画→わかりましたよね?わからない人がいるので説明
Web+DB Press 113号に書いた
ボトムアップドメイン駆動設計 DDD →パターン
入門用
エリックエバンス本踏襲
・Domain Driven Design
エリックエヴァンスのドメイン駆動設計
準備運動必要:今日は準備運動
・アジェンダ
モチベーション
ドメイン駆動設計とは
知識の蒸留
構成要素→パターン
深いモデル
・なぜドメイン駆動設計か
非ドメイン駆動設計の問題点
プロジェクトの参画したら
→仕様を調べる
開発者は旅に出る:コードの森に
ゴール:ソフトウェアの利用者とコードが地続きになること
10年前:サービス早く作れ→レガシーコードに苦労していない?
開発速度→保守性捨ててる
真価が発揮できて来た
・ドメイン駆動設計とは何か
→ドメインって何?:利用者を取り巻く世界
→ドメインに含まれるものが何かが重要
モデルの大事なことは、ソフトウェアによって異なる
ソフトウェアにとって役立つ知識を抽象化したものがモデル
ドメインの中からモデル→ドメインモデル
ドメインモデルのコード上の表現:ドメインオブジェクト
トラック→抽象化→ドメインモデル→ドメインオブジェクト
ドメインの変化がコードにつながる
実装時の気づきがドメインのとらえ方に影響する
→イテレーティブな開発
知識の蒸留
ドメインの概念とドメインモデル
ここに住む人たち:ドメインエキスパート
→ドメインを知っている人(ステークホルダーではない)
開発者とドメインエキスパートの会話
→コードが変わる
技術語と固有語でなく共通の言葉→ユビキタス言語
→決して単語帳ではない
→固有語をそのまま使うのではない
エキスパートもあいまいなことがある:協力して構築する
→言葉は文化である。
相手の言葉を使うことほど、理解を促進するものはない
互いへの理解はソフトウェアの未来を創る
構成要素
・ドメインモデルからドメインオブジェクトの関係
表現する
値オブジェクト:システム固有の値をオブジェクトで表現
ルールが集約される:変更箇所が集約される
エンティティ
同一性により識別される→ID
サービス
ふるまいを抽出 ※濫用しないこと:ドメインモデル貧血症
ドメインサービス
アプリケーションサービス
インフラストラクチャサービス
専念する
集約
境界:不変条件を守る境界
集約ルートに依頼し、集約ルートがオブジェクトを操作する
集約は変更の単位:トランザクションの単位
リポジトリ
ファクトリ:作る知識の表現
隔離する
アーキテクチャ:エンティティを守る
深いモデル
・コードから地続きにする
→初めから把握するのは大変
・会話の力
刹那的なニュアンスをキャッチする
気づきは恐怖に代わる→大規模なリファクタリングになる
→勇気をもって踏み込む
まとめ
・ドメイン駆動設計とは
ソフトウェアえを適用する領域を観察してコードで表現
最も難しいことは何か
当たり前のことを当たり前に実践する→それが難しい
プラクティスを用意した→ドメイン駆動設計
ドメイン駆動設計の扉を開きました:始めるしかないでしょう
→動画をもう一度:わかった?ブログに台本あるよ
おしらせ:渋谷ふくらす8階から上占拠
ユアーズでデベロッパーズナイト12月11日
こんぱすみてね!
ドメイン駆動設計の入門書:年末→2月の予定
JJUGで聞いてきた、
開け!ドメイン駆動設計の扉
もメモしてなさそうなので、ここにメモメモ
このセッションの説明
・社内研修の1つ
・動画→わかりましたよね?わからない人がいるので説明
Web+DB Press 113号に書いた
ボトムアップドメイン駆動設計 DDD →パターン
入門用
エリックエバンス本踏襲
・Domain Driven Design
エリックエヴァンスのドメイン駆動設計
準備運動必要:今日は準備運動
・アジェンダ
モチベーション
ドメイン駆動設計とは
知識の蒸留
構成要素→パターン
深いモデル
・なぜドメイン駆動設計か
非ドメイン駆動設計の問題点
プロジェクトの参画したら
→仕様を調べる
開発者は旅に出る:コードの森に
ゴール:ソフトウェアの利用者とコードが地続きになること
10年前:サービス早く作れ→レガシーコードに苦労していない?
開発速度→保守性捨ててる
真価が発揮できて来た
・ドメイン駆動設計とは何か
→ドメインって何?:利用者を取り巻く世界
→ドメインに含まれるものが何かが重要
モデルの大事なことは、ソフトウェアによって異なる
ソフトウェアにとって役立つ知識を抽象化したものがモデル
ドメインの中からモデル→ドメインモデル
ドメインモデルのコード上の表現:ドメインオブジェクト
トラック→抽象化→ドメインモデル→ドメインオブジェクト
ドメインの変化がコードにつながる
実装時の気づきがドメインのとらえ方に影響する
→イテレーティブな開発
知識の蒸留
ドメインの概念とドメインモデル
ここに住む人たち:ドメインエキスパート
→ドメインを知っている人(ステークホルダーではない)
開発者とドメインエキスパートの会話
→コードが変わる
技術語と固有語でなく共通の言葉→ユビキタス言語
→決して単語帳ではない
→固有語をそのまま使うのではない
エキスパートもあいまいなことがある:協力して構築する
→言葉は文化である。
相手の言葉を使うことほど、理解を促進するものはない
互いへの理解はソフトウェアの未来を創る
構成要素
・ドメインモデルからドメインオブジェクトの関係
表現する
値オブジェクト:システム固有の値をオブジェクトで表現
ルールが集約される:変更箇所が集約される
エンティティ
同一性により識別される→ID
サービス
ふるまいを抽出 ※濫用しないこと:ドメインモデル貧血症
ドメインサービス
アプリケーションサービス
インフラストラクチャサービス
専念する
集約
境界:不変条件を守る境界
集約ルートに依頼し、集約ルートがオブジェクトを操作する
集約は変更の単位:トランザクションの単位
リポジトリ
ファクトリ:作る知識の表現
隔離する
アーキテクチャ:エンティティを守る
深いモデル
・コードから地続きにする
→初めから把握するのは大変
・会話の力
刹那的なニュアンスをキャッチする
気づきは恐怖に代わる→大規模なリファクタリングになる
→勇気をもって踏み込む
まとめ
・ドメイン駆動設計とは
ソフトウェアえを適用する領域を観察してコードで表現
最も難しいことは何か
当たり前のことを当たり前に実践する→それが難しい
プラクティスを用意した→ドメイン駆動設計
ドメイン駆動設計の扉を開きました:始めるしかないでしょう
→動画をもう一度:わかった?ブログに台本あるよ
おしらせ:渋谷ふくらす8階から上占拠
ユアーズでデベロッパーズナイト12月11日
こんぱすみてね!
ドメイン駆動設計の入門書:年末→2月の予定