2021年4月第3週レポート

インプット

📝 「Domain Modeling Made Functional」を読んでいる

先週はこちらの本を読んでいました。

関数型言語F#を使ってドメイン駆動開発(DDD)をやってみよう!という内容です。前半はDDDによった内容でDDD入門書としてもよくまとまった本だと思います(筆者はDDDの解説書ではないので別書を参照するようにいっていますが)。後半から実装の話になりますが、自分がこれまで勉強した関数型のテクニックだけでも十分理解できるような内容でした。これを読んであまり高等なテクニックにこだわらず、まずは何かを作ってみてテクニックの方は追々ついていければいいかな、という気になってきました。

本書は三部構成となっています。第1章はDDDの紹介、特に戦略的DDDと呼ばれるような内容で、ドメイン、サブドメイン、境界づけられたコンテキスト、ユビキタス言語といった、界隈でよくみられる用語の解説が記載されています。また、ドメインエキスパートを巻き込んで実施するイベントストーミングというプラクティスを使い、受発注ワークをシステム化するというケーススタディを通じた解説となっています。DDDの入門書としてもわかりやすいものだったと思います。

第二章では特定のワークフローを題材にしてモデリングを実施していきます。このときフル活用していたのが代数的データ型でありとあらゆるデータを型付けしていきます。OOPではドメインオブジェクトのメソッドとしてモデリングされることが多いワークフローですが、こちらではワークフローを関数として入力と出力の型に着目してモデリングしていきます。ワークフローに対してユーザインタビューを通じて掘り下げていき小さなワークフローに分割、その小さいワークフローを関数化して、最終的にそれらを合成してワークフローを表現する、といったものになっています。この小さい関数も徹底してユビキタス言語を使って型付けしていきます。

第三章では具体的な実装の解説となります。とはいってもほとんどが関数型パラダイムの初等級のテクニックだけで構成されているのでF#の経験がない自分でも理解できました。高階関数、カリー化、合成といった基本テクニックを使い、小さい関数からワークフロー関数を合成していく様を見ることができます。また、実装で直面する永続化の話題や、ワークフローを実施する上で外部サービスなどを利用する場合など現実に即した内容で解説されています。

アウトプット

目立ったものはなし

Profile
d_yama
元Microsoft MVP for Windows Development(2018-2020)
Sub-category : Windows Mixed Reality
Search