ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

ドメイン駆動設計(DDD)の扉をこじ開けたかも?

2019-12-24 08:42:40 | Weblog
今年の大掃除シリーズ!
JJUGで聞いてきた、
開け!ドメイン駆動設計の扉
もメモしてなさそうなので、ここにメモメモ



このセッションの説明
・社内研修の1つ
・動画→わかりましたよね?わからない人がいるので説明
 Web+DB Press 113号に書いた
 ボトムアップドメイン駆動設計 DDD →パターン
 入門用
 エリックエバンス本踏襲

・Domain Driven Design
 エリックエヴァンスのドメイン駆動設計
 準備運動必要:今日は準備運動

・アジェンダ
 モチベーション
 ドメイン駆動設計とは
 知識の蒸留
 構成要素→パターン
 深いモデル

・なぜドメイン駆動設計か
 非ドメイン駆動設計の問題点
  プロジェクトの参画したら
   →仕様を調べる
 開発者は旅に出る:コードの森に

 ゴール:ソフトウェアの利用者とコードが地続きになること
 10年前:サービス早く作れ→レガシーコードに苦労していない?
 開発速度→保守性捨ててる
 真価が発揮できて来た

・ドメイン駆動設計とは何か
 →ドメインって何?:利用者を取り巻く世界
   →ドメインに含まれるものが何かが重要

 モデルの大事なことは、ソフトウェアによって異なる
 ソフトウェアにとって役立つ知識を抽象化したものがモデル
 ドメインの中からモデル→ドメインモデル
 ドメインモデルのコード上の表現:ドメインオブジェクト

 トラック→抽象化→ドメインモデル→ドメインオブジェクト
 ドメインの変化がコードにつながる

 実装時の気づきがドメインのとらえ方に影響する
  →イテレーティブな開発

 知識の蒸留
 ドメインの概念とドメインモデル
 ここに住む人たち:ドメインエキスパート
  →ドメインを知っている人(ステークホルダーではない)
 開発者とドメインエキスパートの会話
  →コードが変わる
 技術語と固有語でなく共通の言葉→ユビキタス言語
   →決して単語帳ではない
   →固有語をそのまま使うのではない

 エキスパートもあいまいなことがある:協力して構築する
 →言葉は文化である。
  相手の言葉を使うことほど、理解を促進するものはない
  互いへの理解はソフトウェアの未来を創る

構成要素
・ドメインモデルからドメインオブジェクトの関係

 表現する
   値オブジェクト:システム固有の値をオブジェクトで表現
  ルールが集約される:変更箇所が集約される

 エンティティ
  同一性により識別される→ID

 サービス
  ふるまいを抽出 ※濫用しないこと:ドメインモデル貧血症
   ドメインサービス
   アプリケーションサービス
   インフラストラクチャサービス


専念する
 集約
  境界:不変条件を守る境界
  集約ルートに依頼し、集約ルートがオブジェクトを操作する
  集約は変更の単位:トランザクションの単位

 リポジトリ

 ファクトリ:作る知識の表現

隔離する
 アーキテクチャ:エンティティを守る

深いモデル
・コードから地続きにする
 →初めから把握するのは大変

・会話の力
 刹那的なニュアンスをキャッチする
 気づきは恐怖に代わる→大規模なリファクタリングになる
 →勇気をもって踏み込む

まとめ
・ドメイン駆動設計とは
 ソフトウェアえを適用する領域を観察してコードで表現
最も難しいことは何か
 当たり前のことを当たり前に実践する→それが難しい
 プラクティスを用意した→ドメイン駆動設計

ドメイン駆動設計の扉を開きました:始めるしかないでしょう
→動画をもう一度:わかった?ブログに台本あるよ

おしらせ:渋谷ふくらす8階から上占拠
 ユアーズでデベロッパーズナイト12月11日
 こんぱすみてね!

ドメイン駆動設計の入門書:年末→2月の予定


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする