ドメイン駆動設計 本格入門レポ

行ってきたのでレポ。

資料

概要と感想

スライドの各章ごとに概要と感想をメモする。

ドメイン駆動設計の考え方

ドメイン駆動設計でなぜ作るか簡潔に述べている。
とくに、コードの変更を安全で楽にするということは、セキュリティ向上、性能改善、ビジネス要求の素早い実現にもつながるという説明がためになった。
言われてみれば当然かもしれないが、このような話題はエンジニア視点で語られることが多く、コードの変更が容易になった先の視点が抜けがちなので、ビジネス視点での有用性を説明する際に積極的に使っていこうと思った。

ドメイン駆動設計を理解する3つのキーワード

ドメイン駆動設計の文脈において頻出するキーワードを、焦点を絞りより具体化して説明している。
この章は『現場で役立つシステム設計の原則』で語られている部分がいくつかあったので事前に読んでおいてよかった。(まだ読んでいる途中)
1、2、3、4、5章に重複している部分があるので相互に読むとより理解できると思う。

3つのキーワード(ビジネスルール、計算モデル、型指向のプログラミング)についてかなり大雑把にまとめると、

  • ビジネスルールとは金額、数量、期日などの計算と判定である。それらは、状態、区分、タイミングなどにより複雑に条件分岐する。
    例:商品種別、有効期間、キャンセル可能条件など
  • ビジネスルールは計算モデル(計算式、判定式、条件分岐)であり、Fact、Rule、Goalに分類してモデル化できる
  • ビジネスルールはに登場する値は専用の型を作り整理する(型指向のプログラミング)
  • ビジネスルールの設計パターンとして

が挙げられる。具体的にはスライド参照。

特に以下のような具体例が参考になった。

メソッド名は標準クラスでよく見るものなので、値オブジェクトのメソッド名をつける際には参考にしていきたい。
これら以外の特殊な名前になるときは値オブジェクトのクラス設計を見直しても良さそうだと感じた。

エヴァンス本のススメ

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)


上記エヴァンス本で

  • 誤解されがちな概念
  • 全体構成と要点
  • 読み進め方

について述べられている。
とくにエヴァンス本の読み進め方はDDDに興味を持ってこれから読み進める人は読んでおくと良いと思った。
すでに最初から読みすすめているので、もう少し早く知りたかった…

レガシーに立ち向かう

ドメイン駆動設計の手法で、レガシーシステムに対して、

  • どのように現状の調査分析をおこなうか?
  • 手がかりをもとにどのように整理していくか?

その具体的な方法について述べられている。
特に心の準備編ではあるあるなことが多かった。

マイクロサービスとドメイン駆動設計

マイクロサービスとドメイン駆動設計の関連性について、

  • マイクロサービスの4軸に分けた分割方針
  • 相互のアーキテクチャの特性と移行タイミング
  • マイクロサービス化と相性の良いアプリケーション層・データベースの分析/設計手法

について述べられている。

継続的に分割の見直しができるかどうか?が重要だと感じた。

全体の感想とメモ

  • 具体例を通してエヴァンス本を読んでいたときよりもドメイン駆動設計の解像度があがった(特にビジネスルールのモデル化や設計パターンなど)
  • とにかく値オブジェクトが大事
  • ブレイクスルーについて語られるときもほとんど値オブジェクトの話
  • DDDは長く継続して運用されるシステムに特に効果がある
  • DDD本は通読するより全体を把握して都度読み返す方法がよさそう
  • 発表前に「これは正解ではなく、自分の体験・経験である」と前置きがあり、参加者の思考・議論を促していたのがよかった
  • 現場で役立つシステム設計の原則9章と関連したエピソード(おそらく9章を書くきっかけになったもの)が披露されて、他人に説明して納得してもらうスキルも必要だと感じた
  • Tryは担当システムのビジネスルールとその値オブジェクトの分析、整理