matarillo.com

The best days are ahead of us.

関数型ドメインモデリング 非公式宣伝サイト

2024-12-03 21:00:24
関数型ドメインモデリング 書影

書籍情報

  • タイトル:関数型ドメインモデリング - ドメイン駆動設計とF#でソフトウェアの複雑さに立ち向かおう
  • 原著タイトル:Domain Modeling Made Functional - Tackle Software Complexity with Domain-Driven Design and F#
  • 著者:Scott Wlaschin
  • 訳者:猪股 健太郎
  • 出版社:KADOKAWA (アスキードワンゴ)
  • ISBN:4048931164 / 978-4048931168
  • 発売日:2024年6月28日 初版発行

出版社による紹介文

ドメイン駆動設計と関数型プログラミングを組み合わせることで、顧客満足度の向上、開発サイクルの短縮、無駄な作業の削減を実現できます。本書では、ビジネスドメインの例とF#のコードで、ビジネスに焦点を当てた、柔軟で高品質なソフトウェアを構築する方法を紹介します。たとえば、F#の型システムを使って複雑なドメインをモデル化し、読みやすいドキュメントにもなるコードを作成します。また、ビジネスルールをエンコードして「コンパイル時ユニットテスト」を作成することで、不正な状態を表現できないようにして潜在的なバグを排除します。関数型プログラミングの核となる原則を適用することで、実世界の要求をエレガントかつ簡潔にモデル化したソフトウェア設計を実現できます。

目次

  • 第1部 ドメインの理解
    • 第1章 ドメイン駆動設計の紹介
    • 第2章 ドメインの理解
    • 第3章 関数型アーキテクチャ
  • 第2部 ドメインのモデリング
    • 第4章 型の理解
    • 第5章 型によるドメインモデリング
    • 第6章 ドメインの完全性と整合性
    • 第7章 パイプラインによるワークフローのモデリング
  • 第3部 モデルの実装
    • 第8章 関数の理解
    • 第9章 実装:パイプラインの合成
    • 第10章 実装:エラーの扱い
    • 第11章 シリアライズ
    • 第12章 永続化
    • 第13章 設計を進化させ、きれいに保つ

公式情報リンク

レビューと解説記事

このリストには、原著 “Domain Modeling Made Functional” と日本語訳『関数型ドメインモデリング』の両方に関する日本語の記事を載せています。

解説記事

  • ビジネスルールを型で表現するリファクタリング手法 - コドモン Product Team Blog 2024年12月03日
    • claude.aiによる要約:本記事は、Kotlinで開発されている請求システムにおいて、ビジネスロジックを型で表現するアプローチを採用し、単一クラスで管理していた状態(キャンセル、返金、支払い完了など)をsealed interfaceを使って分割するリファクタリング事例を紹介したものです。複雑化していた状態管理を型安全に整理し、コードの可読性、保守性、拡張性を向上させた過程を、具体的なコード例とその成果とともに解説しています。
  • Rubyではじめる関数型ドメインモデリング - Zenn 2024年11月06日
    • claude.aiによる要約:本記事は、Railsアプリケーションにおけるビジネスロジックを「ワークフロー」として実装する手法を提案しています。ワークフローとは業務プロセスを純粋な関数の組み合わせで表現する方法で、dry-monadsライブラリを使用して処理の成功/失敗を明示的に扱い、それらをパイプライン化します。外部システムとの相互作用を両端に配置することで、中心となるビジネスロジックの純粋性と見通しの良さを保ち、保守性と拡張性の高いコード設計を実現します。
  • F#でAsyncとResultを組み合わせたときにきれいに書く方法 - Uzabase for Engineers 2024年08月09日
    • claude.aiによる要約:この記事は、F#で非同期処理(Async)と結果型(Result)を組み合わせる際に生じる冗長なコードの問題とその解決策を説明しています。著者は、「関数型ドメインモデリング」書籍で提案されているAsyncResult型エイリアスと、FsToolkit.ErrorHandlingライブラリのasyncResultコンピュテーション式を使用することで、コードをより簡潔に書けることを示しています。さらに、FSharpPlusライブラリのモナドトランスフォーマーを用いたアプローチも紹介し、より柔軟な型の組み合わせが可能になることを提案しています。
  • 【シン・プロセス指向】pythonを題材にDomain Modeling Made Functional/関数型ドメインモデリング【気分はstatic! 】 - Qiita 2024年06月27日
    • claude.aiによる要約:この記事は、関数型プログラミングとドメイン駆動設計の手法を融合させ、Pythonで実践する革新的なアプローチを提案しています。ビジネスプロセスを直接コードに反映する「プロセス指向」の方法を中心に、Result型やADTなどの関数型概念をPythonで実装する具体的な手法を紹介しています。特に注目すべきは、このアプローチが現代の技術環境(高度な型システム、自動テスト、サーバーレスアーキテクチャなど)と整合性が高いことを示唆している点です。理論と実践のバランスが取れた内容で、ドメインモデリングの新たな可能性を探る貴重な資料となっています。
  • TypeScript開発にRailway Orientedを持ち込み、より型安全なエラーハンドリングへ - Sansan Tech Blog 2024年03月26日
    • claude.aiによる要約:この記事は、関数型プログラミングの概念をTypeScriptに適用し、型安全で網羅的なエラーハンドリングを実現する手法を提案しています。Railway Oriented Programmingを基に、Result型、パイプライン、パターンマッチングを組み合わせることで、エラー表現の統一、処理の可読性向上、エラーハンドリングの網羅性保証を達成する方法を具体的に示しています。この手法は、TypeScriptを用いた実際の開発現場でも適用可能な、実践的かつ革新的なアプローチとして評価できます。
  • 振る舞いに応じて型を分けることで複雑さに対処する - LabBaseテックノート, Zenn 2023年12月01日
    • claude.aiによる要約:この記事は、「Domain Modeling Made Functional」の概念をTypeScriptで実践し、タスク管理アプリのAPI開発を通じて得られた知見を共有しています。イベントストーミングからドメインモデリング、オニオンアーキテクチャの採用、zodを使用したドメイン知識の表現、振る舞いに応じた型の分割など、具体的な実装例とともに課題や疑問点も率直に述べられています。特に、振る舞いによる型分割の利点と課題、I/O部分を含めた実装の全体像の提示は、理論を実践に落とし込む際の貴重な参考となり、ドメイン駆動設計と関数型プログラミングの融合に興味を持つ開発者にとって価値のある情報を提供しています。
  • (ほぼほぼ)typed (わりかし)fuctional python【関数型ドメインモデリング】 - Zenn 2023年11月27日
    • claude.aiによる要約:この記事は、「Domain Modeling Made Functional」の概念をPythonで実践し、関数型プログラミングの手法をドメイン駆動設計に適用する方法を詳細に解説しています。架空の家具店の注文プロセスを例に、データモデル、ビジネスロジック、ビジネスルール、データアクセスの実装方法を示し、特にResult型とモナドを用いたエラーハンドリングと処理の連鎖、代数的データ型とスマートコンストラクタの活用に焦点を当てています。Pythonという広く使用されている言語で関数型プログラミングの概念を実践し、具体的なビジネスプロセスに基づいた実装例を提示することで、理論と実践のバランスの取れた、実用的なアプローチを提案しています。
  • Domain Modeling Made Functional から学ぶドメイン駆動開発 - Qiita 2022年12月09日
    • claude.aiによる要約:この記事は、「Domain Modeling Made Functional」から得られたDDDの洞察を紹介し、関数型プログラミングの概念がDDDの実践に適していることを示しています。技術的偏見を排除した要求の整理、レイヤードアーキテクチャの問題点と代替案、純粋関数の重要性と副作用の排除などの key points を解説しています。特に、関数型の考え方をオブジェクト指向に適用することの利点を強調し、テストの容易さや管理しやすいコード構造の実現方法を提案しています。この記事は、DDDの実践において関数型プログラミングの概念を取り入れることの価値を示す、実用的で洞察に富んだ内容となっています。

「鉄道指向プログラミング (Railway oriented programming)」の解説

  • TypeScriptで始めるRailway Oriented Programming - ejuLabs, Zenn 2024年04月03日
    • claude.aiによる要約:この記事は、Railway Oriented Programming (ROP)というプログラミング手法をTypeScriptを用いて説明しています。ROPは関数型プログラミングの文脈で有用な手法で、エラーハンドリングを効果的に行うためのアプローチです。記事では、Result型の導入、try-catchからResultへの変換、バリデーションのResult化、map関数とflatMap関数の実装、副作用の分離などについて具体的なコード例を用いて解説しています。最終的に、従来の命令型のコードをROP風に書き換えた例を示し、その利点を説明しています。
  • 【Swift】鉄道指向プログラミング(Railway Oriented Programming)でResultの使い方を学ぶ - Qiita 2019年06月27日
    • claude.aiによる要約:この記事は、SwiftのResultタイプと鉄道指向プログラミング(ROP)の概念を解説しています。ROPはエラーハンドリングを鉄道の線路に例えて説明する手法で、Resultタイプと組み合わせることで、統一的なエラー処理と高い可読性を実現します。flatMapやmapなどの関数を使って異なる型の関数を連結し、複雑な処理フローを表現できます。この手法は型を重視し、関数型プログラミングの考え方を取り入れており、より堅牢で保守性の高いコードを書くための効果的なアプローチとして紹介されています。
  • 鉄道指向プログラミング(翻訳) - github.com/yukitos 2013年05月27日

書評・レビュー

読書メモ

スライド

リポジトリ

関連書籍(主に日本語)

ドメイン駆動設計

関数型プログラミング・設計

F#

訳者による関連情報

コミュニティ情報

  • Twitter ハッシュタグ: #関数型ドメインモデリング #DMMF_JP