イテレーション 3 計画
概要
| 項目 |
内容 |
| イテレーション |
3 |
| 期間 |
Week 5-6(2 週間) |
| ゴール |
Java 版を Python 版から展開し、TDD で実装する |
| 目標 SP |
3 |
ゴール
イテレーション終了時の達成状態
- 記事:
docs/article/java/ に全 9 章 + index.md が完成している
- 実装:
apps/java/ に TDD 実装コードが動作する状態で存在する
- 公開: mkdocs.yml に Java 版が反映され、ローカルプレビューで閲覧可能
成功基準
ユーザーストーリー
対象ストーリー
| ID |
ユーザーストーリー |
SP |
優先度 |
| US-003 |
Java 版を Python 版から展開する |
3 |
必須 |
| 合計 |
|
3 |
|
ストーリー詳細
US-003: Java 版を Python 版から展開する
ストーリー:
学習者として、Java でアルゴリズムとデータ構造を TDD で学びたい。なぜなら、Java は企業システムで広く使われており、オブジェクト指向設計を深く学べるからだ。
受入条件:
- 全 9 章が Python 版を基に Java 版として再構成されている
- 各章に TDD のコード例(テスト → 実装 → リファクタリング)が含まれている
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)
技術メモ
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)