Skip to content

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

概要

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

KPT

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

  • IT-11 引き継ぎ事項の完全反映: .gitignoretarget/.clj-kondo/.lsp/.cpcache/)初期整備・Leiningen 設定・CI テンプレート参照・レートリミット対策のコミット細分化を DoD に明記し、全て達成した
  • Clojure 関数型スタイルの積極活用: loop/recur(末尾再帰最適化)、defrecord/defprotocol(データ型)、atom(可変状態管理)、lazy-seq(遅延評価)、map/filter/reduce(高階関数)など Clojure 固有の機能を全章で活用した
  • 50 テスト・204 アサーション全パス: clojure.testdeftest + is マクロ)で全テストが通過し、品質基準を達成した
  • mkdocs ビルド成功確認: npx gulp mkdocs:build(Docker 経由)で全 9 章のドキュメントビルドが成功した
  • 記事と差分チェックの同時実施: IT-11 のふりかえりで挙げた改善事項を反映し、章の TDD 実装コーディング完了後に記事執筆と Python 版差分チェックを同タスクで実施した
  • 不変データ構造の一貫した活用: Clojure の vectorlistmapset をデフォルトとして使用し、可変状態は atom で最小限に管理する設計方針を一貫して維持した

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

  • worktree マージ時の mkdocs.yml コンフリクト: 複数の worktree で並行作業を行った結果、mkdocs.yml の nav セクションでコンフリクトが発生し、手動解消が必要だった。worktree 間での共有ファイル(mkdocs.ymldocs/development/index.md)の編集タイミングを調整する仕組みが不足していた
  • テスト数が他言語版より少ない(50 件): F#(242 件)、Scala(125 件)、Rust(285 件)と比較して、Clojure 版のテスト数は 50 件と少なめだった。Clojure の is マクロが 1 テスト内に複数のアサーションをまとめやすい設計のため、テスト件数は少ないがアサーション数(204)でカバレッジを確保している
  • Lisp 系構文の学習コスト: S 式ベースの構文は他の言語と大きく異なるため、記事の読者にとってコード例の理解にハードルがある可能性がある

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

  • worktree マージ戦略の確立: mkdocs.ymldocs/development/index.md など共有ファイルの変更は、マージ直前に最新の develop ブランチを取り込んでから編集する手順を標準化する
  • Elixir(IT-13)向け事前準備: Elixir の mix ビルドツール・ExUnit テストフレームワーク・パターンマッチ・パイプ演算子(|>)の活用方針を事前に確定する。flake.nix の Elixir devShell 設定を確認する
  • テスト粒度の指針策定: テスト件数とアサーション数のバランスについて、言語ごとのテストフレームワーク特性を考慮した品質基準を検討する
  • ふりかえりファイルは独立作成を維持: retrospective-N.md として必ず独立ファイルを作成し、iteration_plan-N.md とは分離して管理する(IT-11 からの継続)

ベロシティ

イテレーション 計画 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%
12(Clojure) 5 5 100%
合計 48 48 100%

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


品質メトリクス

メトリクス
テスト件数(Clojure 版) 50
アサーション数 204
テスト通過率 100%(50/50)
作成ファイル数 実装 9(章ごとの Clojure ファイル)+ テスト 9 + 記事 10(9章 + index.md)+ CI 1 = 29
テストフレームワーク clojure.test(deftest + is マクロ)
ビルドツール Leiningen(lein)
mkdocs ビルド 成功(Docker 経由 npx gulp mkdocs:build

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

  • IT-13(Elixir 版): apps/elixir/ に Elixir 実装を構築する(5 SP)
  • 環境構築の事前確認: mix(Elixir ビルドツール)と flake.nix の Elixir シェル設定を事前に確認する
  • .gitignore の初期整備: プロジェクト作成時に _build/deps/.elixir_ls/ 等のビルド成果物・ツール生成ファイルを .gitignore に登録する
  • 参照実装の活用: Python 版 + F# 版(関数型)+ Clojure 版(関数型・JVM)の 3 言語が参照として利用可能
  • CI テンプレート: ci-clojure.yml を参考に ci-elixir.ymlmix test)を整備する
  • 記事と差分チェックの同時実施: 実装完了後すぐに Python 版と差分チェックを行い、TDD セクション・フローチャートを含む記事を完成させる
  • Elixir 固有の実装方針決定: パターンマッチ・パイプ演算子・プロトコル・ビヘイビア・GenServer の活用方針を事前に確定する
  • worktree マージ戦略: 共有ファイル(mkdocs.ymldocs/development/index.md)の変更はマージ直前に最新 develop を取り込んでから実施する

更新履歴

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