[{"data":1,"prerenderedAt":1729},["ShallowReactive",2],{"content-/financial-data-generation-guide":3,"all-pages-for-dir":1708,"related-/financial-data-generation-guide":1709,"og-image-/financial-data-generation-guide":1728},{"id":4,"title":5,"body":6,"category":1695,"concepts":1695,"description":1696,"extension":1697,"meta":1698,"navigation":934,"ogImage":1695,"path":1699,"project_name":1695,"published":1700,"publishedAt":1701,"seo":1702,"source":1695,"stem":1703,"tags":1704,"todo":1695,"unpublished":1700,"updatedAt":1701,"__hash__":1707},"pages/2025-12/2025-12-02/financial-data-generation-guide.md","財務データJSON生成スクリプトの使い方",{"type":7,"value":8,"toc":1673},"minimark",[9,13,17,21,24,27,32,44,50,74,79,123,130,133,140,145,351,355,362,369,375,898,901,905,910,961,965,970,1015,1019,1040,1043,1051,1055,1065,1134,1138,1154,1160,1163,1166,1192,1195,1198,1203,1359,1364,1485,1490,1501,1504,1507,1513,1516,1519,1523,1529,1536,1539,1554,1557,1564,1633,1636,1659,1662,1669],[10,11,5],"h1",{"id":12},"財務データjson生成スクリプトの使い方",[14,15,16],"p",{},"このドキュメントでは、企業の財務データ（CSVファイル）から統合JSONファイルを生成するスクリプトの使い方を説明します。",[18,19,20],"h2",{"id":20},"概要",[14,22,23],{},"複数の企業の年次・四半期財務データ（CSV形式）を単一のJSON形式にまとめるスクリプトです。列指向フォーマットを使用することで、データサイズを大幅に削減しています（CSV 272KB→JSON 46KB、83%削減）。",[18,25,26],{"id":26},"ファイル構成",[28,29,31],"h3",{"id":30},"入力ファイルcsvデータ","入力ファイル（CSVデータ）",[14,33,34,38,39,43],{},[35,36,37],"strong",{},"場所",": ",[40,41,42],"code",{},"financial-data/2025-12-02/","（リポジトリルート）",[14,45,46,49],{},[35,47,48],{},"ファイル名形式",":",[51,52,53,65],"ul",{},[54,55,56,57,60,61,64],"li",{},"年次データ: ",[40,58,59],{},"{企業コード}_ann_{日付}.csv","（例: ",[40,62,63],{},"NVDA_ann_20251202.csv","）",[54,66,67,68,60,71,64],{},"四半期データ: ",[40,69,70],{},"{企業コード}_q_{日付}.csv",[40,72,73],{},"NVDA_q_20251202.csv",[14,75,76,49],{},[35,77,78],{},"対象企業",[51,80,81,84,87,90,93,96,99,102,105,108,111,114,117,120],{},[54,82,83],{},"NVDA (NVIDIA)",[54,85,86],{},"MSFT (Microsoft)",[54,88,89],{},"GOOG (Alphabet/Google)",[54,91,92],{},"META (Meta)",[54,94,95],{},"APP (Apple)",[54,97,98],{},"ORCL (Oracle)",[54,100,101],{},"TSM (Taiwan Semiconductor)",[54,103,104],{},"AVGO (Broadcom)",[54,106,107],{},"MDB (MongoDB)",[54,109,110],{},"COHR (Coherent)",[54,112,113],{},"CRDO (Credo Technology)",[54,115,116],{},"CRWV (Crownwave)",[54,118,119],{},"NBIS (Nebius)",[54,121,122],{},"TEM (Tempus AI)",[14,124,125,126,129],{},"合計: ",[35,127,128],{},"28個のCSVファイル","（14社 × 2種類）",[28,131,132],{"id":132},"処理スクリプト",[14,134,135,38,137],{},[35,136,37],{},[40,138,139],{},"apps/web/scripts/generate-financial-data.cjs",[14,141,142,49],{},[35,143,144],{},"主な設定",[146,147,152],"pre",{"className":148,"code":149,"language":150,"meta":151,"style":151},"language-javascript shiki shiki-themes vitesse-light vitesse-light","const DATA_SOURCE_DATE = '20251202';           // ファイル名用日付\nconst DATA_SOURCE_DATE_DIR = '2025-12-02';     // ディレクトリ名\nconst CSV_DIR = path.join(__dirname, '..', '..', '..', 'financial-data', DATA_SOURCE_DATE_DIR);\nconst OUTPUT_FILE = path.join(__dirname, '..', 'public', 'data', `financial-data-${DATA_SOURCE_DATE}.json`);\n","javascript","",[40,153,154,189,211,279],{"__ignoreMap":151},[155,156,159,163,167,171,175,179,182,185],"span",{"class":157,"line":158},"line",1,[155,160,162],{"class":161},"stQ0i","const",[155,164,166],{"class":165},"s4oTP"," DATA_SOURCE_DATE",[155,168,170],{"class":169},"shFtX"," =",[155,172,174],{"class":173},"sMJiu"," '",[155,176,178],{"class":177},"sdGka","20251202",[155,180,181],{"class":173},"'",[155,183,184],{"class":169},";",[155,186,188],{"class":187},"sxvE3","           // ファイル名用日付\n",[155,190,192,194,197,199,201,204,206,208],{"class":157,"line":191},2,[155,193,162],{"class":161},[155,195,196],{"class":165}," DATA_SOURCE_DATE_DIR",[155,198,170],{"class":169},[155,200,174],{"class":173},[155,202,203],{"class":177},"2025-12-02",[155,205,181],{"class":173},[155,207,184],{"class":169},[155,209,210],{"class":187},"     // ディレクトリ名\n",[155,212,214,216,219,221,224,227,231,234,237,240,242,245,247,249,251,253,255,257,259,261,263,265,267,270,272,274,276],{"class":157,"line":213},3,[155,215,162],{"class":161},[155,217,218],{"class":165}," CSV_DIR",[155,220,170],{"class":169},[155,222,223],{"class":165}," path",[155,225,226],{"class":169},".",[155,228,230],{"class":229},"senZ8","join",[155,232,233],{"class":169},"(",[155,235,236],{"class":165},"__dirname",[155,238,239],{"class":169},",",[155,241,174],{"class":173},[155,243,244],{"class":177},"..",[155,246,181],{"class":173},[155,248,239],{"class":169},[155,250,174],{"class":173},[155,252,244],{"class":177},[155,254,181],{"class":173},[155,256,239],{"class":169},[155,258,174],{"class":173},[155,260,244],{"class":177},[155,262,181],{"class":173},[155,264,239],{"class":169},[155,266,174],{"class":173},[155,268,269],{"class":177},"financial-data",[155,271,181],{"class":173},[155,273,239],{"class":169},[155,275,196],{"class":165},[155,277,278],{"class":169},");\n",[155,280,282,284,287,289,291,293,295,297,299,301,303,305,307,309,311,314,316,318,320,323,325,327,330,333,337,340,343,346,349],{"class":157,"line":281},4,[155,283,162],{"class":161},[155,285,286],{"class":165}," OUTPUT_FILE",[155,288,170],{"class":169},[155,290,223],{"class":165},[155,292,226],{"class":169},[155,294,230],{"class":229},[155,296,233],{"class":169},[155,298,236],{"class":165},[155,300,239],{"class":169},[155,302,174],{"class":173},[155,304,244],{"class":177},[155,306,181],{"class":173},[155,308,239],{"class":169},[155,310,174],{"class":173},[155,312,313],{"class":177},"public",[155,315,181],{"class":173},[155,317,239],{"class":169},[155,319,174],{"class":173},[155,321,322],{"class":177},"data",[155,324,181],{"class":173},[155,326,239],{"class":169},[155,328,329],{"class":173}," `",[155,331,332],{"class":177},"financial-data-",[155,334,336],{"class":335},"sHkkW","${",[155,338,339],{"class":177},"DATA_SOURCE_DATE",[155,341,342],{"class":335},"}",[155,344,345],{"class":177},".json",[155,347,348],{"class":173},"`",[155,350,278],{"class":169},[28,352,354],{"id":353},"出力ファイルjson","出力ファイル（JSON）",[14,356,357,38,359],{},[35,358,37],{},[40,360,361],{},"apps/web/public/data/financial-data-20251202.json",[14,363,364,38,366],{},[35,365,48],{},[40,367,368],{},"financial-data-{YYYYMMDD}.json",[14,370,371,374],{},[35,372,373],{},"データ構造","（列指向フォーマット）:",[146,376,380],{"className":377,"code":378,"language":379,"meta":151,"style":151},"language-json shiki shiki-themes vitesse-light vitesse-light","{\n  \"dataSourceDate\": \"20251202\",\n  \"dataSourceDateDisplay\": \"2025年12月2日\",\n  \"companies\": {\n    \"NVDA\": {\n      \"name\": \"NVIDIA\",\n      \"ticker\": \"NVDA\",\n      \"annual\": {\n        \"periods\": [\"2023\", \"2024\", \"2025\", ...],\n        \"revenue\": [60922, 130497, 213125, ...],\n        \"netIncome\": [32312, 74265, 114513, ...],\n        \"yoyChange\": [581.32, 144.89, 53.99, ...],\n        \"qoqChange\": [null, null, null, ...],\n        \"isEstimate\": [false, false, true, ...]\n      },\n      \"quarterly\": {\n        \"periods\": [\"1Q 2023\", \"2Q 2023\", ...],\n        \"revenue\": [...],\n        \"netIncome\": [...],\n        \"yoyChange\": [...],\n        \"qoqChange\": [...],\n        \"isEstimate\": [...]\n      }\n    }\n  }\n}\n","json",[40,381,382,387,412,432,446,461,483,503,517,567,601,634,667,699,733,739,753,788,806,823,840,857,874,880,886,892],{"__ignoreMap":151},[155,383,384],{"class":157,"line":158},[155,385,386],{"class":169},"{\n",[155,388,389,393,397,400,402,405,407,409],{"class":157,"line":191},[155,390,392],{"class":391},"sqvqQ","  \"",[155,394,396],{"class":395},"sz8Xr","dataSourceDate",[155,398,399],{"class":391},"\"",[155,401,49],{"class":169},[155,403,404],{"class":173}," \"",[155,406,178],{"class":177},[155,408,399],{"class":173},[155,410,411],{"class":169},",\n",[155,413,414,416,419,421,423,425,428,430],{"class":157,"line":213},[155,415,392],{"class":391},[155,417,418],{"class":395},"dataSourceDateDisplay",[155,420,399],{"class":391},[155,422,49],{"class":169},[155,424,404],{"class":173},[155,426,427],{"class":177},"2025年12月2日",[155,429,399],{"class":173},[155,431,411],{"class":169},[155,433,434,436,439,441,443],{"class":157,"line":281},[155,435,392],{"class":391},[155,437,438],{"class":395},"companies",[155,440,399],{"class":391},[155,442,49],{"class":169},[155,444,445],{"class":169}," {\n",[155,447,449,452,455,457,459],{"class":157,"line":448},5,[155,450,451],{"class":391},"    \"",[155,453,454],{"class":395},"NVDA",[155,456,399],{"class":391},[155,458,49],{"class":169},[155,460,445],{"class":169},[155,462,464,467,470,472,474,476,479,481],{"class":157,"line":463},6,[155,465,466],{"class":391},"      \"",[155,468,469],{"class":395},"name",[155,471,399],{"class":391},[155,473,49],{"class":169},[155,475,404],{"class":173},[155,477,478],{"class":177},"NVIDIA",[155,480,399],{"class":173},[155,482,411],{"class":169},[155,484,486,488,491,493,495,497,499,501],{"class":157,"line":485},7,[155,487,466],{"class":391},[155,489,490],{"class":395},"ticker",[155,492,399],{"class":391},[155,494,49],{"class":169},[155,496,404],{"class":173},[155,498,454],{"class":177},[155,500,399],{"class":173},[155,502,411],{"class":169},[155,504,506,508,511,513,515],{"class":157,"line":505},8,[155,507,466],{"class":391},[155,509,510],{"class":395},"annual",[155,512,399],{"class":391},[155,514,49],{"class":169},[155,516,445],{"class":169},[155,518,520,523,526,528,530,533,535,538,540,542,544,547,549,551,553,556,558,560,564],{"class":157,"line":519},9,[155,521,522],{"class":391},"        \"",[155,524,525],{"class":395},"periods",[155,527,399],{"class":391},[155,529,49],{"class":169},[155,531,532],{"class":169}," [",[155,534,399],{"class":173},[155,536,537],{"class":177},"2023",[155,539,399],{"class":173},[155,541,239],{"class":169},[155,543,404],{"class":173},[155,545,546],{"class":177},"2024",[155,548,399],{"class":173},[155,550,239],{"class":169},[155,552,404],{"class":173},[155,554,555],{"class":177},"2025",[155,557,399],{"class":173},[155,559,239],{"class":169},[155,561,563],{"class":562},"sPP4b"," ...",[155,565,566],{"class":169},"],\n",[155,568,570,572,575,577,579,581,585,587,590,592,595,597,599],{"class":157,"line":569},10,[155,571,522],{"class":391},[155,573,574],{"class":395},"revenue",[155,576,399],{"class":391},[155,578,49],{"class":169},[155,580,532],{"class":169},[155,582,584],{"class":583},"sM54T","60922",[155,586,239],{"class":169},[155,588,589],{"class":583}," 130497",[155,591,239],{"class":169},[155,593,594],{"class":583}," 213125",[155,596,239],{"class":169},[155,598,563],{"class":562},[155,600,566],{"class":169},[155,602,604,606,609,611,613,615,618,620,623,625,628,630,632],{"class":157,"line":603},11,[155,605,522],{"class":391},[155,607,608],{"class":395},"netIncome",[155,610,399],{"class":391},[155,612,49],{"class":169},[155,614,532],{"class":169},[155,616,617],{"class":583},"32312",[155,619,239],{"class":169},[155,621,622],{"class":583}," 74265",[155,624,239],{"class":169},[155,626,627],{"class":583}," 114513",[155,629,239],{"class":169},[155,631,563],{"class":562},[155,633,566],{"class":169},[155,635,637,639,642,644,646,648,651,653,656,658,661,663,665],{"class":157,"line":636},12,[155,638,522],{"class":391},[155,640,641],{"class":395},"yoyChange",[155,643,399],{"class":391},[155,645,49],{"class":169},[155,647,532],{"class":169},[155,649,650],{"class":583},"581.32",[155,652,239],{"class":169},[155,654,655],{"class":583}," 144.89",[155,657,239],{"class":169},[155,659,660],{"class":583}," 53.99",[155,662,239],{"class":169},[155,664,563],{"class":562},[155,666,566],{"class":169},[155,668,670,672,675,677,679,681,684,686,689,691,693,695,697],{"class":157,"line":669},13,[155,671,522],{"class":391},[155,673,674],{"class":395},"qoqChange",[155,676,399],{"class":391},[155,678,49],{"class":169},[155,680,532],{"class":169},[155,682,683],{"class":335},"null",[155,685,239],{"class":169},[155,687,688],{"class":335}," null",[155,690,239],{"class":169},[155,692,688],{"class":335},[155,694,239],{"class":169},[155,696,563],{"class":562},[155,698,566],{"class":169},[155,700,702,704,707,709,711,713,716,718,721,723,726,728,730],{"class":157,"line":701},14,[155,703,522],{"class":391},[155,705,706],{"class":395},"isEstimate",[155,708,399],{"class":391},[155,710,49],{"class":169},[155,712,532],{"class":169},[155,714,715],{"class":335},"false",[155,717,239],{"class":169},[155,719,720],{"class":335}," false",[155,722,239],{"class":169},[155,724,725],{"class":335}," true",[155,727,239],{"class":169},[155,729,563],{"class":562},[155,731,732],{"class":169},"]\n",[155,734,736],{"class":157,"line":735},15,[155,737,738],{"class":169},"      },\n",[155,740,742,744,747,749,751],{"class":157,"line":741},16,[155,743,466],{"class":391},[155,745,746],{"class":395},"quarterly",[155,748,399],{"class":391},[155,750,49],{"class":169},[155,752,445],{"class":169},[155,754,756,758,760,762,764,766,768,771,773,775,777,780,782,784,786],{"class":157,"line":755},17,[155,757,522],{"class":391},[155,759,525],{"class":395},[155,761,399],{"class":391},[155,763,49],{"class":169},[155,765,532],{"class":169},[155,767,399],{"class":173},[155,769,770],{"class":177},"1Q 2023",[155,772,399],{"class":173},[155,774,239],{"class":169},[155,776,404],{"class":173},[155,778,779],{"class":177},"2Q 2023",[155,781,399],{"class":173},[155,783,239],{"class":169},[155,785,563],{"class":562},[155,787,566],{"class":169},[155,789,791,793,795,797,799,801,804],{"class":157,"line":790},18,[155,792,522],{"class":391},[155,794,574],{"class":395},[155,796,399],{"class":391},[155,798,49],{"class":169},[155,800,532],{"class":169},[155,802,803],{"class":562},"...",[155,805,566],{"class":169},[155,807,809,811,813,815,817,819,821],{"class":157,"line":808},19,[155,810,522],{"class":391},[155,812,608],{"class":395},[155,814,399],{"class":391},[155,816,49],{"class":169},[155,818,532],{"class":169},[155,820,803],{"class":562},[155,822,566],{"class":169},[155,824,826,828,830,832,834,836,838],{"class":157,"line":825},20,[155,827,522],{"class":391},[155,829,641],{"class":395},[155,831,399],{"class":391},[155,833,49],{"class":169},[155,835,532],{"class":169},[155,837,803],{"class":562},[155,839,566],{"class":169},[155,841,843,845,847,849,851,853,855],{"class":157,"line":842},21,[155,844,522],{"class":391},[155,846,674],{"class":395},[155,848,399],{"class":391},[155,850,49],{"class":169},[155,852,532],{"class":169},[155,854,803],{"class":562},[155,856,566],{"class":169},[155,858,860,862,864,866,868,870,872],{"class":157,"line":859},22,[155,861,522],{"class":391},[155,863,706],{"class":395},[155,865,399],{"class":391},[155,867,49],{"class":169},[155,869,532],{"class":169},[155,871,803],{"class":562},[155,873,732],{"class":169},[155,875,877],{"class":157,"line":876},23,[155,878,879],{"class":169},"      }\n",[155,881,883],{"class":157,"line":882},24,[155,884,885],{"class":169},"    }\n",[155,887,889],{"class":157,"line":888},25,[155,890,891],{"class":169},"  }\n",[155,893,895],{"class":157,"line":894},26,[155,896,897],{"class":169},"}\n",[18,899,900],{"id":900},"実行方法",[28,902,904],{"id":903},"_1-新しい日付のデータを追加する場合","1. 新しい日付のデータを追加する場合",[906,907,909],"h4",{"id":908},"ステップ1-csvファイルを配置","ステップ1: CSVファイルを配置",[146,911,915],{"className":912,"code":913,"language":914,"meta":151,"style":151},"language-bash shiki shiki-themes vitesse-light vitesse-light","# リポジトリルートに新しい日付のディレクトリを作成\nmkdir financial-data/2025-12-15\n\n# CSVファイルを配置（28ファイル）\n# NVDA_ann_20251215.csv\n# NVDA_q_20251215.csv\n# MSFT_ann_20251215.csv\n# ...\n","bash",[40,916,917,922,930,936,941,946,951,956],{"__ignoreMap":151},[155,918,919],{"class":157,"line":158},[155,920,921],{"class":187},"# リポジトリルートに新しい日付のディレクトリを作成\n",[155,923,924,927],{"class":157,"line":191},[155,925,926],{"class":229},"mkdir",[155,928,929],{"class":177}," financial-data/2025-12-15\n",[155,931,932],{"class":157,"line":213},[155,933,935],{"emptyLinePlaceholder":934},true,"\n",[155,937,938],{"class":157,"line":281},[155,939,940],{"class":187},"# CSVファイルを配置（28ファイル）\n",[155,942,943],{"class":157,"line":448},[155,944,945],{"class":187},"# NVDA_ann_20251215.csv\n",[155,947,948],{"class":157,"line":463},[155,949,950],{"class":187},"# NVDA_q_20251215.csv\n",[155,952,953],{"class":157,"line":485},[155,954,955],{"class":187},"# MSFT_ann_20251215.csv\n",[155,957,958],{"class":157,"line":505},[155,959,960],{"class":187},"# ...\n",[906,962,964],{"id":963},"ステップ2-スクリプトの日付を更新","ステップ2: スクリプトの日付を更新",[14,966,967,969],{},[40,968,139],{}," を編集:",[146,971,973],{"className":148,"code":972,"language":150,"meta":151,"style":151},"const DATA_SOURCE_DATE = '20251215';           // ← 新しい日付に変更\nconst DATA_SOURCE_DATE_DIR = '2025-12-15';     // ← 新しい日付に変更\n",[40,974,975,995],{"__ignoreMap":151},[155,976,977,979,981,983,985,988,990,992],{"class":157,"line":158},[155,978,162],{"class":161},[155,980,166],{"class":165},[155,982,170],{"class":169},[155,984,174],{"class":173},[155,986,987],{"class":177},"20251215",[155,989,181],{"class":173},[155,991,184],{"class":169},[155,993,994],{"class":187},"           // ← 新しい日付に変更\n",[155,996,997,999,1001,1003,1005,1008,1010,1012],{"class":157,"line":191},[155,998,162],{"class":161},[155,1000,196],{"class":165},[155,1002,170],{"class":169},[155,1004,174],{"class":173},[155,1006,1007],{"class":177},"2025-12-15",[155,1009,181],{"class":173},[155,1011,184],{"class":169},[155,1013,1014],{"class":187},"     // ← 新しい日付に変更\n",[906,1016,1018],{"id":1017},"ステップ3-スクリプトを実行","ステップ3: スクリプトを実行",[146,1020,1022],{"className":912,"code":1021,"language":914,"meta":151,"style":151},"cd apps/web\nnode scripts/generate-financial-data.cjs\n",[40,1023,1024,1032],{"__ignoreMap":151},[155,1025,1026,1029],{"class":157,"line":158},[155,1027,1028],{"class":395},"cd",[155,1030,1031],{"class":177}," apps/web\n",[155,1033,1034,1037],{"class":157,"line":191},[155,1035,1036],{"class":229},"node",[155,1038,1039],{"class":177}," scripts/generate-financial-data.cjs\n",[14,1041,1042],{},"出力例:",[146,1044,1049],{"className":1045,"code":1047,"language":1048},[1046],"language-text","Processing APP...\n  Annual: 8 periods\n  Quarterly: 20 periods\n...\n✅ Generated: C:\\...\\financial-data-20251215.json\n📦 File size: 45.19 KB\n📊 Original CSV total: 272.47 KB\n💾 Space saved: 227.28 KB (83.4%)\n","text",[40,1050,1047],{"__ignoreMap":151},[906,1052,1054],{"id":1053},"ステップ4-vueコンポーネントを更新","ステップ4: Vueコンポーネントを更新",[14,1056,1057,1060,1061,1064],{},[40,1058,1059],{},"apps/web/app/pages/financial-data/annual-revenue-chart.vue"," の ",[40,1062,1063],{},"loadAllData()"," 関数を編集:",[146,1066,1068],{"className":148,"code":1067,"language":150,"meta":151,"style":151},"const loadAllData = async () => {\n  // ...\n  const response = await fetch('/data/financial-data-20251215.json')  // ← 日付を変更\n  // ...\n}\n",[40,1069,1070,1090,1095,1126,1130],{"__ignoreMap":151},[155,1071,1072,1074,1077,1079,1082,1085,1088],{"class":157,"line":158},[155,1073,162],{"class":161},[155,1075,1076],{"class":229}," loadAllData",[155,1078,170],{"class":169},[155,1080,1081],{"class":161}," async",[155,1083,1084],{"class":169}," ()",[155,1086,1087],{"class":169}," =>",[155,1089,445],{"class":169},[155,1091,1092],{"class":157,"line":191},[155,1093,1094],{"class":187},"  // ...\n",[155,1096,1097,1100,1103,1105,1108,1111,1113,1115,1118,1120,1123],{"class":157,"line":213},[155,1098,1099],{"class":161},"  const",[155,1101,1102],{"class":165}," response",[155,1104,170],{"class":169},[155,1106,1107],{"class":335}," await",[155,1109,1110],{"class":229}," fetch",[155,1112,233],{"class":169},[155,1114,181],{"class":173},[155,1116,1117],{"class":177},"/data/financial-data-20251215.json",[155,1119,181],{"class":173},[155,1121,1122],{"class":169},")",[155,1124,1125],{"class":187},"  // ← 日付を変更\n",[155,1127,1128],{"class":157,"line":281},[155,1129,1094],{"class":187},[155,1131,1132],{"class":157,"line":448},[155,1133,897],{"class":169},[28,1135,1137],{"id":1136},"_2-既存データを再生成する場合","2. 既存データを再生成する場合",[146,1139,1140],{"className":912,"code":1021,"language":914,"meta":151,"style":151},[40,1141,1142,1148],{"__ignoreMap":151},[155,1143,1144,1146],{"class":157,"line":158},[155,1145,1028],{"class":395},[155,1147,1031],{"class":177},[155,1149,1150,1152],{"class":157,"line":191},[155,1151,1036],{"class":229},[155,1153,1039],{"class":177},[14,1155,1156,1157,1159],{},"現在の設定（",[40,1158,339],{},"）で指定された日付のJSONファイルが再生成されます。",[18,1161,1162],{"id":1162},"データの抽出内容",[14,1164,1165],{},"CSVファイルから以下のデータのみを抽出します：",[51,1167,1168,1174,1180,1186],{},[54,1169,1170,1173],{},[35,1171,1172],{},"Sales, Adjusted",": 売上高（調整後）",[54,1175,1176,1179],{},[35,1177,1178],{},"Net Income, Adjusted",": 純利益（調整後）",[54,1181,1182,1185],{},[35,1183,1184],{},"YoY % Chg",": 前年比変化率",[54,1187,1188,1191],{},[35,1189,1190],{},"QoQ % Chg",": 前四半期比変化率（四半期データのみ）",[14,1193,1194],{},"その他の約90行のデータは破棄され、必要最小限のデータのみJSONに格納されます。",[18,1196,1197],{"id":1197},"列指向フォーマットの利点",[14,1199,1200,49],{},[35,1201,1202],{},"従来のオブジェクト配列形式",[146,1204,1206],{"className":377,"code":1205,"language":379,"meta":151,"style":151},"[\n  {\"period\": \"2023\", \"revenue\": 60922, \"netIncome\": 32312, \"yoyChange\": 581.32, \"isEstimate\": false},\n  {\"period\": \"2024\", \"revenue\": 130497, \"netIncome\": 74265, \"yoyChange\": 144.89, \"isEstimate\": false}\n]\n",[40,1207,1208,1213,1287,1355],{"__ignoreMap":151},[155,1209,1210],{"class":157,"line":158},[155,1211,1212],{"class":169},"[\n",[155,1214,1215,1218,1220,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1246,1248,1250,1252,1254,1256,1259,1261,1263,1265,1267,1269,1272,1274,1276,1278,1280,1282,1284],{"class":157,"line":191},[155,1216,1217],{"class":169},"  {",[155,1219,399],{"class":391},[155,1221,1222],{"class":395},"period",[155,1224,399],{"class":391},[155,1226,49],{"class":169},[155,1228,404],{"class":173},[155,1230,537],{"class":177},[155,1232,399],{"class":173},[155,1234,239],{"class":169},[155,1236,404],{"class":391},[155,1238,574],{"class":395},[155,1240,399],{"class":391},[155,1242,49],{"class":169},[155,1244,1245],{"class":583}," 60922",[155,1247,239],{"class":169},[155,1249,404],{"class":391},[155,1251,608],{"class":395},[155,1253,399],{"class":391},[155,1255,49],{"class":169},[155,1257,1258],{"class":583}," 32312",[155,1260,239],{"class":169},[155,1262,404],{"class":391},[155,1264,641],{"class":395},[155,1266,399],{"class":391},[155,1268,49],{"class":169},[155,1270,1271],{"class":583}," 581.32",[155,1273,239],{"class":169},[155,1275,404],{"class":391},[155,1277,706],{"class":395},[155,1279,399],{"class":391},[155,1281,49],{"class":169},[155,1283,720],{"class":335},[155,1285,1286],{"class":169},"},\n",[155,1288,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353],{"class":157,"line":213},[155,1290,1217],{"class":169},[155,1292,399],{"class":391},[155,1294,1222],{"class":395},[155,1296,399],{"class":391},[155,1298,49],{"class":169},[155,1300,404],{"class":173},[155,1302,546],{"class":177},[155,1304,399],{"class":173},[155,1306,239],{"class":169},[155,1308,404],{"class":391},[155,1310,574],{"class":395},[155,1312,399],{"class":391},[155,1314,49],{"class":169},[155,1316,589],{"class":583},[155,1318,239],{"class":169},[155,1320,404],{"class":391},[155,1322,608],{"class":395},[155,1324,399],{"class":391},[155,1326,49],{"class":169},[155,1328,622],{"class":583},[155,1330,239],{"class":169},[155,1332,404],{"class":391},[155,1334,641],{"class":395},[155,1336,399],{"class":391},[155,1338,49],{"class":169},[155,1340,655],{"class":583},[155,1342,239],{"class":169},[155,1344,404],{"class":391},[155,1346,706],{"class":395},[155,1348,399],{"class":391},[155,1350,49],{"class":169},[155,1352,720],{"class":335},[155,1354,897],{"class":169},[155,1356,1357],{"class":157,"line":281},[155,1358,732],{"class":169},[14,1360,1361,49],{},[35,1362,1363],{},"列指向フォーマット",[146,1365,1367],{"className":377,"code":1366,"language":379,"meta":151,"style":151},"{\n  \"periods\": [\"2023\", \"2024\"],\n  \"revenue\": [60922, 130497],\n  \"netIncome\": [32312, 74265],\n  \"yoyChange\": [581.32, 144.89],\n  \"isEstimate\": [false, false]\n}\n",[40,1368,1369,1373,1401,1421,1441,1461,1481],{"__ignoreMap":151},[155,1370,1371],{"class":157,"line":158},[155,1372,386],{"class":169},[155,1374,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399],{"class":157,"line":191},[155,1376,392],{"class":391},[155,1378,525],{"class":395},[155,1380,399],{"class":391},[155,1382,49],{"class":169},[155,1384,532],{"class":169},[155,1386,399],{"class":173},[155,1388,537],{"class":177},[155,1390,399],{"class":173},[155,1392,239],{"class":169},[155,1394,404],{"class":173},[155,1396,546],{"class":177},[155,1398,399],{"class":173},[155,1400,566],{"class":169},[155,1402,1403,1405,1407,1409,1411,1413,1415,1417,1419],{"class":157,"line":213},[155,1404,392],{"class":391},[155,1406,574],{"class":395},[155,1408,399],{"class":391},[155,1410,49],{"class":169},[155,1412,532],{"class":169},[155,1414,584],{"class":583},[155,1416,239],{"class":169},[155,1418,589],{"class":583},[155,1420,566],{"class":169},[155,1422,1423,1425,1427,1429,1431,1433,1435,1437,1439],{"class":157,"line":281},[155,1424,392],{"class":391},[155,1426,608],{"class":395},[155,1428,399],{"class":391},[155,1430,49],{"class":169},[155,1432,532],{"class":169},[155,1434,617],{"class":583},[155,1436,239],{"class":169},[155,1438,622],{"class":583},[155,1440,566],{"class":169},[155,1442,1443,1445,1447,1449,1451,1453,1455,1457,1459],{"class":157,"line":448},[155,1444,392],{"class":391},[155,1446,641],{"class":395},[155,1448,399],{"class":391},[155,1450,49],{"class":169},[155,1452,532],{"class":169},[155,1454,650],{"class":583},[155,1456,239],{"class":169},[155,1458,655],{"class":583},[155,1460,566],{"class":169},[155,1462,1463,1465,1467,1469,1471,1473,1475,1477,1479],{"class":157,"line":463},[155,1464,392],{"class":391},[155,1466,706],{"class":395},[155,1468,399],{"class":391},[155,1470,49],{"class":169},[155,1472,532],{"class":169},[155,1474,715],{"class":335},[155,1476,239],{"class":169},[155,1478,720],{"class":335},[155,1480,732],{"class":169},[155,1482,1483],{"class":157,"line":485},[155,1484,897],{"class":169},[14,1486,1487,49],{},[35,1488,1489],{},"メリット",[51,1491,1492,1495,1498],{},[54,1493,1494],{},"キー名の重複がなくなり、ファイルサイズが約35%削減",[54,1496,1497],{},"配列操作が効率的",[54,1499,1500],{},"Chart.jsなどのライブラリに直接渡せる",[18,1502,1503],{"id":1503},"複数日付のデータ管理",[14,1505,1506],{},"JSONファイルには日付がファイル名に含まれるため、複数の日付のデータを同時に保持できます：",[146,1508,1511],{"className":1509,"code":1510,"language":1048},[1046],"apps/web/public/data/\n├── financial-data-20251202.json\n├── financial-data-20251215.json\n├── financial-data-20260101.json\n└── ...\n",[40,1512,1510],{"__ignoreMap":151},[14,1514,1515],{},"これにより、アナリスト予測の時系列変化を比較するチャートなどを作成可能です。",[18,1517,1518],{"id":1518},"トラブルシューティング",[28,1520,1522],{"id":1521},"csvファイルが見つからない","CSVファイルが見つからない",[146,1524,1527],{"className":1525,"code":1526,"language":1048},[1046],"Warning: Annual file not found: ...\n",[40,1528,1526],{"__ignoreMap":151},[14,1530,1531,1532,1535],{},"→ ",[40,1533,1534],{},"financial-data/YYYY-MM-DD/"," ディレクトリに該当企業のCSVファイルが存在するか確認してください。",[28,1537,1538],{"id":1538},"データが正しく表示されない",[1540,1541,1542,1545,1551],"ol",{},[54,1543,1544],{},"ブラウザのコンソールでエラーを確認",[54,1546,1547,1548,64],{},"JSONファイルが正しく生成されているか確認（",[40,1549,1550],{},"apps/web/public/data/financial-data-YYYYMMDD.json",[54,1552,1553],{},"Vueコンポーネントで読み込んでいるファイル名が正しいか確認",[28,1555,1556],{"id":1556},"ファイルサイズが大きすぎる",[14,1558,1559,1560,1563],{},"列指向フォーマットを使用していることを確認してください。",[40,1561,1562],{},"parseCSV()"," 関数が以下のような構造を返すはずです：",[146,1565,1567],{"className":148,"code":1566,"language":150,"meta":151,"style":151},"{\n  periods: [...],\n  revenue: [...],\n  netIncome: [...],\n  yoyChange: [...],\n  qoqChange: [...],\n  isEstimate: [...]\n}\n",[40,1568,1569,1573,1583,1592,1601,1610,1619,1629],{"__ignoreMap":151},[155,1570,1571],{"class":157,"line":158},[155,1572,386],{"class":169},[155,1574,1575,1578,1580],{"class":157,"line":191},[155,1576,1577],{"class":229},"  periods",[155,1579,49],{"class":169},[155,1581,1582],{"class":169}," [...],\n",[155,1584,1585,1588,1590],{"class":157,"line":213},[155,1586,1587],{"class":229},"  revenue",[155,1589,49],{"class":169},[155,1591,1582],{"class":169},[155,1593,1594,1597,1599],{"class":157,"line":281},[155,1595,1596],{"class":229},"  netIncome",[155,1598,49],{"class":169},[155,1600,1582],{"class":169},[155,1602,1603,1606,1608],{"class":157,"line":448},[155,1604,1605],{"class":229},"  yoyChange",[155,1607,49],{"class":169},[155,1609,1582],{"class":169},[155,1611,1612,1615,1617],{"class":157,"line":463},[155,1613,1614],{"class":229},"  qoqChange",[155,1616,49],{"class":169},[155,1618,1582],{"class":169},[155,1620,1621,1624,1626],{"class":157,"line":485},[155,1622,1623],{"class":229},"  isEstimate",[155,1625,49],{"class":169},[155,1627,1628],{"class":169}," [...]\n",[155,1630,1631],{"class":157,"line":505},[155,1632,897],{"class":169},[18,1634,1635],{"id":1635},"関連ファイル",[51,1637,1638,1643,1649,1654],{},[54,1639,1640,1641],{},"スクリプト: ",[40,1642,139],{},[54,1644,1645,1646],{},"入力CSV: ",[40,1647,1648],{},"financial-data/YYYY-MM-DD/*.csv",[54,1650,1651,1652],{},"出力JSON: ",[40,1653,1550],{},[54,1655,1656,1657],{},"表示ページ: ",[40,1658,1059],{},[18,1660,1661],{"id":1661},"更新履歴",[51,1663,1664],{},[54,1665,1666,1668],{},[35,1667,203],{},": 初版作成、列指向フォーマット導入、日付付きファイル名に変更",[1670,1671,1672],"style",{},"html pre.shiki code .stQ0i, html code.shiki .stQ0i{--shiki-default:#AB5959;--shiki-dark:#AB5959}html pre.shiki code .s4oTP, html code.shiki .s4oTP{--shiki-default:#B07D48;--shiki-dark:#B07D48}html pre.shiki code .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}html pre.shiki code .sMJiu, html code.shiki .sMJiu{--shiki-default:#B5695977;--shiki-dark:#B5695977}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}html pre.shiki code .sxvE3, html code.shiki .sxvE3{--shiki-default:#A0ADA0;--shiki-dark:#A0ADA0}html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .sHkkW, html code.shiki .sHkkW{--shiki-default:#1E754F;--shiki-dark:#1E754F}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sqvqQ, html code.shiki .sqvqQ{--shiki-default:#99841877;--shiki-dark:#99841877}html pre.shiki code .sz8Xr, html code.shiki .sz8Xr{--shiki-default:#998418;--shiki-dark:#998418}html pre.shiki code .sPP4b, html code.shiki .sPP4b{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#B31D28;--shiki-dark-font-style:italic}html pre.shiki code .sM54T, html code.shiki .sM54T{--shiki-default:#2F798A;--shiki-dark:#2F798A}",{"title":151,"searchDepth":191,"depth":191,"links":1674},[1675,1676,1681,1685,1686,1687,1688,1693,1694],{"id":20,"depth":191,"text":20},{"id":26,"depth":191,"text":26,"children":1677},[1678,1679,1680],{"id":30,"depth":213,"text":31},{"id":132,"depth":213,"text":132},{"id":353,"depth":213,"text":354},{"id":900,"depth":191,"text":900,"children":1682},[1683,1684],{"id":903,"depth":213,"text":904},{"id":1136,"depth":213,"text":1137},{"id":1162,"depth":191,"text":1162},{"id":1197,"depth":191,"text":1197},{"id":1503,"depth":191,"text":1503},{"id":1518,"depth":191,"text":1518,"children":1689},[1690,1691,1692],{"id":1521,"depth":213,"text":1522},{"id":1538,"depth":213,"text":1538},{"id":1556,"depth":213,"text":1556},{"id":1635,"depth":191,"text":1635},{"id":1661,"depth":191,"text":1661},null,"CSVファイルから財務データJSONを生成するスクリプトの実行方法とファイル構成の説明","md",{},"/financial-data-generation-guide",false,"2025-12-02T00:00:00.000Z",{"title":5,"description":1696},"2025-12/2025-12-02/financial-data-generation-guide",[1705,269,1706],"documentation","automation","CcVe0rwB9wZYZ_WGyWXQz5d12gsIyN6-pXvbMYHB884",[],[1710,1714,1718,1721,1724],{"title":1711,"path":1712,"publishedAt":1713},"make-diary に update-portfolio をチェーン化してタスクスケジューラのスリープ問題を埋める","/make-diary-update-portfolio-chain","2026-06-18T00:00:00.000Z",{"title":1715,"path":1716,"publishedAt":1717},"2026年4月15日の開発日記 - CF精算表42論点を一括生成しHTMLビューアまで構築","/2026-04-15-diary","2026-04-15T00:00:00.000Z",{"title":1719,"path":1720,"publishedAt":1717},"CF精算表の独立Excel自動生成 -- 42論点一括生成とTurso DB連携まで","/cfws-excel-automation",{"title":1722,"path":1723,"publishedAt":1717},"CF精算表スクリーンショット撮影からHTMLテーブル構造化までの全工程記録","/cfws-screenshot-structuring",{"title":1725,"path":1726,"publishedAt":1727},"CF精算表Excel自動生成のデバッグ記録 -- SUMIFS不一致・符号規則・3600行リファクタリング計画","/cfws-excel-automation-debug","2026-04-14T00:00:00.000Z","https://log.eurekapu.com/og/blog/financial-data-generation-guide.png?v=2025-12-02T00%3A00%3A00.000Z&title=%E8%B2%A1%E5%8B%99%E3%83%87%E3%83%BC%E3%82%BFJSON%E7%94%9F%E6%88%90%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9&author=Kei%20Komatsu&sig=319c505d3ffe7a03",1785654667859]