関数型DDDの実践本として話題の『Domain Modeling Made Functional』を読んだので
簡単な感想を書いておく
感想
- DMMFは従来からあるKent BeckのComposed Method パターンの一種
Composed Method パターンはメソッドの抽象度を揃え、読みやすくて小さなメソッドを組み合わせて大きな処理を行う手法- 手法的には新しい話ではないが、現実世界のドメインにどのように適用できるかがわかりやすく書かれていた
- 関数型プログラミングが可能なF#で書かれたコードの記載があり、どのようにドメインイベントを関数にしていくのかがわかりやすい
- TypeScriptで実践できそうなので、フロントエンドでも使えるかを考察したい
- おそらく実践するには関数型ライブラリが必要(fp-tsなど)になるのでその辺りを学んでおきたい
- なぜ関数か
- コマンドとドメインイベントの関係(コマンドがトリガーされ、ビジネスワークフローが開始する)が関数型プログラミングの動作方法と非常によく適合する
- オブジェクト指向DDDでは〇〇BaseClass、〇〇FactoryClass、「継承」など、ドメインマスターが理解し難いエンジニア由来の表現が出てきてくる場合がある
- 「注文を受けて発送する」って誰がやるのか?OrderBaseクラス(is何?)
- オブジェクト指向プログラミングと異なる点として、関数型モデルではデータと動作が混在しない
- エンジニアと非エンジニアと協力することに焦点を当てている
- 始めるには何がなくともイベントストーミングはまずやらないといけないと感じる
ドメイン探求が重要なので、エンジニアと非エンジニアがいい関係で協業できていないとDMMFは成立しない- それができる現場にしか導入は難しいそう
- 始めるには何がなくともイベントストーミングはまずやらないといけないと感じる
- Railway Oriented Programing という手法が他にも応用できそう
- DDDと関数型プログラミングの両方が難しいので、両方を学ぶ必要があるDMMFは学習コストがかかりそう
参考
以下の記事が本の理解の参考になった