イテレーション 11 ふりかえり
概要
| 項目 |
内容 |
| イテレーション |
11 |
| 期間 |
Week 21-22(2 週間) |
| ゴール |
Scala 版を Python 版から展開し、TDD で実装する |
| 実績 SP |
5 / 5 SP(達成率 100%) |
KPT
Keep(良かったこと・続けること)
- IT-10 引き継ぎ事項の完全反映:
.gitignore(target/、.bsp/、.metals/)初期整備・sbt 設定・CI テンプレート参照・レートリミット対策のコミット細分化を DoD に明記し、全て達成した
- Python 版との差分補完作業: 初期実装後に Python 版との差分が発覚し、全 6 章(第1・2・5・6・9章)を大幅追記。7 ファイル・+2,209 行の追記で記事品質を大幅向上した
- Scala 3 関数型スタイルの積極活用:
sealed trait + case class、Union Type(Node | Null)、パターンマッチ、Option[T]、コンテキスト境界([T: Ordering])など Scala 固有の機能を全章で活用した
- 125 テスト全パス:
recure(真に再帰的な関数)2 テストを追加し、最終的に 125 テスト全通過を確認した
- mkdocs ビルド成功確認:
npx gulp mkdocs:build(Docker 経由)で全 9 章のドキュメントビルドが成功した
Problem(課題・改善すべきこと)
- 記事の差分が後から発覚: 初期実装時の記事は「コードのみ」の状態で、TDD セクション(Red/Green)・フローチャート・計算量表が不足していた。Python 版との差分チェックが後回しになり、追加作業コストが発生した
- IT-10 のふりかえりファイル未作成:
retrospective-10.md が独立ファイルとして作成されず、iteration_plan-10.md 内のセクションとして記録された。ふりかえりファイルの管理一貫性に欠けた
prime3 関数のハードコード: while n <= 1000 のように上限値がハードコードされており、引数 x が 1000 以外では正確に動作しない状態(Python 版と同様の制約)
Try(次のイテレーションで試したいこと)
- 記事執筆と差分チェックの同時実施: 章の TDD 実装コーディング完了後、記事執筆と同じタスクで Python 版との差分チェックを行い、後から発覚する補完コストをゼロにする
- Clojure(IT-12)向け事前準備: 関数型言語(Lisp 系)の概念説明(不変性・高階関数・マクロ・REPL 駆動開発)を最初から充実させる計画を立てる。Clojure の
leiningen または deps.edn 環境確認を事前に行う
- ふりかえりファイルは独立作成を維持:
retrospective-N.md として必ず独立ファイルを作成し、iteration_plan-N.md とは分離して管理する
ベロシティ
| イテレーション |
計画 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% |
| 9(Rust) |
5 |
5 |
100% |
| 10(F#) |
5 |
5 |
100% |
| 11(Scala) |
5 |
5 |
100% |
| 合計 |
43 |
43 |
100% |
累積 SP: 43 / 66(Phase 1: 20/20 完了、Phase 2: 23/46 = 50.0%)
品質メトリクス
| メトリクス |
値 |
| テスト件数(Scala 版) |
125 |
| テスト通過率 |
100% |
| 作成ファイル数 |
実装 9(章ごとの Scala ファイル)+ テスト 9 + 記事 10(9章 + index.md)+ CI 1 = 29 |
| テストフレームワーク |
ScalaTest(AnyFunSuite + Matchers スタイル) |
| Scala バージョン |
Scala 3(インデントベース構文) |
| ビルドツール |
sbt(Scala Build Tool) |
| 追記済み差分 |
Python 版との差分補完:7 ファイル、+2,209 行 |
| mkdocs ビルド |
成功(Docker 経由 npx gulp mkdocs:build) |
次のイテレーションへの引き継ぎ
- IT-12(Clojure 版):
apps/clojure/ に Clojure 実装を構築する(5 SP)
- 環境構築の事前確認:
leiningen または deps.edn(Clojure CLI)と flake.nix の Clojure シェル設定を事前に確認する
.gitignore の初期整備: プロジェクト作成時に target/、.clj-kondo/、.lsp/ 等のビルド成果物・ツール生成ファイルを .gitignore に登録する
- 参照実装の活用: Python 版 + Java 版(JVM 系)+ Scala 版(JVM 関数型)の 3 言語が参照として利用可能
- CI テンプレート:
ci-scala.yml を参考に ci-clojure.yml(lein test または clj -M:test)を整備する
- 記事と差分チェックの同時実施: 実装完了後すぐに Python 版と差分チェックを行い、TDD セクション・フローチャートを含む記事を完成させる
- Clojure 固有の実装方針決定: 関数型プログラミング(不変データ構造・高階関数・遅延評価・マクロ)の活用方針を事前に確定する
更新履歴
| 日付 |
更新内容 |
更新者 |
| 2026-04-13 |
初版作成 |
- |