イテレーション計画 1 - 財務会計システム¶
基本情報¶
| 項目 | 内容 |
|---|---|
| イテレーション番号 | 1 |
| 期間 | 2026-01-05 〜 2026-01-16(2週間) |
| 作業日数 | 10日 |
| チーム人数 | 3名 |
| 総作業可能時間 | 150時間(3名 × 5時間/日 × 10日) |
イテレーションゴール¶
認証基盤とマスタ管理の基礎を構築し、システムの土台を確立する
ユーザーがログイン・ログアウトでき、システム管理者がユーザーを登録でき、経理責任者が勘定科目を登録・編集できる状態を目指す。
選択したストーリー¶
| ストーリーID | ストーリー名 | SP | 優先度 |
|---|---|---|---|
| US-AUTH-001 | ログイン | 3 | 必須 |
| US-AUTH-002 | ログアウト | 2 | 必須 |
| US-AUTH-003 | ユーザー登録 | 5 | 必須 |
| US-MST-001 | 勘定科目登録 | 5 | 必須 |
| US-MST-002 | 勘定科目編集 | 3 | 必須 |
| 合計 | 18 |
コミットメント: 18SP(予定ベロシティ 13〜16SP を若干上回るが、初期セットアップ含むため妥当)
タスク分解¶
US-AUTH-001: ログイン(3SP) ✅ 完了¶
受入条件:
- ユーザーIDとパスワードを入力してログインできる
- 認証成功時、JWT トークンが発行される
- 認証失敗時、エラーメッセージが表示される
- 3回連続でログイン失敗した場合、アカウントがロックされる
- ログイン成功後、ダッシュボード画面に遷移する
| タスクID | タスク名 | 理想時間 | 担当 | 状態 |
|---|---|---|---|---|
| AUTH-001-01 | 認証ドメインモデル設計 | 2h | - | 完了 |
| AUTH-001-02 | User エンティティ実装 | 2h | - | 完了 |
| AUTH-001-03 | UserRepository 実装 | 2h | - | 完了 |
| AUTH-001-04 | JWT トークン生成・検証サービス実装 | 4h | - | 完了 |
| AUTH-001-05 | ログインユースケース実装 | 2h | - | 完了 |
| AUTH-001-06 | ログイン API 実装 | 2h | - | 完了 |
| AUTH-001-07 | 単体テスト作成 | 4h | - | 完了 |
| AUTH-001-08 | ログイン画面 UI 実装 | 4h | - | 完了 |
| AUTH-001-09 | フロントエンド認証状態管理 | 2h | - | 完了 |
| AUTH-001-10 | 統合テスト | 2h | - | 完了 |
| 小計 | 26h |
US-AUTH-002: ログアウト(2SP) ✅ 完了¶
受入条件:
- ログアウトボタンをクリックするとログアウトできる
- ログアウト後、ログイン画面に遷移する
- JWT トークンが無効化される
| タスクID | タスク名 | 理想時間 | 担当 | 状態 |
|---|---|---|---|---|
| AUTH-002-01 | ログアウトユースケース実装 | 1h | - | 完了 |
| AUTH-002-02 | トークン無効化機能実装 | 2h | - | 完了 |
| AUTH-002-03 | ログアウト API 実装 | 1h | - | 完了 |
| AUTH-002-04 | 単体テスト作成 | 2h | - | 完了 |
| AUTH-002-05 | ログアウトボタン UI 実装 | 2h | - | 完了 |
| AUTH-002-06 | フロントエンド状態クリア | 1h | - | 完了 |
| AUTH-002-07 | 統合テスト | 1h | - | 完了 |
| 小計 | 10h |
US-AUTH-003: ユーザー登録(5SP) ✅ 完了¶
受入条件:
- ユーザーID、氏名、パスワード、ロールを入力して登録できる
- ユーザーIDは一意である必要がある
- パスワードは8文字以上で、英数字を含む必要がある
- ロールは管理者、経理責任者、経理担当者、閲覧者から選択できる
- 登録成功時、確認メッセージが表示される
| タスクID | タスク名 | 理想時間 | 担当 | 状態 |
|---|---|---|---|---|
| AUTH-003-01 | Role 値オブジェクト実装 | 2h | - | 完了 |
| AUTH-003-02 | パスワードポリシー実装 | 2h | - | 完了 |
| AUTH-003-03 | パスワードハッシュ化サービス実装 | 2h | - | 完了 |
| AUTH-003-04 | ユーザー登録ユースケース実装 | 3h | - | 完了 |
| AUTH-003-05 | ユーザー登録 API 実装 | 2h | - | 完了 |
| AUTH-003-06 | 一意性チェック実装 | 2h | - | 完了 |
| AUTH-003-07 | 単体テスト作成 | 4h | - | 完了 |
| AUTH-003-08 | ユーザー登録画面 UI 実装 | 6h | - | 完了 |
| AUTH-003-09 | バリデーション表示実装 | 2h | - | 完了 |
| AUTH-003-10 | 統合テスト | 2h | - | 完了 |
| 小計 | 27h |
US-MST-001: 勘定科目登録(5SP) ✅ 完了¶
受入条件:
- 科目コード、科目名、勘定科目種別を入力して登録できる
- 科目コードは一意である必要がある
- 勘定科目種別は資産、負債、純資産、収益、費用から選択できる
- 登録成功時、確認メッセージが表示される
| タスクID | タスク名 | 理想時間 | 担当 | 状態 |
|---|---|---|---|---|
| MST-001-01 | 勘定科目ドメインモデル設計 | 2h | - | 完了 |
| MST-001-02 | AccountCode 値オブジェクト実装 | 2h | - | 完了 |
| MST-001-03 | AccountType 列挙型実装 | 1h | - | 完了 |
| MST-001-04 | Account エンティティ実装 | 3h | - | 完了 |
| MST-001-05 | AccountRepository 実装 | 3h | - | 完了 |
| MST-001-06 | 勘定科目登録ユースケース実装 | 3h | - | 完了 |
| MST-001-07 | 勘定科目登録 API 実装 | 2h | - | 完了 |
| MST-001-08 | 単体テスト作成 | 4h | - | 完了 |
| MST-001-09 | 勘定科目登録画面 UI 実装 | 6h | - | 完了 |
| MST-001-10 | 統合テスト | 2h | - | 完了 |
| 小計 | 28h |
US-MST-002: 勘定科目編集(3SP) ✅ 完了¶
受入条件:
- 科目名、勘定科目種別を編集できる
- 科目コードは変更できない
- 仕訳で使用されている科目の種別は変更できない(スタブ実装: 仕訳機能は将来実装のため、現時点では AccountUsageChecker が常に false を返す)
- 編集成功時、確認メッセージが表示される
| タスクID | タスク名 | 理想時間 | 担当 | 状態 |
|---|---|---|---|---|
| MST-002-01 | 勘定科目編集ユースケース実装 | 3h | - | 完了 |
| MST-002-02 | 使用中チェックロジック実装 | 2h | - | 完了 |
| MST-002-03 | 勘定科目編集 API 実装 | 2h | - | 完了 |
| MST-002-04 | 単体テスト作成 | 3h | - | 完了 |
| MST-002-05 | 勘定科目編集画面 UI 実装 | 4h | - | 完了 |
| MST-002-06 | 統合テスト | 2h | - | 完了 |
| 小計 | 16h |
実装詳細¶
バックエンド実装:
UpdateAccountUseCase/UpdateAccountCommand/UpdateAccountResult- Input/Output PortUpdateAccountService- ユースケース実装(Vavr Either/IO モナド使用)AccountUsageChecker/AccountUsageCheckerImpl- 使用中チェック(スタブ)AccountController- PUT /api/accounts/{id}、GET /api/accounts、GET /api/accounts/{id}UpdateAccountRequest/UpdateAccountResponse/AccountResponse- DTO
フロントエンド実装:
updateAccount.ts/getAccounts.ts/getAccount.ts- API クライアントAccountList.tsx- 勘定科目一覧ビューEditAccountForm.tsx- 勘定科目編集フォームAccountListPage.tsx/EditAccountPage.tsx- ページコンポーネント- ルーティング:
/master/accounts(一覧)、/master/accounts/:id/edit(編集)
テスト:
UpdateAccountServiceTest- ユースケースユニットテストAccountControllerTest- コントローラーユニットテストAccountApiIntegrationTest- API 統合テスト
共通タスク(スパイク・環境構築)¶
| タスクID | タスク名 | 理想時間 | 担当 | 状態 |
|---|---|---|---|---|
| COMMON-01 | 開発環境セットアップ確認 | 2h | - | 完了 |
| COMMON-02 | DB マイグレーション設定 | 2h | - | 完了 |
| COMMON-03 | JWT ライブラリ選定・検証(スパイク) | 4h | - | 完了 |
| COMMON-04 | API 共通エラーハンドリング実装 | 3h | - | 完了 |
| COMMON-05 | フロントエンド共通レイアウト実装 | 4h | - | 完了 |
| COMMON-06 | CI/CD パイプライン確認 | 2h | - | 完了 |
| 小計 | 17h |
完了した共通タスク詳細¶
COMMON-01: 開発環境セットアップ(完了)¶
バックエンド環境を apps/backend に構築:
- Spring Boot 4.0.0 + Java 25 + Gradle 9.2.1
- 最小限のセットアップで動作確認済み
構築したファイル:
apps/backend/
├── build.gradle.kts # Spring Boot 4.0.0 + Java 25
├── settings.gradle.kts
├── gradle.properties
├── gradlew / gradlew.bat # Gradle Wrapper 9.2.1
├── gradle/wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
└── src/main/
├── java/com/example/accounting/
│ ├── Application.java
│ └── infrastructure/web/controller/
│ └── HealthController.java
└── resources/
└── application.yml
動作確認:
./gradlew buildでビルド成功./gradlew bootRunでアプリケーション起動成功/api/healthエンドポイントが正常に応答
次のステップで追加予定:
- MyBatis 3.0.x
- PostgreSQL 16
- Flyway 10.x(マイグレーション)
- Testcontainers(統合テスト)
- ArchUnit(アーキテクチャテスト)
- JWT ライブラリ
COMMON-02: DB マイグレーション設定(完了)¶
- Flyway 設定を application.yml に追加
- 初期マイグレーション
V1__create_accounts_table.sql作成 - PostgreSQL 16 + Testcontainers による統合テスト環境構築
COMMON-03: JWT ライブラリ選定・検証(完了)¶
- jjwt ライブラリ(0.12.6)を選定
- JwtService 実装(トークン生成・検証)
- JwtProperties による設定管理
- 単体テスト作成済み
COMMON-04: API 共通エラーハンドリング実装(完了)¶
- ヘルスチェック API
/api/health実装 - GlobalExceptionHandler 実装
- BusinessException, ResourceNotFoundException 実装
- ErrorResponse DTO 実装
COMMON-05: フロントエンド共通レイアウト実装(完了)¶
- React + TypeScript + Vite 環境構築
- TanStack Query によるデータフェッチ
- MSW によるモック環境
- ESLint + Prettier 設定
- Vitest + Cypress テスト環境
COMMON-06: CI/CD パイプライン確認(完了)¶
- GitHub Actions ワークフロー構築
- backend-ci.yml: ビルド、テスト、静的解析
- frontend-ci.yml: ビルド、テスト、Lint
- backend-deploy.yml: Heroku デプロイ
- frontend-deploy.yml: Heroku デプロイ
- Docker Compose 開発環境
- Heroku Container デモ環境
作業時間サマリー¶
| カテゴリ | 理想時間 |
|---|---|
| US-AUTH-001: ログイン | 26h |
| US-AUTH-002: ログアウト | 10h |
| US-AUTH-003: ユーザー登録 | 27h |
| US-MST-001: 勘定科目登録 | 28h |
| US-MST-002: 勘定科目編集 | 16h |
| 共通タスク | 17h |
| 合計 | 124h |
キャパシティ: 150h(3名 × 5h × 10日) バッファ: 26h(17%)
詳細スケジュール¶
gantt
title イテレーション1 詳細スケジュール(2週間)
dateFormat YYYY-MM-DD
axisFormat %m/%d
section 共通タスク
開発環境・CI/CD確認 :common1, 2026-01-05, 1d
DBマイグレーション設定 :common2, after common1, 1d
JWTスパイク :common3, 2026-01-05, 2d
section US-AUTH-001 ログイン
認証ドメインモデル設計 :auth1-1, 2026-01-06, 1d
User/JWT実装 :auth1-2, after auth1-1, 2d
ログインAPI実装 :auth1-3, after auth1-2, 1d
単体テスト :auth1-4, after auth1-2, 1d
ログイン画面UI :auth1-5, 2026-01-08, 2d
統合テスト :auth1-6, after auth1-5, 1d
section US-AUTH-002 ログアウト
ログアウト実装 :auth2-1, after auth1-3, 1d
ログアウトUI・テスト :auth2-2, after auth2-1, 1d
section US-AUTH-003 ユーザー登録
Role・パスワードポリシー :auth3-1, 2026-01-07, 1d
ユーザー登録ユースケース :auth3-2, after auth3-1, 1d
ユーザー登録API :auth3-3, after auth3-2, 1d
単体テスト :auth3-4, after auth3-2, 1d
ユーザー登録画面UI :auth3-5, 2026-01-12, 2d
統合テスト :auth3-6, after auth3-5, 1d
section US-MST-001 勘定科目登録
勘定科目ドメインモデル :mst1-1, 2026-01-08, 1d
Account実装 :mst1-2, after mst1-1, 2d
勘定科目登録API :mst1-3, after mst1-2, 1d
単体テスト :mst1-4, after mst1-2, 1d
勘定科目登録画面UI :mst1-5, 2026-01-13, 2d
統合テスト :mst1-6, after mst1-5, 1d
section US-MST-002 勘定科目編集
勘定科目編集実装 :mst2-1, after mst1-3, 1d
勘定科目編集UI・テスト :mst2-2, after mst2-1, 1d
section マイルストーン
イテレーション1完了 :milestone, m1, 2026-01-16, 0d
週次計画¶
Week 1(2026-01-05 〜 2026-01-09)¶
| 日 | 主要タスク |
|---|---|
| 月 | 環境確認、JWT スパイク開始 |
| 火 | DB マイグレーション、認証ドメインモデル設計 |
| 水 | User エンティティ、JWT サービス実装 |
| 木 | ログイン API、Role・パスワードポリシー |
| 金 | ログイン画面 UI、ユーザー登録ユースケース |
Week 2(2026-01-12 〜 2026-01-16)¶
| 日 | 主要タスク |
|---|---|
| 月 | ユーザー登録画面 UI、勘定科目ドメインモデル |
| 火 | Account 実装、勘定科目登録 API |
| 水 | 勘定科目登録画面 UI |
| 木 | 勘定科目編集実装、統合テスト |
| 金 | 最終統合テスト、デモ準備、レビュー |
リスクと対策¶
| リスク | 影響度 | 発生確率 | 対策 |
|---|---|---|---|
| JWT 実装の複雑化 | 高 | 中 | Week 1 でスパイク実施、ライブラリ活用 |
| DB 接続の問題 | 中 | 低 | 早期に環境確認、Docker 設定見直し |
| フロントエンド統合の遅延 | 中 | 中 | バックエンド API を先行完成 |
コミットメント確認¶
チーム合意事項¶
- 全ストーリーの受入条件を理解した
- タスク分解と見積もりに合意した
- 18SP を2週間で完了することにコミットする
- デイリースタンドアップを毎日実施する
- 問題発生時は即座に共有する
完了の定義(Definition of Done)¶
- すべての受入条件を満たしている
- 単体テストが作成され、すべてパスしている
- 統合テストが作成され、すべてパスしている
- コードレビューが完了している
- CI/CD パイプラインでビルドが成功している
- ドキュメントが更新されている
進捗状況¶
ストーリー進捗¶
| ストーリーID | ストーリー名 | SP | 状態 | 完了日 |
|---|---|---|---|---|
| US-AUTH-001 | ログイン | 3 | 完了 | 2025-12-23 |
| US-AUTH-002 | ログアウト | 2 | 完了 | 2025-12-23 |
| US-AUTH-003 | ユーザー登録 | 5 | 完了 | 2026-01-19 |
| US-MST-001 | 勘定科目登録 | 5 | 完了 | 2026-01-20 |
| US-MST-002 | 勘定科目編集 | 3 | 完了 | 2026-01-20 |
日次残理想時間¶
| 日 | 計画残時間 | 実績残時間 | 差異 |
|---|---|---|---|
| Day 1 | 124h | - | - |
| Day 2 | 112h | - | - |
| Day 3 | 100h | - | - |
| Day 4 | 88h | - | - |
| Day 5 | 74h | - | - |
| Day 6 | 62h | - | - |
| Day 7 | 50h | - | - |
| Day 8 | 38h | - | - |
| Day 9 | 24h | - | - |
| Day 10 | 0h | - | - |
更新履歴¶
| 日付 | 更新内容 | 更新者 |
|---|---|---|
| 2026-01-05 | 初版作成 | - |
| 2025-12-18 | バックエンド環境構築完了(COMMON-01, 02, 04) | Claude |
| 2025-12-19 | 共通タスク全完了(COMMON-03, 05, 06) | Claude |
| 2025-12-23 | US-AUTH-001(ログイン)、US-AUTH-002(ログアウト)完了 | Claude |
| 2026-01-19 | US-AUTH-003(ユーザー登録)完了 | Claude + Codex |
| 2026-01-20 | US-MST-001(勘定科目登録)完了、進捗状況更新 | Claude Opus 4.5 |
| 2026-01-20 | US-MST-002(勘定科目編集)完了、イテレーション1全完了 | Claude Opus 4.5 |
| 2026-01-20 | ふりかえり実施、retrospective-1.md 作成 | Claude Opus 4.5 |
関連ドキュメント¶
- イテレーション 1 ふりかえり - KPT 分析と改善アクション