
[読書レビュー] Learning Domain-Driven Design
Learning Domain-Driven Design (日本語版)
** You can read the English version here.
この本について
この本は、ドメイン駆動設計(Domain-Driven Design、略してDDD)に関するものです。
「ドメイン」という言葉に馴染みがない場合は、ドメインを「ビジネスの中核としている専門分野」と考えるとよいでしょう。
DDDとは、「ドメインのプロセスやルールを深く理解するドメインモデルをプログラムすることを中心に据えたソフトウェア開発のアプローチ」です。
DDDの特徴的なポイントは、ビジネスとそのドメインへの深い洞察からスタートすることにあります。この本では、ビジネスやドメインを徹底的に探索するためのツールや、システムの複雑さに対処するためのソフトウェア設計技術が紹介されています。
背景
この本は2021年に出版されました。2003年にエリック・エヴァンスが『Domain-Driven Design』を出版してから18年が経過しています。この本では、18年間にわたる多くの才能あるエンジニアたちの議論を通じて洗練され、進化したDDDの高度な実践を学ぶことができます。
個人的には、今のエンジニアたちには、この本からDDDを学ぶことを強くお勧めします。
学べること
この本は大きく3つのパートに分かれています:
DDDを通じたビジネスの分析
DDDを使ったシステムの設計と実装
DDDを開発プロセスで実践的に適用する
本書の第1部は、ビジネスの理解に焦点を当てています。このセクションは、ソフトウェア企業のビジネスプランナーに特にお勧めです。
第2部は、ソフトウェアエンジニア向けで、コアドメインの複雑さに取り組むための強力なツールを提供します。多数のサンプルコードも含まれています。
DDDは強力なアプローチですが、実践するには努力と具体的なテクニックが必要です。第3部では、DDDを効果的に適用するためのイベントストーミングなどの実践的な方法を学ぶことができます。
この本を読んだ理由
2024年7月、私は米国の子会社に出張しました。この会社は買収されたばかりでしたが、PMI(Post-Merger Integration: 合併後統合)がまだ完全には完了していませんでした。この出張の主な目的は、組織全体のビジネス運営、ワークフロー、システムアーキテクチャを理解することでした。
この出張中に、私のビジネスに対する視点が非常に狭かったことに気付きました。例えば、以下のような重要な問いをこれまで考えていなかったのです
どうすれば自社のビジネスを完全に理解できるのか?
どうすればビジネス全体を支えるシステムアーキテクチャを設計できるのか?
ビジネスが機能するために必要な構成要素は何か?
これらの構成要素をどのように優先順位付けし、効果的にリソースを割り当てるか?
この気付きが、私にドメイン駆動設計(DDD)を学ぶきっかけを与えました。東京に到着してすぐにこの本を購入しました。特に本書の第1章は、これらの課題を解決するための指針として非常に役立ちました。
生成系AIの時代では、ソフトウェア開発の多くの側面が自動化されています。その中で、自身のビジネスを深く理解しているソフトウェアエンジニアが、より大きな影響を与えることができると私は信じています。