Skip to content

イテレーション 3 ふりかえり(Retrospective)

基本情報

項目 内容
イテレーション番号 3
期間 2026-01-26 〜 2026-02-03(実績)
実施日 2026-02-03
参加者 開発チーム全員
フォーマット KPT(Keep, Problem, Try)

実績サマリー

完了状況

項目 計画 実績 達成率
ストーリーポイント 18SP 18SP 100%
ユーザーストーリー 4件 4件 100%
理想時間 120h - -
作業日数 10日 8日 20%短縮
コミット数 - 20件 -

テスト結果

カテゴリ 件数 結果
E2E テスト 136件 ✅ 全パス
バックエンドユニットテスト 全件 ✅ 全パス
フロントエンドユニットテスト 全件 ✅ 全パス
テストカバレッジ 80%+ ✅ 良好

ビルド状態

環境 状態
バックエンドビルド ✅ 成功
フロントエンドビルド ✅ 成功
CI/CD パイプライン ✅ 正常稼働(MSW 環境の E2E テスト修正完了)

主要成果物

  1. 仕訳編集機能(US-JNL-002)

  2. 「下書き」ステータスの仕訳のみ編集可能

  3. 仕訳日付、摘要、明細行の編集
  4. 貸借一致バリデーション
  5. 楽観的ロック(バージョンフィールド)による同時編集防止
  6. PUT /api/journal-entries/{id} API

  7. 仕訳削除機能(US-JNL-003)

  8. 「下書き」ステータスの仕訳のみ削除可能

  9. 削除前確認ダイアログ
  10. 削除成功メッセージ表示
  11. DELETE /api/journal-entries/{id} API

  12. 仕訳一覧表示(US-JNL-004)

  13. 仕訳番号、日付、摘要、金額、ステータスの一覧表示

  14. ステータス・日付範囲によるフィルタリング
  15. ページネーション対応
  16. 一覧から編集画面への遷移
  17. GET /api/journal-entries API

  18. 仕訳検索機能(US-JNL-005)

  19. 日付範囲、勘定科目、金額範囲、摘要での検索

  20. 複数条件の組み合わせ検索
  21. 検索条件のリセット機能
  22. GET /api/journal-entries/search API

  23. CI E2E テスト修正

  24. MSW 環境での cy.intercept + cy.wait パターンを DOM 待機に置き換え

  25. MSW POST ハンドラーにデータ永続化を追加
  26. 全 136 E2E テストが CI 環境で安定動作

KPT 分析

Keep(続けること)

技術的成功事項

  • バックエンド→フロントエンド→E2E の段階的実装: 各ストーリーをバックエンド API → フロントエンド UI → E2E テストの順序で一貫して実装
  • 楽観的ロックの実装: バージョンフィールドによるシンプルな楽観的ロック機構を実装し、同時編集を防止
  • ページネーション共通化: Pagination コンポーネントを共通化し、一覧・検索画面で再利用
  • MSW モックハンドラーの整備: フロントエンド単独でのテスト・開発が可能な MSW ハンドラーを整備
  • Vavr Either/IO モナドの継続使用: エラーハンドリングを関数型スタイルで一貫して実装

プロセス的成功事項

  • コミット粒度の改善: 前イテレーション(7件)に比べ、20件のコミットでより細かい単位で記録
  • Conventional Commits の遵守: feat/fix/test/docs の分類を一貫して使用
  • 進捗ドキュメントの定期更新: 各ストーリー完了時にイテレーション計画の進捗を更新

チームワーク

  • Codex と Claude の効率的な分担: バックエンドを Codex、フロントエンド・E2E を Claude が担当する分業が定着
  • CI 問題の早期検出と修正: MSW 環境での E2E テスト失敗を検出し、根本原因(cy.intercept + MSW の非互換)を特定・修正

Problem(問題点・課題)

CI E2E テストの不安定性

  • 問題: MSW の Service Worker が fetch リクエストをブラウザレベルで横取りし、Cypress の cy.intercept が機能しない
  • 影響: CI 環境で複数の E2E テストが cy.wait タイムアウトで失敗
  • 対応: 全ての cy.intercept + cy.wait パターンを DOM 要素待機に置き換え(4cde1c5 で修正完了)

MSW データ永続化の欠如

  • 問題: MSW の POST ハンドラーが登録した仕訳をメモリ上に保持しないため、作成→一覧→編集のフローが動作しない
  • 影響: E2E テストで「一覧から編集画面に遷移」するテストが失敗
  • 対応: POST ハンドラーに mockJournalEntries への永続化を追加

共通タスクの未着手

  • 未着手のまま引き継ぎ:

  • COMMON-11: 日次バーンダウン収集仕組み構築

  • COMMON-12: ESLint 複雑度チェック CI 統合
  • COMMON-13: React Router v7 Future Flags 有効化

  • 理由: ストーリー実装と CI 修正を優先した結果、共通タスクに着手できなかった

見積もり精度

  • 計画通りの SP だが共通タスク未完了: ストーリーは 18SP/18SP で 100% 完了だが、共通タスク分を考慮すると実質的にはスコープ超過
  • E2E テスト修正の工数: 当初計画にない CI 修正作業が発生(約 4-6h 相当)

Try(次に試すこと)

具体的改善アクション

# アクション 責任者 期限 期待効果
1 共通タスクの優先度を上げてイテレーション計画に組み込む - イテレーション 4 開始時 技術的負債の蓄積防止
2 CI テスト戦略の見直し(MSW + Cypress のベストプラクティス文書化) - イテレーション 4 中 CI 安定性の向上
3 MSW ハンドラーのテスト追加(ハンドラー単体テスト) - イテレーション 4 MSW 環境の品質向上
4 E2E テストで cy.intercept を使わない方針の徹底 - 継続 CI の安定動作
5 React Router v7 Future Flags の有効化 - イテレーション 4 警告解消、将来互換性確保

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

必須対応事項

  1. 総勘定元帳照会(US-LDG-001) - イテレーション 4 で実装予定
  2. 日次残高照会(US-LDG-003) - イテレーション 4 で実装予定

技術検証タスク

  • 元帳照会のデータ集計方式の設計(仕訳→元帳の転記ロジック)
  • 残高計算のパフォーマンス最適化方針

技術的負債(引き継ぎ)

  • COMMON-11: 日次バーンダウン収集仕組み構築
  • COMMON-12: ESLint 複雑度チェック CI 統合
  • COMMON-13: React Router v7 Future Flags 有効化
  • COMMON-14: バックエンドのインポート整理

ドキュメント整備タスク

  • イテレーション 4 計画書の作成
  • 元帳管理機能の API ドキュメント更新

メトリクス

開発メトリクス

メトリクス
総コミット数 20
追加行数 約 8,362
削除行数 約 651
変更ファイル数 78

品質メトリクス

メトリクス 目標 判定
テストカバレッジ 80%+ 80%
ユニットテスト合格率 100% 100%
E2E テスト合格率 100%(136/136) 100%
ビルド成功率 100% 100%

プロセスメトリクス

メトリクス
計画 SP 18
実績 SP 18
ベロシティ 18SP/イテレーション
作業効率 120%(10 日計画 → 8 日完了)
累積実績ベロシティ 17.3SP/イテレーション平均((18+16+18)/3)

学び(Lessons Learned)

技術的学び

  1. MSW と Cypress の非互換性

  2. MSW の Service Worker はブラウザの fetch API をインターセプトするため、Cypress の cy.intercept(ネットワークレベル)は機能しない

  3. E2E テストでは DOM 要素の状態変化を待機する方が、ネットワークリクエスト待機より堅牢
  4. MSW のモックデータは永続化しないとフロー全体のテストが困難

  5. 楽観的ロックの実装パターン

  6. バージョンフィールドによるシンプルな方式で十分な同時編集防止が可能

  7. フロントエンドでバージョンを送信し、バックエンドで不一致検出→エラー返却の流れ

  8. ページネーションの設計

  9. オフセット方式で十分な規模のデータ量

  10. 共通 Pagination コンポーネントの再利用で実装コスト削減
  11. バックエンドの PagedResponse ジェネリクスで型安全なレスポンス

  12. 検索機能の設計パターン

  13. MyBatis の動的 SQL で複数条件の組み合わせ検索を実現

  14. フロントエンドのフィルタ状態管理は URL パラメータと同期

プロセス的学び

  1. コミット粒度の改善効果

  2. イテレーション 2(7件)→ イテレーション 3(20件)でコミット粒度が改善

  3. バックエンド→フロントエンド→E2E テストの各段階でコミットすることで追跡性が向上

  4. CI 問題への対応コスト

  5. CI の不具合修正は計画外作業だが、放置すると全テストの信頼性が低下

  6. 根本原因の特定と修正に注力することで、長期的な CI 安定性を確保

  7. ベロシティの安定

  8. 3 イテレーション連続で 16-18SP を達成し、ベロシティが安定

  9. 今後の計画は 17SP/イテレーションで見積もり可能

次回イテレーションへの期待

達成目標

  • イテレーション 4 ゴール: 元帳照会と統合テストを完成させ、リリース 1.0 MVP を達成する
  • 計画 SP: 10SP
  • 対象ストーリー: US-LDG-001(総勘定元帳照会)、US-LDG-003(日次残高照会)

重点項目

  1. 仕訳→元帳の転記ロジック設計
  2. 残高計算のパフォーマンス最適化
  3. 技術的負債の解消(共通タスク消化)
  4. リリース 1.0 MVP のリリース準備

総評

成功した点

  • 全ストーリー完了: 計画した 4 ストーリー(18SP)を 100% 達成
  • 仕訳管理 CRUD の完成: 入力・編集・削除・一覧・検索の全機能が揃い、実用レベルに到達
  • CI E2E テストの安定化: MSW 環境での E2E テスト問題を根本解決し、全 136 テストが安定動作
  • コミット粒度の改善: 前イテレーション比で約 3 倍のコミット数、追跡性が大幅に向上
  • 高い品質維持: テスト全合格、CI/CD パイプライン正常稼働を継続

改善が必要な点

  • 共通タスクの優先度管理: 3 イテレーション連続で共通タスクが未着手、技術的負債が蓄積
  • CI テスト戦略の文書化: MSW + Cypress のベストプラクティスをドキュメント化し、今後の E2E テスト作成時に参照可能にする
  • 日次進捗追跡: 3 イテレーション連続で未実装、バーンダウンデータの収集を自動化する必要あり

次イテレーションへの自信度

高い - 3 イテレーション連続で計画 SP を 100% 達成し、ベロシティは安定(17.3SP 平均)。仕訳ドメインが完成しているため、元帳照会は仕訳データの集計・表示に集中できる。イテレーション 4 の計画 SP(10SP)はベロシティに対して余裕があり、技術的負債の解消にも時間を確保可能。


更新履歴

日付 更新内容 更新者
2026-02-03 初版作成 Claude Opus 4.5