Skip to content

イテレーション 7 ふりかえり

概要

項目 内容
イテレーション 7
期間 Week 13-14(2 週間)
ゴール Go 版を Python 版から展開し、TDD で実装する
実績 SP 3 / 3 SP(達成率 100%)

KPT

Keep(良かったこと・続けること)

  • TDD サイクルの徹底: Red → Green → Refactor を 1 章ずつ実施し、60 テストが全パスした
  • Python 版との差分チェックを実施: 参照実装と比較して不足していた実装(Prime3SsearchSentinelOpenHashEightQueenShellSortHeapSortCountingSortArrayLinkedList 等)を追記し、品質を高めた
  • 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]stringset[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 初版作成 -