Skip to content

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

概要

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

KPT

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

  • TDD サイクルの徹底: Red → Green → Refactor を全 9 章で実施し、204 テストが全パスした
  • カスタムアサートマクロ(test_helper.h)の活用: 外部テストフレームワークなしでシンプルかつ統一的なテスト構造を実現した
  • IT-7 の反省事項の活用: Go 版での教訓(初期実装の関数不足)を踏まえ、C 版では Python 版との差分チェックリストを事前整備し、実装漏れをゼロにした
  • CI ワークフロー(ci-c.yml)の早期整備: Nix devShell 経由で make test を実行する CI を開発開始時に整備し、品質担保体制を確立した
  • メモリ安全性の確保: AddressSanitizer-fsanitize=address)を Makefile に組み込み、メモリリークをテスト段階で検出・解消した
  • Python 版との比較表の標準化: Go 版で確立した「Python との比較表」の形式を C 版でも全章に適用し、記事品質を統一した
  • Go 版記事の品質向上も並行実施: Python 版の構成・記述量に準拠した Go 版全 9 章の書き直しを完了(4,759 行追加)した

Problem(課題・改善すべきこと)

  • ローカルプレビュー確認が未完了: mkdocs serve によるローカルプレビュー確認が IT-8 の期間内に完了しなかった(成功基準の 1 項目が未達)
  • C 言語特有のメモリ管理コスト: BST・連結リスト等のデータ構造で free() の再帰呼び出し実装に想定以上の工数がかかった
  • Go 版記事の書き直しが想定外の追加作業として発生: IT-8 の作業中に Go 版記事の記述量不足が発覚し、対応に時間を要した(IT-8 の計画外作業)

Try(次のイテレーションで試したいこと)

  • Rust 版(IT-9)では、Cargo の所有権モデル(Box<T>Option<T>)に対応した設計方針を開発開始前に確定する
  • ローカルプレビュー確認をイテレーション完了条件として明示的にチェックし、スキップしない
  • 記事の記述量チェックを開発完了基準に加え、Python 版との差分が 30% 以内に収まることを確認する

ベロシティ

イテレーション 計画 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%
8(C) 5 5 100%
合計 28 28 100%

累積 SP: 28 / 66(Phase 1: 20/20 完了、Phase 2: 8/38 = 21.1%)


品質メトリクス

メトリクス
テスト件数(C 版) 204
テスト通過率 100%
作成ファイル数 実装 9 + ヘッダ 9 + テスト 9 + 記事 10 + CI 1 + Makefile 1 = 39
テストフレームワーク カスタムアサートマクロ(test_helper.h)
C 規格 C99
メモリ安全性 AddressSanitizer 確認済み
Go 版記事追加行数 4,759 行

次のイテレーションへの引き継ぎ

  • IT-9(Rust 版): apps/rust/ に Rust 実装を構築する(5 SP)
  • 所有権モデルの設計: Box<T> によるツリー・リスト実装、Option<T> によるエラー処理の方針を事前決定する
  • 参照実装の活用: Python 版 + Go 版 + C 版の 3 言語が参照として利用可能
  • CI テンプレート: ci-c.yml を参考に ci-rust.ymlcargo test)を整備する

更新履歴

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