【DevSumi2020】「ともにつくる」を実践するドメイン駆動設計
ドメイン駆動設計はソフトウェアの利用者を含む関係者すべてが一丸となって開発するためのプラクティスで、まさに「ともにつくる」を実践する手法です。 このセッションでは、今再びソフトウェア開発の現場で盛り上がりを見せているドメイン駆動設計をキャッチアップできるようお話します。
セッションの内容は次を予定しています。
さぁ、ドメイン駆動設計を手に取って、「ともにつくる」を実践しましょう!
参考 : ボトムアップドメイン駆動設計
プログラム内容
- ドメイン駆動設計とは
- 対象のユーザの世界をに注目する
- ドメインモデル ⇔ コードがむずびついている状態
- モデルとパターンの二つの要素がある
- 手法
- モデリング:ソフトウェアの目的によって切り出すfeatureは異なる
- パターンモデル:コードに落とし込む時のやり方をまとめたもの
- ドメインを知るためには、その業界で従事するdomainexpertに聴く
- ユビキタス言語:開発者とclientが主体となって纏める言葉
- 境界付けられたコンテキスト
- アクター(発注者・受注者)によって分割する例があげられた
- 分けない場合注文にまつわるゴットクラス(ごちゃまぜ・責務まとまりすぎ)になる
- ドメインマップとして纏めており、注文時に発注・受注両方にあることを気づける
- アクター(発注者・受注者)によって分割する例があげられた
- パターン
- ※書籍見てくださいとのこと
- ドメインをはじめから把握することは難しい
- ドメイン駆動設計をするには、ステークホルダーやdomainexpertに教え共想する必要がある
- ドメイン駆動あるある
所感
そのドメインのノウハウなども含めてコードに落とし込む場合には、反復開発的に理解を深めていくやり方が適していそう。
モデリングした際に切り出すフィーチャ―何にするかというのはテスト観点の親を何にするか問題に通じている気がしていて、この辺りはまだふわふわしている手の動かしたい領域だなあ
ぼんやりと把握していたドメイン駆動開発について、開発プロセスの構造の言語化や、ドメイン駆動開発をする際にclientやチームメンバーに対してどう働きかけるかといった点について理解が深まるいいきっかけになった。