マイペースなRailsおじさん

Ruby、Ruby on Rails、オブジェクト指向設計を主なテーマとして扱います。だんだん大きくなっていくRuby on Rails製プロダクトのメンテナンス性を損なわない方法を考えたり考えなかったりしている人のブログです。

DDDの浅いまとめ

ドメイン駆動設計(DDD)が何なのかわかるまで時間がかかったので、あまり踏み込まずにまとめます。

DDDはわかりにくいか

little-hands.hatenablog.com

エリック・エヴァンスのDDD本が示しているのは、一つの大きなパターン・ランゲージである。パターン・ランゲージとは複数のソフトウェアパターンを組み合わせたもののことで、それを構成している各パターンには結び付きがある。

ドメイン駆動設計とは

ドメイン駆動設計(英: Domain-driven design, DDD)とはソフトウェアの設計手法であり、「複雑なドメインの設計は、モデルベースで行うべき」であり、また「大半のソフトウェアプロジェクトでは、システムを実装するための特定の技術ではなく、ドメインそのものとドメインのロジックに焦点を置くべき」であるとする[1]。この名称は、 Eric Evans が同名の著作で用いた[2]。

考え方

ソフトウェアを、そのソフトウェアが解決したい問題領域(ドメイン)とその他(永続化機構、ユーザインターフェースなどなど)に分けて考える。 ソフトウェアの価値や保守性の向上するためには、ドメインモデリングドメインを分析してソフトウェアのモデルにする)を頑張るといい。

とはいっても

ドメインモデリングに集中するための障壁はたくさんある。

戦略的モデリング(Strategic Modeling)

ざっくりいうと組織とかその編成の工夫。

戦術的モデリング(Technical Modeling)