Skip to content

イテレーション 4 計画

概要

項目 内容
イテレーション 4
期間 Week 7-8(2 週間)
ゴール C# 版を Python 版から展開し、TDD で実装する
目標 SP 3

ゴール

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

  1. 記事: docs/article/csharp/ に全 9 章 + index.md が完成している
  2. 実装: apps/csharp/ に TDD 実装コードが動作する状態で存在する
  3. 公開: mkdocs.yml に C# 版が反映され、ローカルプレビューで閲覧可能

成功基準

  • 9 章すべてのファイルが作成されている
  • 各章のコード例が apps/csharp/ の実コードと同期している(記事記述と実装を同一コミットで完結)
  • apps/csharp/ のテストが全てパス
  • mkdocs.yml の nav に C# 全 9 章が追加されている
  • ローカルプレビューで表示確認済み
  • 各章執筆時に Python 版との内容差分チェックを実施済み

ユーザーストーリー

対象ストーリー

ID ユーザーストーリー SP 優先度
US-004 C# 版を Python 版から展開する 3 必須
合計 3

ストーリー詳細

US-004: C# 版を Python 版から展開する

ストーリー:

学習者として、C# でアルゴリズムとデータ構造を TDD で学びたい。なぜなら、C# は .NET エコシステムで広く使われており、型システムと LINQ を活用した現代的なプログラミングを深く学べるからだ。

受入条件:

  1. 全 9 章が Python 版を基に C# 版として再構成されている
  2. 各章に TDD のコード例(テスト → 実装 → リファクタリング)が含まれている
  3. apps/csharp/ で全テストがパスする

タスク

1. プロジェクト初期化(0.5 SP)

# タスク 見積もり 状態
1-1 .NET プロジェクト作成(apps/csharp/) 30 分 [ ]
1-2 xUnit テスト環境設定 30 分 [ ]
1-3 Nix devShell(.#csharp)設定確認 30 分 [ ]

2. 第 1 章 基本的なアルゴリズム(0.25 SP)

# タスク 見積もり 状態
2-1 TDD 実装(3 値最大値・中央値、条件判定、繰り返し) 30 分 [ ]
2-2 記事執筆(docs/article/csharp/01-basic-algorithms.md) 30 分 [ ]

3. 第 2 章 配列(0.25 SP)

# タスク 見積もり 状態
3-1 TDD 実装(配列操作、探索、並べ替え) 20 分 [ ]
3-2 記事執筆(docs/article/csharp/02-arrays.md) 15 分 [ ]

4. 第 3 章 探索アルゴリズム(0.25 SP)

# タスク 見積もり 状態
4-1 TDD 実装(線形探索、二分探索、ハッシュ法) 20 分 [ ]
4-2 記事執筆(docs/article/csharp/03-search-algorithms.md) 15 分 [ ]

5. 第 4 章 スタックとキュー(0.25 SP)

# タスク 見積もり 状態
5-1 TDD 実装(FixedStack、FixedQueue) 20 分 [ ]
5-2 記事執筆(docs/article/csharp/04-stacks-and-queues.md) 15 分 [ ]

6. 第 5 章 再帰アルゴリズム(0.25 SP)

# タスク 見積もり 状態
6-1 TDD 実装(再帰基本、ハノイの塔、8 クイーン) 20 分 [ ]
6-2 記事執筆(docs/article/csharp/05-recursion.md) 15 分 [ ]

7. 第 6 章 ソートアルゴリズム(0.25 SP)

# タスク 見積もり 状態
7-1 TDD 実装(バブル〜計数ソート) 20 分 [ ]
7-2 記事執筆(docs/article/csharp/06-sort-algorithms.md) 15 分 [ ]

8. 第 7 章 文字列処理(0.25 SP)

# タスク 見積もり 状態
8-1 TDD 実装(BF/KMP/BM 法、文字カウント、回文) 20 分 [ ]
8-2 記事執筆(docs/article/csharp/07-strings.md) 15 分 [ ]

9. 第 8 章 リスト(0.25 SP)

# タスク 見積もり 状態
9-1 TDD 実装(LinkedList、DoublyLinkedList、ArrayLinkedList) 20 分 [ ]
9-2 記事執筆(docs/article/csharp/08-linked-lists.md) 15 分 [ ]

10. 第 9 章 木構造(0.25 SP)

# タスク 見積もり 状態
10-1 TDD 実装(BinarySearchTree) 20 分 [ ]
10-2 記事執筆(docs/article/csharp/09-trees.md) 15 分 [ ]

11. 仕上げ(0.25 SP)

# タスク 見積もり 状態
11-1 index.md 作成(docs/article/csharp/index.md) 15 分 [ ]
11-2 mkdocs.yml の nav に C# 版を追加 15 分 [ ]
11-3 ローカルプレビュー確認 15 分 [ ]

タスク合計

カテゴリ SP 理想時間
プロジェクト初期化 0.5 90 分
第 1〜9 章(執筆 + 実装) 2.0 270 分
仕上げ 0.5 45 分
合計 3 約 405 分(約 7 時間)

1 SP あたり: 約 2.3 時間(AI 支援により短縮) 進捗率: 0%(0/3 SP)


スケジュール

Week 1(Day 1-5)

gantt
    title イテレーション 4 - Week 1
    dateFormat  YYYY-MM-DD
    section プロジェクト初期化
    .NET プロジェクト作成     :d1, 2026-04-14, 1d
    第1章 実装 + 記事         :d2, after d1, 1d
    第2章 実装 + 記事         :d3, after d2, 1d
    第3章 実装 + 記事         :d4, after d3, 1d
    第4章 実装 + 記事         :d5, after d4, 1d
タスク
Day 1 プロジェクト初期化(.NET, xUnit, Nix 設定)
Day 2 第 1 章 基本的なアルゴリズム(実装 + 記事)
Day 3 第 2 章 配列 + 第 3 章 探索アルゴリズム
Day 4 第 4 章 スタックとキュー + 第 5 章 再帰
Day 5 第 6 章 ソートアルゴリズム

Week 2(Day 6-10)

gantt
    title イテレーション 4 - Week 2
    dateFormat  YYYY-MM-DD
    section 後半章 + 仕上げ
    第7章 実装 + 記事         :a1, 2026-04-21, 1d
    第8章 実装 + 記事         :a2, after a1, 1d
    第9章 実装 + 記事         :a3, after a2, 1d
    仕上げ・index・mkdocs     :a4, after a3, 1d
    統合テスト・確認          :a5, after a4, 1d
タスク
Day 6 第 7 章 文字列処理(実装 + 記事)
Day 7 第 8 章 リスト(実装 + 記事)
Day 8 第 9 章 木構造(実装 + 記事)
Day 9 index.md 作成、mkdocs.yml 更新
Day 10 統合テスト、ローカルプレビュー確認、デモ準備

技術メモ

C# 版の特徴

概念 Python C#
スワップ a[i], a[j] = a[j], a[i] (a[i], a[j]) = (a[j], a[i]);(タプル分解)
ジェネリクス list[Any] List<T>
例外クラス 内部クラス カスタム例外クラス
リスト操作 リスト内包表記 LINQ(Where, Select, OrderBy 等)
null 安全 None nullable 型(T?
プロパティ @property { get; set; }

テスト環境

  • フレームワーク: xUnit(または NUnit)
  • ビルドツール: dotnet CLI
  • .NET バージョン: .NET 8(LTS)

Java との対比

C# は Java と設計思想が類似しており、IT-3(Java)の実装パターンを参照しながら展開できる。 主な相違点:

  • LINQ が言語組み込み(Java は Stream API)
  • プロパティ構文が簡潔
  • タプル分解によるスワップがより自然

DoD(Definition of Done)

  • apps/csharp/ で全テストがパス
  • 9 章の記事ファイルが作成済み
  • mkdocs.yml の nav に C# 全 9 章が追加されている
  • Python 版との差分が各記事に明記されている
  • GitHub Issue #4(US-004)がクローズされている

リスクと対策

リスク 影響度 対策
Nix 環境での .NET SDK セットアップ失敗 nixpkgs の dotnet-sdk を使用、事前に動作確認
LINQ と手動実装の選択判断 教育目的優先で手動実装を基本とし、LINQ は補足として紹介

完了条件

デモ項目

  1. apps/csharp/dotnet test が全テストパスすること
  2. docs/article/csharp/ の全 9 章がローカルプレビューで表示されること
  3. IT-4 ふりかえりでベロシティ実績を記録すること

更新履歴

日付 更新内容 更新者
2026-04-12 初版作成 -

関連ドキュメント