書籍「ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本」紹介
i-Vinciのmiuraです。今回は最近読んだ技術書の中で一番よかった「ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本」を紹介しようと思います。
この本を読むうえで必要な知識
オブジェクト指向でプログラミングできるレベルであれば問題なく読むことができると思います。
サンプルコードはC#で書かれていますが、C#特有の記述はほとんどないため他言語にも応用可能です。
ドメイン駆動設計とは
皆さんはドメイン駆動設計をご存じでしょうか?
最近注目されている開発手法のため聞いたことがある人もいるかと思います。
まったく聞いたことがない方に一言で説明すると「業務をコードで表現する設計手法」になります。
これだけでは伝わらないと思うので、もう少し説明します。
会計システムでは「金銭」、「帳票」といった概念が存在します。
物流システムでは「貨物」、「倉庫」、「輸送手段」などの概念が存在します。
こういった概念がドメイン(領域)になり、ドメインはシステムによって異なります。
ドメインの概念や事象を理解し、そのなかから問題解決に役立つものを抽出して得られた知識をソフトウェアに反映する。それを実現するため開発手法がドメイン駆動設計です。
なぜドメイン駆動設計が注目されているのか
ドメイン駆動設計は2003年頃から提唱されているようです。
なぜ今注目されているのかというとソフトウェアが複雑化しているからだと思われます。
これまではシステムをいち早くリリースすることがもっとも重要なことでした。
スピードを重視して開発したシステムはほとんどの場合、複雑性が高く柔軟性がないシステムになってしまいます。
システムは一般的にリリースしたら終わりではなく、ほとんどの場合にメンテナンスが発生します。
スピードを重視して開発したシステムはメンテナンスをするのも大変で場当たり的な対応も増えていくでしょう。
それが繰り返されると最終的にはプロジェクトが炎上することなるかもしれません。
こういった問題を解決するためにドメイン駆動設計が注目されています。
この本をおすすめする理由
ドメイン駆動設計の代表的な本として「エリック・エヴァンスのドメイン駆動設計」や「実践ドメイン駆動設計」があります。ただし、これらの本から学習を始めるとほとんどの人は内容が難しすぎて挫折してしまいます。
この本ではドメイン駆動設計の各要素を理解しやすい順で解説していきます。
解説が一段落した段階で、解説した内容を組み合わせて実際のアプリケーションを作成していきます。
解説と実践がセットになっているため、ドメイン駆動設計に対する理解を深めやすい構成になっています。
まとめ
ドメイン駆動設計を採用しているプロジェクトはまだ少ないと思いますが、今後増えていくことが予想されます。
また、ドメイン駆動設計の考え方はどんなプロジェクトであっても参考になることがあると思います。
ドメイン駆動設計を学習するきっかけとして今回紹介した本が役に立つことを願っています。