Skip to content

テスト駆動開発から始める 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、計算式