Skip to content

イテレーション 8 計画

概要

項目 内容
イテレーション 8
期間 Week 15-16(2 週間)
ゴール C# と F# それぞれ全 12 章の記事執筆と実装を完了し、Phase 2 を完了する
目標 SP 13

ゴール

イテレーション終了時の達成状態

  1. 記事(C#): C# の 12 章すべてが docs/article/csharp/ に執筆完了
  2. 記事(F#): F# の 12 章すべてが docs/article/fsharp/ に執筆完了
  3. 実装: apps/dotnet/ に C# と F# の TDD 実装が動作する状態
  4. 品質: テスト全パス、dotnet-format 違反ゼロ
  5. Phase 2 完了: IT5-IT8 の全言語が完了し、Release 2.0 準備完了

成功基準

  • docs/article/csharp/index.md と 12 章の記事ファイルが作成済み
  • docs/article/fsharp/index.md と 12 章の記事ファイルが作成済み
  • apps/dotnet/ の dotnet test がすべてパス(C# + F# 両方)
  • mkdocs.yml に C# セクションと F# セクションが追加され、プレビュー確認済み
  • dotnet-format 違反ゼロ
  • 記事内コード例と apps/dotnet/ の実コードが同期

ベロシティトレンド分析(7 イテレーション実績)

実績データ

イテレーション 言語 計画 SP 実績 SP 達成率
IT1 Java 10 10 100%
IT2 Python 10 10 100%
IT3 Node(JS/TS) 13 13 100%
IT4 Ruby 13 13 100%
IT5 Go 10 10 100%
IT6 PHP 10 10 100%
IT7 Rust 10 10 100%
平均 10.9 10.9 100%

IT8 見通し

  • C# は 3 エピソード言語(Wiki エピソード 1-3)、第 4 部は C# の LINQ / デリゲート / ラムダで構成
  • F# は 4 エピソード言語(Wiki エピソード 1-4)
  • 両言語とも .NET 共通基盤でテスティングフレームワーク(xUnit)を共有
  • Wiki に C# 3,082 行 + F# 2,863 行の参照資料が揃っている
  • Nix 環境で .NET SDK 8.0.416 が利用可能(nix develop .#dotnet

ユーザーストーリー

対象ストーリー

ID ユーザーストーリー SP 優先度
US-008 C#/F#(dotnet)の TDD 入門記事の執筆と実装 13
合計 13

ストーリー詳細

US-008: C#/F#(dotnet)の TDD 入門記事の執筆と実装

ストーリー:

プログラミング学習者として、C# と F# それぞれで TDD を体験する記事を読みたい。なぜなら、C# の OOP 機能と F# の関数型プログラミング機能を独立した記事として学べるからだ。

受入条件:

  1. C# と F# それぞれ独立した 12 章構成の記事が存在する
  2. FizzBuzz 問題を題材に TDD サイクル(Red-Green-Refactor)が体験できる
  3. 開発環境の構築手順(.NET SDK、NuGet、dotnet-format)が記載されている
  4. C# の OOP 設計(カプセル化、interface/abstract class、LINQ)が段階的に解説されている
  5. F# の関数型プログラミング(パイプライン演算子、判別共用体、パターンマッチ)が段階的に解説されている
  6. 記事内のコード例と apps/dotnet/ の実装が一致している

タスク

0. 環境構築(1 SP)

# タスク 見積もり 担当 状態
0.1 apps/dotnet/ に .NET ソリューション + C# xUnit + F# xUnit プロジェクトを作成 0.5h AI [ ]
0.2 .gitignore 先行設定(bin/, obj/, .vs/ 除外) 0.5h AI [ ]
0.3 テスト構成の確認(dotnet test) 0.5h AI [ ]
0.4 Makefile 作成(check タスク統合) 0.5h AI [ ]
0.5 CI ワークフロー(.github/workflows/dotnet-ci.yml)の作成 0.5h AI [ ]
0.6 docs/article/csharp/index.md と docs/article/fsharp/index.md を作成 0.5h AI [ ]

小計: 3h(理想時間)


C# 記事(docs/article/csharp/)

1. C# 第 1 部: TDD の基本サイクル(3 SP)

# タスク 見積もり 担当 状態
1.1 章 1: TODO リストと最初のテスト - 執筆 2h AI [ ]
1.2 章 1: TODO リストと最初のテスト - 実装 1h Codex [ ]
1.3 章 2: 仮実装と三角測量 - 執筆 2h AI [ ]
1.4 章 2: 仮実装と三角測量 - 実装 1h Codex [ ]
1.5 章 3: 明白な実装とリファクタリング - 執筆 2h AI [ ]
1.6 章 3: 明白な実装とリファクタリング - 実装 1h Codex [ ]

参照: tmp/k2works-wiki/記事/開発/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるCSharp入門1.md

2. C# 第 2 部: 開発環境と自動化(3 SP)

# タスク 見積もり 担当 状態
2.1 章 4: バージョン管理と Conventional Commits - 執筆 2h AI [ ]
2.2 章 5: パッケージ管理と静的解析(NuGet、dotnet-format)- 執筆 2h AI [ ]
2.3 章 6: タスクランナーと CI/CD(Makefile、GitHub Actions)- 執筆 2h AI [ ]

参照: tmp/k2works-wiki/記事/開発/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるCSharp入門2.md

3. C# 第 3 部: オブジェクト指向設計(3 SP)

# タスク 見積もり 担当 状態
3.1 章 7: カプセル化とポリモーフィズム - 執筆・実装 3h AI [ ]
3.2 章 8: デザインパターンの適用 - 執筆・実装 3h AI [ ]
3.3 章 9: SOLID 原則とモジュール設計 - 執筆・実装 3h AI [ ]

参照: tmp/k2works-wiki/記事/開発/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるCSharp入門3.md

4. C# 第 4 部: 関数型プログラミング(0 SP — バッファ内)

C# は 3 エピソード言語のため、第 4 部は C# で利用可能な FP 機能の範囲で執筆する。

# タスク 見積もり 担当 状態
4.1 章 10: 高階関数と関数合成(LINQ、デリゲート、ラムダ)- 執筆・実装 2h AI [ ]
4.2 章 11: 不変データとパイプライン処理(LINQ チェーン、Immutable Collections)- 執筆・実装 2h AI [ ]
4.3 章 12: エラーハンドリングと型安全性(Nullable 参照型、例外処理)- 執筆・実装 2h AI [ ]

F# 記事(docs/article/fsharp/)

5. F# 第 1 部: TDD の基本サイクル(3 SP)

# タスク 見積もり 担当 状態
5.1 章 1: TODO リストと最初のテスト - 執筆 2h AI [ ]
5.2 章 1: TODO リストと最初のテスト - 実装 1h Codex [ ]
5.3 章 2: 仮実装と三角測量 - 執筆 2h AI [ ]
5.4 章 2: 仮実装と三角測量 - 実装 1h Codex [ ]
5.5 章 3: 明白な実装とリファクタリング - 執筆 2h AI [ ]
5.6 章 3: 明白な実装とリファクタリング - 実装 1h Codex [ ]

参照: tmp/k2works-wiki/WIP/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるFSharp入門1.md

6. F# 第 2 部: 開発環境と自動化(3 SP)

# タスク 見積もり 担当 状態
6.1 章 4: バージョン管理と Conventional Commits - 執筆 2h AI [ ]
6.2 章 5: パッケージ管理と静的解析 - 執筆 2h AI [ ]
6.3 章 6: タスクランナーと CI/CD - 執筆 2h AI [ ]

参照: tmp/k2works-wiki/WIP/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるFSharp入門2.md

7. F# 第 3 部: オブジェクト指向プログラミングの関数型アプローチ(3 SP)

# タスク 見積もり 担当 状態
7.1 章 7: レコード型とモジュールによるカプセル化 - 執筆・実装 3h AI [ ]
7.2 章 8: 判別共用体とパターンマッチ - 執筆・実装 3h AI [ ]
7.3 章 9: モジュール設計と型による設計 - 執筆・実装 3h AI [ ]

参照: tmp/k2works-wiki/WIP/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるFSharp入門3.md

8. F# 第 4 部: 関数型プログラミング(3 SP)

# タスク 見積もり 担当 状態
8.1 章 10: 高階関数と関数合成(パイプライン演算子、部分適用)- 執筆・実装 2h AI [ ]
8.2 章 11: 不変データとコレクション処理(List / Seq モジュール、fold / map)- 執筆・実装 2h AI [ ]
8.3 章 12: エラーハンドリングと型安全性(Result / Option、計算式)- 執筆・実装 2h AI [ ]
8.4 記事と実装の同期確認 1h AI [ ]
8.5 mkdocs.yml 更新とプレビュー確認 0.5h AI [ ]

参照: tmp/k2works-wiki/WIP/テスト駆動開発から始めるXX入門/テスト駆動開発から始めるFSharp入門4.md


タスク合計

カテゴリ SP 状態
環境構築 1 [ ]
C# 第 1 部: TDD の基本サイクル 3 [ ]
C# 第 2 部: 開発環境と自動化 0 [ ]
C# 第 3 部: オブジェクト指向設計 3 [ ]
C# 第 4 部: 関数型プログラミング 0 [ ]
F# 第 1 部: TDD の基本サイクル 3 [ ]
F# 第 2 部: 開発環境と自動化 0 [ ]
F# 第 3 部: OOP の関数型アプローチ 3 [ ]
F# 第 4 部: 関数型プログラミング 0 [ ]
合計 13

設計メモ

ディレクトリ構成

apps/dotnet/
├── FizzBuzz.sln
├── Makefile
├── .gitignore
├── FizzBuzz/                                    (C# classlib)
│   ├── FizzBuzz.csproj
│   ├── FizzBuzz.cs                              (公開 API)
│   ├── Domain/
│   │   ├── Model/
│   │   │   ├── FizzBuzzValue.cs                 (値オブジェクト)
│   │   │   └── FizzBuzzList.cs                  (ファーストクラスコレクション)
│   │   └── Type/
│   │       ├── IFizzBuzzType.cs                 (インターフェース)
│   │       ├── FizzBuzzType01.cs                (タイプ 1: 通常)
│   │       ├── FizzBuzzType02.cs                (タイプ 2: 数値のみ)
│   │       └── FizzBuzzType03.cs                (タイプ 3: FizzBuzz のみ)
│   └── Application/
│       ├── IFizzBuzzCommand.cs                  (コマンドインターフェース)
│       ├── FizzBuzzValueCommand.cs              (単一値コマンド)
│       └── FizzBuzzListCommand.cs               (リストコマンド)
├── FizzBuzzTest/                                (C# xUnit tests)
│   ├── FizzBuzzTest.csproj
│   └── FizzBuzzTest.cs
├── FizzBuzzFSharp/                              (F# classlib)
│   ├── FizzBuzzFSharp.fsproj
│   ├── FizzBuzz.fs                              (公開 API)
│   ├── Domain.fs                                (ドメインモデル)
│   └── Application.fs                           (アプリケーション層)
└── FizzBuzzFSharpTest/                          (F# xUnit tests)
    ├── FizzBuzzFSharpTest.fsproj
    └── FizzBuzzTest.fs

docs/article/
├── csharp/
│   ├── index.md                                 (C# 記事トップ)
│   ├── chapter01.md  ...  chapter12.md          (12 章)
└── fsharp/
    ├── index.md                                 (F# 記事トップ)
    └── chapter01.md  ...  chapter12.md          (12 章)

C# 固有の特徴(12 章構成)

機能 内容
プロパティ(Property) 1-3 auto-implemented properties、get/set
var / 型推論 1-3 ローカル変数の型推論
interface 7, 9 明示的インターフェース実装
abstract class 7, 9 抽象クラスと仮想メソッド
namespace 5, 9 名前空間によるモジュール分割
NuGet 5 パッケージ管理
LINQ 10-12 クエリ構文、メソッド構文
デリゲート / ラムダ 10 Action、Func、ラムダ式
Nullable 参照型 12 null 安全性
パターンマッチ 12 switch 式、型パターン

F# 固有の特徴(12 章構成)

機能 内容
let バインディング 1-3 不変バインディング、関数定義
パイプライン演算子(|>) 3, 10 関数合成、データ変換
レコード型 7 不変データ構造
判別共用体 8, 11 代数的データ型
パターンマッチ 3, 8-12 match 式、アクティブパターン
モジュール 5, 9 モジュールによる名前空間分割
部分適用 / カリー化 10 関数の部分適用
List / Seq モジュール 11 map / filter / fold / collect
Result / Option 12 関数型エラーハンドリング
計算式 12 computation expressions

Nix 環境

nix develop .#dotnet
パッケージ 用途
dotnet-sdk .NET SDK 8.0(C# + F# コンパイラ、NuGet、dotnet CLI)

IT1-IT7 からの学び(適用事項)

学び IT8 での適用
1 章単位の Codex 委託が最適 同じ粒度で委託する
部完了時に進捗更新 部完了ごとに進捗ドキュメントを更新する
Nix 環境を必ず使用する nix develop .#dotnet で全操作を実行
fullCheck を CI で自動化推奨 Makefile で lint + test を統合し CI で実行
テンプレート再利用が効果的 IT1-IT7 の記事テンプレートを C#/F# 向けに適用する
C#/F# 記事は分離する docs/article/csharp/ と docs/article/fsharp/ に分離
GitHub Issue の同期を忘れない 完了時に Issue #8 をクローズする
.gitignore を最初に作成する(IT7 の学び) bin/, obj/, .vs/ を最初に除外設定

リスクと対策

リスク 影響度 対策
C# と F# の 2 言語で各 12 章の作業量 テンプレート再利用と Wiki 参照で効率化
.NET SDK 環境構築の Nix 対応 Nix 環境で動作確認済み(8.0.416)
F# の関数型概念の記事説明が複雑 判別共用体やパイプラインは図示で理解を補助
bin/ obj/ の誤コミット 最初に .gitignore 設定(IT7 の学び)

完了条件

Definition of Done

  • 12 章の記事ファイルが docs/article/csharp/ に存在
  • 12 章の記事ファイルが docs/article/fsharp/ に存在
  • apps/dotnet/ の全テストがパス(C# 38 + F# 29 = 67 テスト)
  • dotnet-format 違反ゼロ
  • mkdocs.yml に C# セクションと F# セクションが追加済み
  • ローカルプレビューで表示確認済み
  • 記事内コード例と apps/dotnet/ の実コードが同期
  • GitHub Issue #8 がクローズ済み

更新履歴

日付 更新内容 更新者
2026-03-02 初版作成 AI
2026-03-02 C#/F# 各 12 章の独立構成に変更 AI

関連ドキュメント