テスト駆動開発から始める F# 入門
概要
FizzBuzz 問題を題材に、テスト駆動開発(TDD)の基本サイクルから、開発環境の整備、関数型アプローチによる設計、F# の高度な関数型プログラミングまで、段階的に学びます。
対象読者
- F# や関数型プログラミングに興味があるプログラミング学習者
- TDD を体験してみたい開発者
- .NET エコシステムで関数型プログラミングを始めたい方
前提条件
- .NET 8.0 SDK がインストールされていること
- Nix 環境推奨:
nix develop .#dotnet
F# の特徴
| 特徴 |
説明 |
| 不変性がデフォルト |
let バインディングは不変、mutable で明示的に変更可能に |
| パイプライン演算子 |
\|> でデータ変換を読みやすく連鎖 |
| 判別共用体 |
代数的データ型による型安全な分岐 |
| パターンマッチ |
網羅的なパターンマッチングによる分岐 |
| レコード型 |
不変のデータ構造を簡潔に定義 |
| 型推論 |
Hindley-Milner 型推論による簡潔なコード |
開発ツール
| ツール |
用途 |
| dotnet CLI |
ビルド・テスト・パッケージ管理 |
| xUnit |
テスティングフレームワーク |
| NuGet |
パッケージマネージャ |
| Fantomas |
F# コードフォーマッター |
| Cake |
タスクランナー(C# DSL) |
記事一覧
第 1 部: TDD の基本サイクル
| 章 |
タイトル |
内容 |
| 第 1 章 |
TODO リストと最初のテスト |
テストファースト、Red-Green の基本 |
| 第 2 章 |
仮実装と三角測量 |
仮実装から本実装への段階的アプローチ |
| 第 3 章 |
明白な実装とリファクタリング |
パイプライン演算子によるリファクタリング |
第 2 部: 開発環境と自動化
| 章 |
タイトル |
内容 |
| 第 4 章 |
バージョン管理と Conventional Commits |
Git と Conventional Commits |
| 第 5 章 |
パッケージ管理と静的解析 |
NuGet、Fantomas |
| 第 6 章 |
タスクランナーと CI/CD |
Cake、GitHub Actions |
第 3 部: 関数型アプローチによる設計
| 章 |
タイトル |
内容 |
| 第 7 章 |
レコード型とモジュールによるカプセル化 |
レコード型、モジュール、アクセス制御 |
| 第 8 章 |
判別共用体とパターンマッチ |
代数的データ型、網羅的パターンマッチ |
| 第 9 章 |
モジュール設計と型による設計 |
型駆動設計、モジュール分割 |
第 4 部: 関数型プログラミング
| 章 |
タイトル |
内容 |
| 第 10 章 |
高階関数と関数合成 |
パイプライン演算子、部分適用、カリー化 |
| 第 11 章 |
不変データとコレクション処理 |
List / Seq モジュール、fold / map |
| 第 12 章 |
エラーハンドリングと型安全性 |
Result / Option、計算式 |