本家DDD本はとっつきにくいという噂があるので…
初心者の私はまずはこれを読んでDDDを理解したい!
Domain Driven Design(ドメイン駆動設計) Quickly 日本語版
そもそもドメインとは
domain(名詞)
- 領地、領土
- 領域、分野、...界
後者の方が当てはまりそう。
例えば、 銀行のシステム
を作るなら銀行業務の細部、ルール、問題点
などがドメイン。
ドメイン駆動開発(DDD)とは
-
[前提] ドメインに対する十分な知識がないままソフトウェアを作ることは不可能である
- そもそもソフトウェアを作る目的は、そのドメインの業務をより効率的にするためなので…
- ソフトウェアは現実世界のドメインをモデル化して取り込む、という考え方
- 全てを取り込む必要はない、取捨選択
- これが設計である
- モデルを他人に伝えることがもっとも大切
設計の段階に見るDDDの重要性
-
ソフトウェアの設計
- DDDが担当する部分
- 家を構成するようなもの
- やり直すのが大変
-
コードレベルの設計
- DDDの次の段階
- 部屋のレイアウトを決めるようなもの
- 修正が簡単
アジャイル、XPとの相性
-
DDDと合う点
- 完璧な設計をしない手法
- その代わり、反復・柔軟性によってより良いソフトウェアを作る
-
DDDが解決できる点
- 継続的リファクタリングは、設計の知識がない人がやるとゴミコードが生み出されるだけ
- 設計しすぎてしまうのをうまく抑える