イテレーション 4 ふりかえり¶
概要¶
| 項目 | 内容 |
|---|---|
| イテレーション | 4 |
| 期間 | Week 7-8(2 週間) |
| ゴール | C# 版を Python 版から展開し、TDD で実装する |
| 実績 SP | 3 / 3 SP(達成率 100%) |
KPT¶
Keep(良かったこと・続けること)¶
- TDD サイクルの徹底: Red → Green → Refactor を 1 章ずつ実施し、238 テストが全パスした
- Java 版の知見活用: IT-3(Java 版)の実装パターンを参照しながらスムーズに展開できた
- C# タプル分解によるスワップ:
(a[i], a[j]) = (a[j], a[i]);の簡潔な書き方で Python との対応を明確にできた - ジェネリクスの活用:
FixedStack<T>、FixedQueue<T>、BinarySearchTree<T>を型パラメーターで実装し、型安全性を確保した - CI ワークフローの追加:
ci-csharp.ymlを追加し、自動テスト体制を整備できた - 章ごとのコミット: 実装と記事を同一コミットで完結する規律を維持できた
Problem(課題・改善すべきこと)¶
- LINQ と手動実装の境界: 教育目的で手動実装を優先したが、LINQ を使った表現との対比をより明確に示すべき箇所があった
- null 許容型の扱い: C# の
T?によるジェネリクスと null 許容型の組み合わせで一部複雑なコードになった - テスト件数の把握:
dotnet testのログから正確な件数を確認するコマンドを毎回調べる必要があった
Try(次回試すこと)¶
- LINQ 活用記事の補足: 第 2 章・第 6 章に LINQ を使ったイディオマティックな実装例を補足として追加する
- dotnet test カバレッジ:
--collect:"XPlat Code Coverage"オプションでカバレッジを計測してみる - Ruby 版への応用: C# の OOP パターン(プロパティ、ジェネリクス)と Ruby の比較を念頭に置いて IT-5 を進める
ベロシティ実績¶
| イテレーション | 言語 | 計画 SP | 実績 SP | 達成率 |
|---|---|---|---|---|
| IT1 | Python(原本) | 5 | 5 | 100% |
| IT2 | TypeScript | 3 | 3 | 100% |
| IT3 | Java | 3 | 3 | 100% |
| IT4 | C# | 3 | 3 | 100% |
| 累計 | 14 | 14 | 100% |
次のイテレーション(IT-5: Ruby 版)¶
- US-005: Ruby 版を Python 版から展開する(3 SP)
- Ruby の特徴: ブロック・Enumerable・
attr_accessor・動的型付き - 環境: Ruby + RSpec(または Minitest)