はじめに
私はエンジニア未経験です。現在はエンジニアへ転職活動中です。
なのでここに記載してあることは一個人の考え方・理解であり、間違っている箇所は多々あります。
とあるきっかけでこの本を買い、読んでいるので、自分なりにまとめていこうと思います。
本題に入る前に
ドメイン駆動設計(DDD「Domin driven designの略」) とは
特定のドメイン領域においてモデリングという手法を使って、
ソフトウェアの価値を高めることを目指す開発手法のことを言う。
DDDは過去のプロジェクトの成功パターンを抽出したものである。
・・・?
一旦ここでは細かいことは置いておく。 早速本題へ。
1部 ドメインモデルを機能させる
「モデル」って何?
↓
「モデル」とは、問題解決のために、物事の特定の側面を抽象化したものである。
抽象化とは必要な要素を重点的に抜き出して、不要な要素は捨て去って解決していくという意味であると考える。
複雑な物事を軽減して、効率的な設計と実装を可能にすることである。極限的に言えば簡単にしていくってこと。
モデリングとはモデルを作ること。
「ドメイン」って何?
↓
業務や事業のことを指していると考える。
よって「ドメインモデル」は特定の取り組んでいる課題(ドメインの)を抽象化したものであると考える。
「ドメインエキスパート」って何?
↓
ドメインについて詳しい人。ビジネスをよく知っている人。
ここら辺の単語はひっきりなしにでてくるから頭の中に入れておく。
モデルの3つの基本的用法
①モデルとコードを結びつけていく。(プログラミングをするためにモデルを作っていこう。)
②チームメンバーの共通言語にする。
③考えや課題を表現していく。
開発者がすべきこと
ドメインを使って、ビジネスの知識を積み重ねていきましょう!
↓それによって
ユーザーのために何が必要なのかを見失わない。
1章 知識をかみ砕く
モデルを効果的に成長させていくために
ドメインエキスパートと開発者は協力していきましょう!
※1. モデルについてチームで話し合ってスケッチしていく。
↓
2. 言語を洗練させて共通の理解をし合おう。
↓
3. モデルにさまざまな知識を取り込んでいく。
(ドメインエキスパートの知識)
↓
4. 役に立たない、核心でないものは取り除く。
↓
5. モデルと実装を結びつけて開発していく。
↓
※1. に戻る。(以下ループ)
ループすることでモデルを成長・改良させ続けていく。
最初にできたモデルは大したできでもなく、これといった気付きもないので、
改善しつつ、しっかりと精査していこうね!ということ。
知識をかみ砕いて、チームの持つ知識が価値のあるモデルへと変わっていく。
知識をかみ砕いて本質をシンプルに説明していく
より役立つモデルを作るには知識をかみ砕く必要がある。
↓
知識のかみ砕きは、ドメインエキスパートと開発者のチームで協力して行い、
開発者がリードしていく。
知識をかみ砕くと、ビジネスルールの矛盾に気づける。
(ドメインエキスパートの頭の中でいい感じに調整している矛盾はシステム化できない。)
知識をかみ砕くことによって、ルールが明確になり、具体化されていく。
ドメインモデルは改良し続ける
改良をし続けることにより、モデルはプロジェクトに流れ続ける情報を
表現するツールとなる。
そのためには、継続的学習が必要である。
継続的学習とは、ドメインモデルの知識と技術的な知識を向上させること。
モデルは完成しない。進化していくもの。
最初からいいものはできないということだろう。
まとめ
-
ドメイン駆動設計とは開発者とドメインエキスパートがより良いモデルを探求しながら
システムを作り上げていく開発手法である。 -
フィードバックループの点が、アジャイル開発に類似していると思った。
次回は2章 コミュニケーションと言語の使い方を記載したいと思います。