Dear Kiki!
— うたがわきき@C108 日曜日 東V44b (東7ホール) (@utgwkk) 2026年7月2日
We're sorry, but the following sessions have not been accepted for Go Conference 2026:⁰- Goは関数型ドメインモデリングの夢を見るか?
Thanks,
Go Conference 2026
無念!! Go Conference 2026は個人でスポンサーしているし、万難を排して行くつもりです。中野セントラルパークカンファレンスで会いましょう。
CfS
Goでアプリケーションを開発する際、複雑なドメインロジックをどうコードに落とし込むべきか悩んだことはありませんか。また、いざドメインロジックを実装してみたものの、データストアや外部APIの都合に引きずられ、後からコードを読んでも結局何がどうなるのか理解しづらいと思った経験はありませんか。そんなあなたに「関数型ドメインモデリング」を知っていただきたいです。
「関数型ドメインモデリング」(Domain Modeling Made Functional) [1][2] は、関数型プログラミングと型システムを活用したドメイン駆動設計の手法について説明した本です。「関数型ドメインモデリング」の主要な考え方を要約すると、以下のようになります。
- ドメイン駆動設計の考え方に基づき、ドメインを理解する
- ドメインモデルを代数的データ型でモデリングする
- 一連の手続きをワークフロー (副作用を持たない状態遷移の単位) に分解し、連結させる
- ドメインロジックを純粋関数で記述し、副作用を端に追いやる
「関数型ドメインモデリング」では実装言語として F# が用いられていますが、考え方のエッセンスはプログラミング言語に依存しません。私が所属する会社では「関数型ドメインモデリング」を輪読し、チームに分かれて複数の言語で実装を移植する会が過去に開催され、Goでの移植も行いました[3]。また、筆者は実際にGo製Webアプリケーションの開発に対して、関数型ドメインモデリングの考え方を取り入れた経験があり、また別のプロジェクトでもまさに現在進行形で実践しています。
本トークでは、Goでどのようにドメインの複雑さに立ち向かうことができるのか・Goでの関数型ドメインモデリングを「夢」で終わらせないためにどのようにアレンジして取り入れたのか、についてお話しします。 以下のような話題について、簡単な (しかし自明でないドメインロジックがある) アプリケーションを例に挙げつつお話しする予定です。
- 「関数型ドメインモデリング」のおさらい
- ワークフローをGoのコードとして表現する
- Goの型・言語機能を活かしたドメインモデリング
- 永続化層での表現とドメインモデルとのギャップを吸収する
- 関数型ドメインモデリングと「Goらしい」コードとのギャップを埋め、すこやかに開発できるポイントを探求する
- どうやって依存を注入するか
errorinterfaceとResult型nilとOption型- Goの言語機能の進化と関数型ドメインモデリング
- メソッドのジェネリクス対応 [4]
本トークを通じて、複雑なドメインロジックをGoで実装する際の選択肢を増やすことにつながり、健やかなアプリケーション開発への一助となれば幸いです。
[1]: https://tatsu-zine.com/books/domain-modeling-made-functional
[2]: https://pragprog.com/titles/swdddf/domain-modeling-made-functional/
[3]: https://developer.hatenastaff.com/entry/2025/10/31/153000
[4]: https://github.com/golang/go/issues/77273