イテレーション 7 ふりかえり
概要
| 項目 |
内容 |
| イテレーション |
7 |
| 期間 |
Week 13-14(2 週間) |
| ゴール |
Go 版を Python 版から展開し、TDD で実装する |
| 実績 SP |
3 / 3 SP(達成率 100%) |
KPT
Keep(良かったこと・続けること)
- TDD サイクルの徹底: Red → Green → Refactor を 1 章ずつ実施し、60 テストが全パスした
- Python 版との差分チェックを実施: 参照実装と比較して不足していた実装(
Prime3・SsearchSentinel・OpenHash・EightQueen・ShellSort・HeapSort・CountingSort・ArrayLinkedList 等)を追記し、品質を高めた
- Go 標準の
testing パッケージ活用: 外部依存ゼロでテストを構成でき、シンプルな設計を維持できた
- テーブル駆動テスト形式の採用: 複数入力・期待値をまとめて表現でき、テストの可読性が向上した
- 章ごとのコミット規律: 実装と記事を同一コミットで完結する規律を維持できた
- CI ワークフロー(ci-go.yml)の追加: Nix devShell 経由で
go test ./... を実行する CI を整備し、自動テスト体制を確立した
- IT-6 の反省事項を活かした: PHP 版の教訓(CI 未追加・記事方針の確認不足)を踏まえ、Go 版では開発開始時に CI と執筆方針を先に整備した
Problem(課題・改善すべきこと)
- 初期実装に不足があった: 最初の TDD 実装(42 テスト)は Python 版の一部関数(
Prime3・番兵法・オープンアドレス法・8 王妃問題・シェルソート・ヒープソート・度数ソート等)をカバーしておらず、後から追記が必要になった
- EightQueen テストの実行時間:
EightQueen(8^8 = 16,777,216 件全列挙)のテストが chapter05 全体で約 8 秒かかり、通常の章と比べて時間がかかった
- Go 固有の型対応で迷いが生じた: Python の
tuple(ハノイの手順)→ [2]string、set[tuple[int,int]](迷路探索)→ map[[2]int]bool の変換方法を確定するまでに検討が必要だった
Try(次のイテレーションで試したいこと)
- C 版(IT-8)では、開発開始時に Python 版との差分チェックリストを事前に作成し、実装漏れをゼロにする
- 時間のかかるテスト(全列挙系)は
testing.Short() フラグで条件実行できるか検討する
- 記事執筆時に Go 版で確立した「Python との比較表」の形式を C 版でも標準化する
ベロシティ
| イテレーション |
計画 SP |
実績 SP |
達成率 |
| 1(Python) |
5 |
5 |
100% |
| 2(TypeScript) |
3 |
3 |
100% |
| 3(Java) |
3 |
3 |
100% |
| 4(C#) |
3 |
3 |
100% |
| 5(Ruby) |
3 |
3 |
100% |
| 6(PHP) |
3 |
3 |
100% |
| 7(Go) |
3 |
3 |
100% |
| 合計 |
23 |
23 |
100% |
累積 SP: 23 / 66(Phase 1: 20/20 完了、Phase 2: 3/38 = 7.9%)
品質メトリクス
| メトリクス |
値 |
| テスト件数 |
60 |
| テスト通過率 |
100% |
| 作成ファイル数 |
実装 9 + テスト 9 + 記事 10 + CI 1 = 29 |
| テストフレームワーク |
Go 標準 testing パッケージ |
| Go バージョン |
go 1.24 |
次のイテレーションへの引き継ぎ
- IT-8(C 版):
apps/c/ に C 実装を構築する(5 SP)
- 参照実装の活用: Python 版 + Go 版の実装が参照として利用可能
- CI テンプレート:
ci-go.yml を参考に ci-c.yml を整備する
更新履歴
| 日付 |
更新内容 |
更新者 |
| 2026-04-12 |
初版作成 |
- |