イテレーション計画 8 - 財務会計システム¶
基本情報¶
| 項目 | 内容 |
|---|---|
| イテレーション番号 | 8 |
| 期間 | 2026-02-17 〜 2026-03-02(2週間) |
| 作業日数 | 10日 |
| チーム人数 | 3名 |
| 総作業可能時間 | 150時間(3名 × 5時間/日 × 10日) |
| 前イテレーションベロシティ | 13SP |
| 累積平均ベロシティ | 15.9SP |
イテレーションゴール¶
損益計算書表示を実装し、リリース 2.0 機能拡張版を完了する
リリース 2.0 の最後のイテレーションとして、損益計算書表示を実装する。貸借対照表(US-FS-001)で確立したアーキテクチャパターン(Repository/Service/Controller + PDF/Excel エクスポート)を再利用し、効率的に実装する。イテレーション完了をもってリリース 2.0 機能拡張版(57SP)が全て達成される。
選択したストーリー¶
| ストーリーID | ストーリー名 | SP | 優先度 |
|---|---|---|---|
| US-FS-002 | 損益計算書表示 | 8 | 必須 |
| 合計 | 8 |
コミットメント: 8SP(累積平均ベロシティ 15.9SP に対して余裕あり。リリース 2.0 完了の統合テスト・品質確認に残り時間を活用)
ゴール¶
イテレーション終了時の達成状態¶
- 損益計算書表示: 収益・費用の各科目で損益計算書を表示でき、期間指定と前期比較が可能
- 利益計算: 売上総利益、営業利益、経常利益、当期純利益が正しく計算される
- エクスポート: PDF/Excel でダウンロードできる
- リリース 2.0 完了: 全 12 ストーリー(57SP)の受入条件を満たす
成功基準¶
- US-FS-002 の全受入条件を満たしている
- テストカバレッジ 80% 以上を維持
- SonarQube Quality Gate パス
- リリース 2.0 全機能の統合テスト完了
ユーザーストーリー¶
US-FS-002: 損益計算書表示(8SP)¶
ストーリー:
経理責任者として、損益計算書を表示したい。なぜなら、企業の収益性を把握するためだ。
受入条件:
- 収益、費用の各科目と金額が表示される
- 売上総利益、営業利益、経常利益、当期純利益が計算される
- 期間を指定して表示できる
- 前期比較ができる
- PDF/Excel でダウンロードできる
タスク分解¶
US-FS-002: 損益計算書表示(8SP)¶
| タスクID | タスク名 | 理想時間 | 担当 | 状態 |
|---|---|---|---|---|
| FS-002-01 | 損益計算書ユースケース設計 | 2h | Claude | [x] |
| FS-002-02 | GetProfitAndLossQuery / Result 実装 | 2h | Codex | [x] |
| FS-002-03 | GetProfitAndLossService 実装(利益計算ロジック) | 5h | Codex | [x] |
| FS-002-04 | ProfitAndLossRepository(Output Port)+ MyBatis mapper | 3h | Codex | [x] |
| FS-002-05 | 前期比較ロジック実装 | 3h | Codex | [x] |
| FS-002-06 | 損益計算書 API 実装(GET /api/profit-and-loss) | 2h | Codex | [x] |
| FS-002-07 | 単体テスト作成 | 4h | Codex | [x] |
| FS-002-08 | 損益計算書画面 UI 実装(報告式レイアウト) | 6h | Codex | [x] |
| FS-002-09 | 前期比較 UI 実装 | 3h | Codex | [x] |
| FS-002-10 | PDF/Excel ダウンロード機能実装 | 4h | Codex | [x] |
| FS-002-11 | フロントエンド API 連携 | 2h | Codex | [x] |
| FS-002-12 | 統合テスト(E2E テスト) | 3h | Claude | [x] |
| 小計 | 39h |
実装詳細¶
バックエンド実装(貸借対照表パターン再利用)¶
アーキテクチャ層構造:
ProfitAndLossController(REST API)
↓
GetProfitAndLossUseCase(入力ポート)
↓
GetProfitAndLossService(ユースケース実装)
↓
ProfitAndLossRepository(出力ポート)
↓
MyBatisProfitAndLossRepository(実装)+ ProfitAndLossMapper(MyBatis)
↓
ProfitAndLossEntity(エンティティ)
Input Port(Query):
public record GetProfitAndLossQuery(
LocalDate dateFrom, // 期間開始日(必須)
LocalDate dateTo, // 期間終了日(必須)
LocalDate comparativeDateFrom, // 前期比較 開始日(任意)
LocalDate comparativeDateTo // 前期比較 終了日(任意)
)
貸借対照表との差異:
| 項目 | 貸借対照表(BS) | 損益計算書(PL) |
|---|---|---|
| フィルタ | bspl_category = 'B' |
bspl_category = 'P' |
| 期間 | 時点指定(date) | 期間指定(dateFrom, dateTo) |
| セクション | ASSET, LIABILITY, EQUITY | REVENUE, EXPENSE |
| 利益計算 | balanced チェック | 段階利益計算 |
| 符号 | ASSET=正, LIABILITY/EQUITY=負→正 | REVENUE=正(貸方), EXPENSE=正(借方) |
損益計算書の利益計算ロジック¶
売上高(REVENUE のうち売上関連)
- 売上原価(EXPENSE のうち原価関連)
= 売上総利益
売上総利益
- 販売費及び一般管理費(EXPENSE のうち営業費関連)
= 営業利益
営業利益
+ 営業外収益(REVENUE のうち営業外)
- 営業外費用(EXPENSE のうち営業外)
= 経常利益
経常利益
+ 特別利益(REVENUE のうち特別)
- 特別損失(EXPENSE のうち特別)
= 税引前当期純利益
税引前当期純利益
- 法人税等
= 当期純利益
注: 現在のアカウント構造(AccountType = REVENUE / EXPENSE のみ)では段階利益の詳細分類が限定的。初期実装では以下のシンプルな構造とする:
- 収益合計: REVENUE タイプの全勘定科目
- 費用合計: EXPENSE タイプの全勘定科目
- 当期純利益: 収益合計 - 費用合計
勘定科目コードの先頭桁で分類する方式で段階利益に対応可能(将来拡張)。
データソース¶
accountsテーブル —bspl_category = 'P'で損益計算書項目を抽出daily_account_balancesテーブル — 期間フィルタ(posting_date BETWEEN dateFrom AND dateTo)profit_and_lossビュー(V10 で作成済み)— 参考
MyBatis クエリ設計¶
SELECT
a.code AS account_code,
a.name AS account_name,
a.account_type,
COALESCE(SUM(d.debit_amount), 0) AS total_debit,
COALESCE(SUM(d.credit_amount), 0) AS total_credit,
CASE
WHEN a.account_type = 'EXPENSE' THEN
COALESCE(SUM(d.debit_amount), 0) - COALESCE(SUM(d.credit_amount), 0)
WHEN a.account_type = 'REVENUE' THEN
COALESCE(SUM(d.credit_amount), 0) - COALESCE(SUM(d.debit_amount), 0)
ELSE 0
END AS amount
FROM accounts a
LEFT JOIN daily_account_balances d
ON a.code = d.account_code
AND d.is_closing_entry = 0
AND d.posting_date BETWEEN #{dateFrom} AND #{dateTo}
WHERE a.bspl_category = 'P'
GROUP BY a.code, a.name, a.account_type
ORDER BY a.code
API 設計¶
| メソッド | エンドポイント | 説明 | 権限 |
|---|---|---|---|
| GET | /api/profit-and-loss | 損益計算書表示 | 全ロール |
| GET | /api/profit-and-loss/export | 損益計算書エクスポート | 全ロール |
API パラメータ詳細¶
GET /api/profit-and-loss¶
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| dateFrom | LocalDate | 任意 | 期間開始日(省略時: 会計年度期首) |
| dateTo | LocalDate | 任意 | 期間終了日(省略時: 当日) |
| comparativeDateFrom | LocalDate | 任意 | 前期比較 期間開始日 |
| comparativeDateTo | LocalDate | 任意 | 前期比較 期間終了日 |
GET /api/profit-and-loss/export¶
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| format | String | 必須 | 出力形式(pdf / excel) |
| dateFrom | LocalDate | 任意 | 期間開始日 |
| dateTo | LocalDate | 任意 | 期間終了日 |
フロントエンド実装¶
コンポーネント構成(貸借対照表パターンに準拠):
ProfitAndLossPage.tsx- 損益計算書ページProfitAndLossFilter.tsx- 期間指定(dateFrom, dateTo)+ 前期比較期間入力ProfitAndLossTable.tsx- 報告式レイアウト(縦並び)ProfitAndLossSummary.tsx- 利益サマリー(当期純利益・前期比較)getProfitAndLoss.ts- API クライアントexportProfitAndLoss.ts- エクスポート API クライアント
損益計算書レイアウト(報告式):
┌─────────────────────────────────────────────────┐
│ 損 益 計 算 書 │
│ 自 2026年1月1日 至 2026年12月31日 │
├─────────────────────────────────────────────────┤
│ 【収益の部】 │
│ 売上高 1,000,000 │
│ 受取利息 5,000 │
│ 収益合計 1,005,000 │
├─────────────────────────────────────────────────┤
│ 【費用の部】 │
│ 売上原価 600,000 │
│ 給料 200,000 │
│ 地代家賃 100,000 │
│ 費用合計 900,000 │
├─────────────────────────────────────────────────┤
│ 当期純利益 105,000 │
└─────────────────────────────────────────────────┘
ルーティング:
- Route:
/financial-statements/profit-and-loss - Sidebar: financial-statements children に追加
作業時間サマリー¶
| カテゴリ | 理想時間 |
|---|---|
| US-FS-002: 損益計算書表示 | 39h |
| リリース 2.0 統合テスト | 8h |
| 品質確認(SonarQube 等) | 4h |
| 合計 | 51h |
キャパシティ: 150h(3名 × 5h × 10日) バッファ: 99h(66%)— リリース 2.0 品質確認とリファクタリングに活用
詳細スケジュール¶
gantt
title イテレーション8 詳細スケジュール(2週間)
dateFormat YYYY-MM-DD
axisFormat %m/%d
section US-FS-002 損益計算書表示
ユースケース設計 :fs2-1, 2026-02-17, 1d
Query/Result/Service実装 :fs2-2, 2026-02-18, 2d
Repository・MyBatis mapper :fs2-3, after fs2-2, 1d
前期比較ロジック :fs2-4, after fs2-3, 1d
API実装・単体テスト :fs2-5, after fs2-4, 1d
UI実装(報告式レイアウト) :fs2-6, 2026-02-24, 2d
前期比較UI・エクスポート :fs2-7, after fs2-6, 1d
E2Eテスト :fs2-8, after fs2-7, 1d
section リリース 2.0 品質確認
統合テスト :qa-1, after fs2-8, 1d
SonarQube Quality Gate確認 :qa-2, after qa-1, 1d
section マイルストーン
イテレーション8完了 :milestone, m1, 2026-03-02, 0d
リリース2.0完了 :milestone, m2, 2026-03-02, 0d
リスクと対策¶
| リスク | 影響度 | 発生確率 | 対策 |
|---|---|---|---|
| 段階利益計算の複雑性 | 中 | 中 | 初期実装は収益合計-費用合計のシンプル構造、段階利益は勘定科目コード分類で将来対応 |
| 期間指定クエリのパフォーマンス | 低 | 低 | daily_account_balances にインデックスが存在、BS と同じ JOIN パターン |
| PDF/Excel エクスポートの報告式レイアウト | 低 | 低 | BS のエクスポートパターンを再利用、レイアウトのみ変更 |
| E2E テストのデータ依存性 | 低 | 中 | visibilityTestSetup パターンを継続適用 |
前イテレーションからの改善アクション¶
| # | アクション | 状態 | 備考 |
|---|---|---|---|
| 1 | 貸借対照表パターンの再利用 | 計画済み | Repository/Service/Controller + エクスポートを再利用 |
| 2 | ページネーション楽観的更新の横展開 | 計画済み | 必要に応じて他ページにも適用 |
| 3 | SonarQube Quality Gate 確認 | 計画済み | IT-8 完了時に確認・記録 |
| 4 | リリース 2.0 統合テスト | 計画済み | 全機能の統合テスト実施 |
リリース 2.0 機能拡張版 達成要件(イテレーション 5-8)¶
機能要件¶
- ユーザー管理(編集・削除・一覧)※イテレーション 5 完了
- 仕訳承認ワークフロー(申請・承認)※イテレーション 5 完了
- 仕訳差し戻し・確定 ※イテレーション 6 完了
- 月次残高照会 ※イテレーション 6 完了
- 残高試算表表示 ※イテレーション 6 完了
- 貸借対照表表示 ※イテレーション 7 完了
- 補助元帳照会 ※イテレーション 7 完了
- 損益計算書表示 ← イテレーション 8 で実装完了(2026-02-17)
イテレーション 8 の位置づけ¶
イテレーション 8 はリリース 2.0 機能拡張版の最後のイテレーション。損益計算書表示(US-FS-002 8SP)を実装することで、全 12 ストーリー(57SP)が完了し、リリース 2.0 が達成される。
コミットメント確認¶
チーム合意事項¶
- US-FS-002 の受入条件を理解した
- タスク分解と見積もりに合意した
- 8SP を2週間で完了することにコミットする
- リリース 2.0 の統合テストを実施する
- デイリースタンドアップを毎日実施する
- 問題発生時は即座に共有する
完了の定義(Definition of Done)¶
- すべての受入条件を満たしている
- 単体テストが作成され、すべてパスしている
- 統合テスト(E2E テスト)が作成され、すべてパスしている
- コードレビューが完了している
- CI/CD パイプラインでビルドが成功している
- テストカバレッジ 80% 以上を維持している
- SonarQube Quality Gate パス
- ドキュメントが更新されている
進捗状況¶
ストーリー進捗¶
| ストーリーID | ストーリー名 | SP | 状態 | 完了日 |
|---|---|---|---|---|
| US-FS-002 | 損益計算書表示 | 8 | ✅ 完了 | 2026-02-17 |
日次残理想時間¶
| 日 | 計画残時間 | 実績残時間 | 差異 |
|---|---|---|---|
| Day 1 (2/17) | 51h | 0h | -51h(全タスク完了) |
更新履歴¶
| 日付 | 更新内容 | 更新者 |
|---|---|---|
| 2026-02-17 | 初版作成 | Claude Opus 4.6 |
| 2026-02-17 | US-FS-002 全タスク完了、受入条件達成、コミットメント確認・完了の定義更新 | Claude Opus 4.6 |