UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【DMMF】Functional Domain Modeling の実践動画

今関心があるDomain Modeling Made Functional (DMMF)の実践動画を見たのでまとめ

www.youtube.com

動画の流れは開発者の Marco Emrich氏とプロダクトオーナーの Ferdinand Ade氏が会話をしながらコードを書いていくというもの

POが開発者に仕様を伝えて、時には突然の仕様変更もあったりしながらドメインをモデル化していく

プログラマーでないPOでも、モデルを検証して開発者に直接フィードバックを提供していく様子が特徴的

自分がDMMFで好きな(ステークホルダーとのメンタルモデルを共有しながら実装していく)ところが実演されていてとても面白かった

DMMFで大事なこと

ほとんどがプログラマーとPOとのやり取りが見どころだが、最後の方にDMMFをやる上で大事なことが挙げられていた

技術選定

まず型が大事なので、型システムが強力なプログラミング言語を選ぶと良い  

explicit option(明示的なオプション)

フラグ(boolean)は極力使わず、上図でいうonSaleが何なのかをしっかりと議論する

invariant enforcement(不変の強制)

全てのオプションを持つ型を作ってしまうと、状態の組み合わせによるアンマッチに気づけない

例えば、上図でいうonSaleが"stockSale"の時は日付を持たないし、"campaignSale"の時はstock数は必要ない

なのでそれぞれの(意味のある)組み合わせの型を作りUnionでまとめる

そうすることでコンパイルエラーになってくれる

explicit data(明示的なデータ)

ただのnumber型ではなく、とりうる値の最小値、最大値を定義したり、ただの配列ではなく最大要素数を明示的にする

avoid side effects

副作用を避ける

expressive workflow(明示的なワークフロー)

考える順番

start with the Result → behavior first → details later

どうなるかの結果から始めて、振る舞いをまず定義し、詳細は最後にする

ビジネス用語を使う

ただの"ワインの配列"ではなく、"ワインセラー"

ただの"評価"ではなく"星評価"

ただの文字列でななく、"ブドウの品種"

のようにビジネスサイドが使う言葉で定義していく