Skip to content

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

概要

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

KPT

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

  • IT-10 引き継ぎ事項の完全反映: .gitignoretarget/.bsp/.metals/)初期整備・sbt 設定・CI テンプレート参照・レートリミット対策のコミット細分化を DoD に明記し、全て達成した
  • Python 版との差分補完作業: 初期実装後に Python 版との差分が発覚し、全 6 章(第1・2・5・6・9章)を大幅追記。7 ファイル・+2,209 行の追記で記事品質を大幅向上した
  • Scala 3 関数型スタイルの積極活用: sealed trait + case classUnion TypeNode | 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.ymllein test または clj -M:test)を整備する
  • 記事と差分チェックの同時実施: 実装完了後すぐに Python 版と差分チェックを行い、TDD セクション・フローチャートを含む記事を完成させる
  • Clojure 固有の実装方針決定: 関数型プログラミング(不変データ構造・高階関数・遅延評価・マクロ)の活用方針を事前に確定する

更新履歴

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