Skip to content

イテレーション 3 計画

概要

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

ゴール

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

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

成功基準

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

ユーザーストーリー

対象ストーリー

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

ストーリー詳細

US-003: Java 版を Python 版から展開する

ストーリー:

学習者として、Java でアルゴリズムとデータ構造を TDD で学びたい。なぜなら、Java は企業システムで広く使われており、オブジェクト指向設計を深く学べるからだ。

受入条件:

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

タスク

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

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

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

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

3. 第 2 章 配列(0.25 SP)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

11. 仕上げ(0.25 SP)

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

DoD(Definition of Done)

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

技術メモ

Java 版の特徴

概念 Python Java
スワップ a[i], a[j] = a[j], a[i] int tmp = a[i]; a[i] = a[j]; a[j] = tmp;
ジェネリクス list[Any] List<T>
例外クラス 内部クラス カスタム例外クラス
リスト操作 リスト内包表記 Stream API

テスト環境

  • フレームワーク: JUnit 5
  • ビルドツール: Gradle(または Maven)
  • Java バージョン: 21(LTS)