財務データJSON生成スクリプトの使い方
このドキュメントでは、企業の財務データ(CSVファイル)から統合JSONファイルを生成するスクリプトの使い方を説明します。
概要
複数の企業の年次・四半期財務データ(CSV形式)を、単一のJSON形式にまとめるスクリプトです。列指向フォーマットを使用することで、データサイズを大幅に削減しています(CSV 272KB → JSON 46KB、83%削減)。
ファイル構成
入力ファイル(CSVデータ)
場所: financial-data/2025-12-02/(リポジトリルート)
ファイル名形式:
- 年次データ:
{企業コード}_ann_{日付}.csv(例:NVDA_ann_20251202.csv) - 四半期データ:
{企業コード}_q_{日付}.csv(例:NVDA_q_20251202.csv)
対象企業:
- NVDA (NVIDIA)
- MSFT (Microsoft)
- GOOG (Alphabet/Google)
- META (Meta)
- APP (Apple)
- ORCL (Oracle)
- TSM (Taiwan Semiconductor)
- AVGO (Broadcom)
- MDB (MongoDB)
- COHR (Coherent)
- CRDO (Credo Technology)
- CRWV (Crownwave)
- NBIS (Nebius)
- TEM (Tempus AI)
合計: 28個のCSVファイル(14社 × 2種類)
処理スクリプト
場所: apps/web/scripts/generate-financial-data.cjs
主な設定:
const DATA_SOURCE_DATE = '20251202'; // ファイル名用日付
const DATA_SOURCE_DATE_DIR = '2025-12-02'; // ディレクトリ名
const CSV_DIR = path.join(__dirname, '..', '..', '..', 'financial-data', DATA_SOURCE_DATE_DIR);
const OUTPUT_FILE = path.join(__dirname, '..', 'public', 'data', `financial-data-${DATA_SOURCE_DATE}.json`);
出力ファイル(JSON)
場所: apps/web/public/data/financial-data-20251202.json
ファイル名形式: financial-data-{YYYYMMDD}.json
データ構造(列指向フォーマット):
{
"dataSourceDate": "20251202",
"dataSourceDateDisplay": "2025年12月2日",
"companies": {
"NVDA": {
"name": "NVIDIA",
"ticker": "NVDA",
"annual": {
"periods": ["2023", "2024", "2025", ...],
"revenue": [60922, 130497, 213125, ...],
"netIncome": [32312, 74265, 114513, ...],
"yoyChange": [581.32, 144.89, 53.99, ...],
"qoqChange": [null, null, null, ...],
"isEstimate": [false, false, true, ...]
},
"quarterly": {
"periods": ["1Q 2023", "2Q 2023", ...],
"revenue": [...],
"netIncome": [...],
"yoyChange": [...],
"qoqChange": [...],
"isEstimate": [...]
}
}
}
}
実行方法
1. 新しい日付のデータを追加する場合
ステップ1: CSVファイルを配置
# リポジトリルートに新しい日付のディレクトリを作成
mkdir financial-data/2025-12-15
# CSVファイルを配置(28ファイル)
# NVDA_ann_20251215.csv
# NVDA_q_20251215.csv
# MSFT_ann_20251215.csv
# ...
ステップ2: スクリプトの日付を更新
apps/web/scripts/generate-financial-data.cjs を編集:
const DATA_SOURCE_DATE = '20251215'; // ← 新しい日付に変更
const DATA_SOURCE_DATE_DIR = '2025-12-15'; // ← 新しい日付に変更
ステップ3: スクリプトを実行
cd apps/web
node scripts/generate-financial-data.cjs
出力例:
Processing APP...
Annual: 8 periods
Quarterly: 20 periods
...
✅ Generated: C:\...\financial-data-20251215.json
📦 File size: 45.19 KB
📊 Original CSV total: 272.47 KB
💾 Space saved: 227.28 KB (83.4%)
ステップ4: Vueコンポーネントを更新
apps/web/app/pages/financial-data/annual-revenue-chart.vue の loadAllData() 関数を編集:
const loadAllData = async () => {
// ...
const response = await fetch('/data/financial-data-20251215.json') // ← 日付を変更
// ...
}
2. 既存データを再生成する場合
cd apps/web
node scripts/generate-financial-data.cjs
現在の設定(DATA_SOURCE_DATE)で指定された日付のJSONファイルが再生成されます。
データの抽出内容
CSVファイルから以下のデータのみを抽出します:
- Sales, Adjusted: 売上高(調整後)
- Net Income, Adjusted: 純利益(調整後)
- YoY % Chg: 前年比変化率
- QoQ % Chg: 前四半期比変化率(四半期データのみ)
その他の約90行のデータは破棄され、必要最小限のデータのみJSONに格納されます。
列指向フォーマットの利点
従来のオブジェクト配列形式:
[
{"period": "2023", "revenue": 60922, "netIncome": 32312, "yoyChange": 581.32, "isEstimate": false},
{"period": "2024", "revenue": 130497, "netIncome": 74265, "yoyChange": 144.89, "isEstimate": false}
]
列指向フォーマット:
{
"periods": ["2023", "2024"],
"revenue": [60922, 130497],
"netIncome": [32312, 74265],
"yoyChange": [581.32, 144.89],
"isEstimate": [false, false]
}
メリット:
- キー名の重複がなくなり、ファイルサイズが約35%削減
- 配列操作が効率的
- Chart.jsなどのライブラリに直接渡せる
複数日付のデータ管理
JSONファイルには日付がファイル名に含まれるため、複数の日付のデータを同時に保持できます:
apps/web/public/data/
├── financial-data-20251202.json
├── financial-data-20251215.json
├── financial-data-20260101.json
└── ...
これにより、アナリスト予測の時系列変化を比較するチャートなどを作成可能です。
トラブルシューティング
CSVファイルが見つからない
Warning: Annual file not found: ...
→ financial-data/YYYY-MM-DD/ ディレクトリに該当企業のCSVファイルが存在するか確認してください。
データが正しく表示されない
- ブラウザのコンソールでエラーを確認
- JSONファイルが正しく生成されているか確認(
apps/web/public/data/financial-data-YYYYMMDD.json) - Vueコンポーネントで読み込んでいるファイル名が正しいか確認
ファイルサイズが大きすぎる
列指向フォーマットを使用していることを確認してください。parseCSV() 関数が以下のような構造を返すはずです:
{
periods: [...],
revenue: [...],
netIncome: [...],
yoyChange: [...],
qoqChange: [...],
isEstimate: [...]
}
関連ファイル
- スクリプト:
apps/web/scripts/generate-financial-data.cjs - 入力CSV:
financial-data/YYYY-MM-DD/*.csv - 出力JSON:
apps/web/public/data/financial-data-YYYYMMDD.json - 表示ページ:
apps/web/app/pages/financial-data/annual-revenue-chart.vue
更新履歴
- 2025-12-02: 初版作成、列指向フォーマット導入、日付付きファイル名に変更