• #jleague
  • #financial
  • #waterfall
  • #implementation
未分類

純資産増減ウォーターフォール実装計画

概要

純資産の増減を可視化するウォーターフォールチャートを、営業利益増減のウォーターフォールチャートに加えて追加する。

現在のUI構成

ページには以下の2つの異なるウォーターフォールチャートセクションが存在する: alt text

1. P/L Waterfall(損益計算書フロー)

売上高から純利益までの損益計算書の流れを可視化:

売上高 → 営業費用 → 営業利益 → 営業外収益/費用 → 経常利益 → 特別利益/損失 → 法人税等 → 純利益

関連コンポーネント:

  • JLeaguePLWaterfallSection.vue - セクション全体(ここをタブ化する
  • JLeaguePLWaterfallChart.vue - P/L Waterfallチャート本体

このセクションをタブ化して純資産ウォーターフォールを追加する。

2. 営業利益増減(前年比較)

このセクションは変更しない。

表示場所

「P/L Waterfall」セクションをタブ化し、2つのビューを切り替え可能にする:

  1. P/L Waterfall(デフォルト表示) - 既存のチャート
  2. 純資産ウォーターフォール - 新規追加

純資産増減ウォーターフォールの構造

チャート要素

[前年度純資産] → [当期純利益] → [その他利益剰余金増減] → [資本金等の増減] → [当期純資産]

計算ロジック

1. 開始点: 前年度の純資産

  • データフィールド: 純資産(純資産の部) (前年度)

2. 当期純利益

  • データフィールド: 当期純利益 (当期)
  • 正の値: 緑色(増加)
  • 負の値: 赤色(減少)

3. その他利益剰余金増減

配当金やその他の利益剰余金変動を表す。

計算式:

その他利益剰余金増減 = (当期利益剰余金 - 前期利益剰余金) - 当期純利益
  • 配当がない場合: ほぼゼロになる
  • 配当がある場合: マイナスになる(利益剰余金の減少)
  • その他の増減がある場合: プラスまたはマイナス

4. 資本金等の増減

第三者割当増資などによる資本金・資本剰余金の変動を表す。

計算式:

資本金等の増減 = (当期資本金 + 当期資本剰余金等) - (前期資本金 + 前期資本剰余金等)

5. 終了点: 当期の純資産

  • データフィールド: 純資産(純資産の部) (当期)

整合性検証

以下の等式が成立するはず:

前年度純資産 + 当期純利益 + その他利益剰余金増減 + 資本金等の増減 = 当期純資産

注意: データの丸め誤差(2百万円程度)は許容する。

必要なデータフィールド

JSONデータから使用するフィールド(JLeagueYearDataRaw型より):

フィールド説明
純資産(純資産の部)純資産合計
資本金資本金
資本剰余金等資本剰余金等
利益剰余金利益剰余金
当期純利益当期純利益

実装タスク

Phase 1: データ層

  1. 型定義の追加 (app/types/jleague.ts)
    • NetAssetsVarianceData 型を定義
    • 純資産増減の各項目を表す型
  2. Composable作成 (app/composables/jleague/useJLeagueNetAssetsVariance.ts)
    • 純資産増減データを計算するComposableを新規作成
    • 前年度データとの比較ロジック
    • useJLeagueVarianceData.ts を参考に実装

Phase 2: テストコード

  1. 整合性テスト作成 (tests/jleague-net-assets-waterfall.test.ts)
    • 全クラブ・全年度で整合性を検証
    • 計算式: 前年度純資産 + 当期純利益 + その他利益剰余金増減 + 資本金等の増減 = 当期純資産
    • 不一致があれば詳細を出力

Phase 3: UI層

  1. 純資産ウォーターフォールチャートコンポーネント (app/components/jleague/JLeagueNetAssetsWaterfallChart.vue)
    • 既存の JLeaguePLWaterfallChart.vue を参考に作成
    • バーの色分け: 増加=緑、減少=赤
  2. タブ化UI (app/components/jleague/JLeaguePLWaterfallSection.vue の改修)
    • P/L Waterfallと純資産ウォーターフォールを切り替えるタブを追加
    • デフォルトはP/L Waterfallを表示

Phase 4: ページ統合

  1. クラブページへの統合 (app/pages/financial-quiz/jleague/club/[club].vue)
    • 純資産増減データをComposableから取得
    • タブ化されたセクションに渡す

ファイル構成(予定)

apps/web/
├── app/
│   ├── types/
│   │   └── jleague.ts                    # 型定義追加
│   ├── composables/jleague/
│   │   ├── useJLeagueVarianceData.ts     # 既存(参考)
│   │   └── useJLeagueNetAssetsVariance.ts # 新規
│   ├── components/jleague/
│   │   ├── JLeaguePLWaterfallSection.vue # 改修(タブ化)
│   │   └── JLeagueNetAssetsWaterfallChart.vue # 新規
│   └── pages/financial-quiz/jleague/club/
│       └── [club].vue                    # 統合
└── tests/
    └── jleague-net-assets-waterfall.test.ts # 新規

データ可用性の考慮

2005年頃の古いデータでは以下の値がnullの場合がある:

  • 資本剰余金等
  • 利益剰余金

この場合の対処:

  • 前年度データがない → 「データなし」メッセージ
  • 一部フィールドがnull → 0として計算(ただし「調整」項目で差額吸収)

テストケース

  1. 整合性テスト: 全クラブ・全年度で計算値と実際値が一致
  2. 境界条件: 前年度データがない年(各クラブ最初の年)
  3. 特殊ケース: 大規模増資があったクラブ(資本金等の大きな変動)
  4. 赤字年度: 当期純損失の年の表示