DDDの浅いまとめ
ドメイン駆動設計(DDD)が何なのかわかるまで時間がかかったので、あまり踏み込まずにまとめます。
DDDはわかりにくいか
エリック・エヴァンスのDDD本が示しているのは、一つの大きなパターン・ランゲージである。パターン・ランゲージとは複数のソフトウェアパターンを組み合わせたもののことで、それを構成している各パターンには結び付きがある。
ドメイン駆動設計とは
ドメイン駆動設計(英: Domain-driven design, DDD)とはソフトウェアの設計手法であり、「複雑なドメインの設計は、モデルベースで行うべき」であり、また「大半のソフトウェアプロジェクトでは、システムを実装するための特定の技術ではなく、ドメインそのものとドメインのロジックに焦点を置くべき」であるとする[1]。この名称は、 Eric Evans が同名の著作で用いた[2]。
考え方
ソフトウェアを、そのソフトウェアが解決したい問題領域(ドメイン)とその他(永続化機構、ユーザインターフェースなどなど)に分けて考える。 ソフトウェアの価値や保守性の向上するためには、ドメインモデリング(ドメインを分析してソフトウェアのモデルにする)を頑張るといい。
とはいっても
- ドメインに詳しい人(ドメインエキスパート)と言葉が通じません
- ソフトウェアの規模が大きくなりすぎてそれどころじゃない
- ドメインモデルをちゃんと作るためのアーキテクチャほしい
- 複雑なドメインロジックだとモデリングするの難しいっす
戦略的モデリング(Strategic Modeling)
ざっくりいうと組織とかその編成の工夫。