[{"data":1,"prerenderedAt":794},["ShallowReactive",2],{"content-/hyperscaler-capex-page-parallel-chart-refactor":3,"all-pages-for-dir":792,"og-image-/hyperscaler-capex-page-parallel-chart-refactor":793},{"id":4,"title":5,"body":6,"category":772,"description":773,"extension":774,"meta":775,"navigation":776,"ogImage":777,"path":778,"project_name":779,"published":780,"publishedAt":781,"seo":782,"stem":783,"tags":784,"todo":777,"unpublished":780,"updatedAt":777,"__hash__":791},"pages/2026-06/2026-06-27/hyperscaler-capex-page-parallel-chart-refactor.md","hyperscaler-capex ページを「営業CF・CapEx・FCF 三本並列」へ作り直し、合算積み上げ棒と点線位置まで詰める",{"type":7,"value":8,"toc":762},"minimark",[9,26,30,33,39,46,50,59,64,71,356,359,363,366,392,405,409,416,424,427,608,611,615,618,623,629,634,642,646,649,660,667,670,701,704,758],[10,11,12,19,20,25],"p",{},[13,14,16],"a",{"href":15},"/why-hyperscaler-capex-wont-ease-six-pillars",[17,18,15],"code",{}," の論考を仕上げた直後、画面に並んでいる元データの方の体裁が気になり始めた。",[13,21,23],{"href":22},"/memory-makers/hyperscaler-capex",[17,24,22],{}," を開き直して MSFT の「24Q2」の数字をじっと見て、フィスカルなのかカレンダーなのか判別できないまま 3 秒固まった。Koyfin の桁とも一発で突き合わせられない。ここから一日かけて、ページの軸とチャートの構成を全部組み替えた。",[27,28,29],"h2",{"id":29},"軸の表記を揃え直す",[10,31,32],{},"最初に気持ち悪さを Claude Code に投げた。",[34,35,36],"blockquote",{},[10,37,38],{},"マイクロソフトの 24 年 Q2、これフィスカルとカレンダーが混在してて紛らわしい。Koyfin の数字と一発で突き合わせたいので、カレンダーイヤーで統一して、小数点第 1 位まで出してくれ。",[10,40,41,42,45],{},"ページの内部表現はカレンダー四半期で持っていたが、表示側のラベルが社ごとに揺れていた。MSFT は会計年度終わりが 6 月なので、CY2024Q2 と FY2024Q4 がしょっちゅう取り違えられる。表示ラベルを CY 固定にして、バー上の数字も ",[17,43,44],{},"$57.4B"," のように小数点 1 桁まで降ろした。Koyfin と画面の数字が縦並びでぴったり重なる状態を作る。",[27,47,49],{"id":48},"営業cfcapexfcfを年度ごとに横並びにする","「営業CF・CapEx・FCF」を年度ごとに横並びにする",[10,51,52,53,58],{},"ここで本題。前日に ",[13,54,56],{"href":55},"/hyperscaler-capex-ocf-section-and-koyfin-bug-fix",[17,57,55],{}," で営業 CF セクションを下に追加したばかりだった。けれど CapEx と営業 CF が別ブロックで上下に並んでいる構成では、各四半期で営業 CF のうち何 % を CapEx に突っ込んだのか、目で追えない。",[34,60,61],{},[10,62,63],{},"CapEx のチャートに営業 CF と FCF も並べてくれ。四半期ごとに 3 本のバーで「営業 CF・CapEx・差額の FCF」を横並びに。下の個社別 OCF セクションは削っていい。",[10,65,66,67,70],{},"Claude Code に ",[17,68,69],{},"HyperscalerCapexSmallMultiples.vue"," を組み替えさせた。最初の試作は「OCF・CapEx・FCF」の順だったが、画面を見て「左に営業 CF・中央に CapEx・右に FCF」の順に並べ直してもらった。FCF は負の値も取りうるので Y 軸を負側に伸ばし、0 ラインを描き足す。",[72,73,78],"pre",{"className":74,"code":75,"language":76,"meta":77,"style":77},"language-vue shiki shiki-themes vitesse-light vitesse-light","\u003C!-- 1 ticker × 1 quarter で 3 本バー -->\n\u003Crect :x=\"x(q, 'ocf')\"  :height=\"h(q.ocf)\"  fill=\"var(--ocf)\"  />\n\u003Crect :x=\"x(q, 'capex')\" :height=\"h(q.capex)\" fill=\"var(--capex)\" />\n\u003Crect :x=\"x(q, 'fcf')\"  :height=\"h(q.fcf)\"  :fill=\"q.fcf >= 0 ? 'var(--fcf+)' : 'var(--fcf-)'\" />\n","vue","",[17,79,80,89,182,253],{"__ignoreMap":77},[81,82,85],"span",{"class":83,"line":84},"line",1,[81,86,88],{"class":87},"sxvE3","\u003C!-- 1 ticker × 1 quarter で 3 本バー -->\n",[81,90,92,96,100,103,107,110,113,115,118,122,125,129,133,136,139,141,144,147,149,151,154,156,158,161,163,165,167,170,172,174,177,179],{"class":83,"line":91},2,[81,93,95],{"class":94},"shFtX","\u003C",[81,97,99],{"class":98},"sHkkW","rect",[81,101,102],{"class":94}," :",[81,104,106],{"class":105},"senZ8","x",[81,108,109],{"class":94},"=",[81,111,112],{"class":94},"\"",[81,114,106],{"class":105},[81,116,117],{"class":94},"(",[81,119,121],{"class":120},"s4oTP","q",[81,123,124],{"class":94},",",[81,126,128],{"class":127},"sMJiu"," '",[81,130,132],{"class":131},"sdGka","ocf",[81,134,135],{"class":127},"'",[81,137,138],{"class":94},")",[81,140,112],{"class":94},[81,142,143],{"class":94},"  :",[81,145,146],{"class":105},"height",[81,148,109],{"class":94},[81,150,112],{"class":94},[81,152,153],{"class":105},"h",[81,155,117],{"class":94},[81,157,121],{"class":120},[81,159,160],{"class":94},".",[81,162,132],{"class":120},[81,164,138],{"class":94},[81,166,112],{"class":94},[81,168,169],{"class":120},"  fill",[81,171,109],{"class":94},[81,173,112],{"class":127},[81,175,176],{"class":131},"var(--ocf)",[81,178,112],{"class":127},[81,180,181],{"class":94},"  />\n",[81,183,185,187,189,191,193,195,197,199,201,203,205,207,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,241,243,245,248,250],{"class":83,"line":184},3,[81,186,95],{"class":94},[81,188,99],{"class":98},[81,190,102],{"class":94},[81,192,106],{"class":105},[81,194,109],{"class":94},[81,196,112],{"class":94},[81,198,106],{"class":105},[81,200,117],{"class":94},[81,202,121],{"class":120},[81,204,124],{"class":94},[81,206,128],{"class":127},[81,208,209],{"class":131},"capex",[81,211,135],{"class":127},[81,213,138],{"class":94},[81,215,112],{"class":94},[81,217,102],{"class":94},[81,219,146],{"class":105},[81,221,109],{"class":94},[81,223,112],{"class":94},[81,225,153],{"class":105},[81,227,117],{"class":94},[81,229,121],{"class":120},[81,231,160],{"class":94},[81,233,209],{"class":120},[81,235,138],{"class":94},[81,237,112],{"class":94},[81,239,240],{"class":120}," fill",[81,242,109],{"class":94},[81,244,112],{"class":127},[81,246,247],{"class":131},"var(--capex)",[81,249,112],{"class":127},[81,251,252],{"class":94}," />\n",[81,254,256,258,260,262,264,266,268,270,272,274,276,278,281,283,285,287,289,291,293,295,297,299,301,303,305,307,309,311,314,316,318,320,322,324,327,331,335,337,340,342,344,346,349,351,353],{"class":83,"line":255},4,[81,257,95],{"class":94},[81,259,99],{"class":98},[81,261,102],{"class":94},[81,263,106],{"class":105},[81,265,109],{"class":94},[81,267,112],{"class":94},[81,269,106],{"class":105},[81,271,117],{"class":94},[81,273,121],{"class":120},[81,275,124],{"class":94},[81,277,128],{"class":127},[81,279,280],{"class":131},"fcf",[81,282,135],{"class":127},[81,284,138],{"class":94},[81,286,112],{"class":94},[81,288,143],{"class":94},[81,290,146],{"class":105},[81,292,109],{"class":94},[81,294,112],{"class":94},[81,296,153],{"class":105},[81,298,117],{"class":94},[81,300,121],{"class":120},[81,302,160],{"class":94},[81,304,280],{"class":120},[81,306,138],{"class":94},[81,308,112],{"class":94},[81,310,143],{"class":94},[81,312,313],{"class":105},"fill",[81,315,109],{"class":94},[81,317,112],{"class":94},[81,319,121],{"class":120},[81,321,160],{"class":94},[81,323,280],{"class":120},[81,325,326],{"class":94}," >=",[81,328,330],{"class":329},"sM54T"," 0",[81,332,334],{"class":333},"stQ0i"," ?",[81,336,128],{"class":127},[81,338,339],{"class":131},"var(--fcf+)",[81,341,135],{"class":127},[81,343,102],{"class":333},[81,345,128],{"class":127},[81,347,348],{"class":131},"var(--fcf-)",[81,350,135],{"class":127},[81,352,112],{"class":94},[81,354,252],{"class":355},"sG7-3",[10,357,358],{},"3 本バーが並ぶと「四半期内で営業 CF の中から CapEx に何割吸われ、残りどれだけ FCF になったか」が一目で見える。並べただけで意味の取れ方が変わる、というのを画面で実感する瞬間が来た。",[27,360,362],{"id":361},"koyfin-のupgrade文字列で-5-四半期分が抜けていた","Koyfin の「Upgrade」文字列で 5 四半期分が抜けていた",[10,364,365],{},"整えたチャートを眺めていて、2023Q1〜2024Q1 のバーがどれも空欄なのに気づいた。これは実績期間のはずなので、Koyfin の数字がそのまま入っているのが正常。",[10,367,368,369,372,373,376,377,380,381,384,385,384,388,391],{},"DB を直接覗かせると、",[17,370,371],{},"eac_quarterly"," テーブルの該当四半期の ",[17,374,375],{},"metric_value"," が文字列 ",[17,378,379],{},"\"Upgrade\""," で保存されていた。Koyfin の無料プラン期に過去 4 四半期を引いたとき、プレミアム購読への誘導プレースホルダがそのまま入っていたのが原因。",[17,382,383],{},"parseFloat(\"Upgrade\")"," → ",[17,386,387],{},"NaN",[17,389,390],{},"null"," で全部抜け落ちている。",[10,393,394,395,398,399,401,402,404],{},"ここで「",[17,396,397],{},"financial_data_quarterly"," の方は有料版時代に取り込んだ実数が残っているのでは」と勘で投げてみたら当たり。MSFT は FY2015 から全四半期分の実数が綺麗に揃っていた。",[17,400,371],{}," で取れない四半期は ",[17,403,397],{}," にフォールバックする生成スクリプトに改修する方針を固める。",[27,406,408],{"id":407},"codex-レビューで-fy-cy-マッピングを-explicit-表に固定","Codex レビューで FY → CY マッピングを explicit 表に固定",[10,410,411,412,415],{},"ここで一度プランを切って ",[17,413,414],{},"codex exec -m gpt-5.5"," でレビューを通した。指摘は一発で本質を突いてきた。",[34,417,418],{},[10,419,420,423],{},[17,421,422],{},"fiscalToCalendar"," を数式で実装すると AAPL/MSFT/ORCL の FY ラベル（会計年度終了年）で 1 年ズレる。Step 1 を「explicit マップ」に必須仕様で固定して、DoD にテストベクトル 6 本を入れろ。",[10,425,426],{},"Apple は 9 月締め、Microsoft は 6 月締め、Oracle は 5 月締め。会計年度の終了年で FY を切る会社と、開始年で切る会社が混ざる以上、数式で割り切ると必ずどこかでオフセットを 1 ずらす日が来る。固定表に倒した。",[72,428,432],{"className":429,"code":430,"language":431,"meta":77,"style":77},"language-javascript shiki shiki-themes vitesse-light vitesse-light","// scripts/lib/hyperscalerFiscalCalendar.mjs（新規）\nexport const FISCAL_TO_CALENDAR = {\n  MSFT: { 'FY24Q1': 'CY23Q3', 'FY24Q2': 'CY23Q4', /* ... */ },\n  AAPL: { 'FY24Q1': 'CY23Q4', 'FY24Q2': 'CY24Q1', /* ... */ },\n  ORCL: { 'FY24Q1': 'CY23Q3', 'FY24Q2': 'CY23Q4', /* ... */ },\n}\n","javascript",[17,433,434,439,456,510,556,602],{"__ignoreMap":77},[81,435,436],{"class":83,"line":84},[81,437,438],{"class":87},"// scripts/lib/hyperscalerFiscalCalendar.mjs（新規）\n",[81,440,441,444,447,450,453],{"class":83,"line":91},[81,442,443],{"class":98},"export",[81,445,446],{"class":333}," const",[81,448,449],{"class":120}," FISCAL_TO_CALENDAR",[81,451,452],{"class":94}," =",[81,454,455],{"class":94}," {\n",[81,457,458,462,465,468,470,473,475,477,479,482,484,486,488,491,493,495,497,500,502,504,507],{"class":83,"line":184},[81,459,461],{"class":460},"sz8Xr","  MSFT",[81,463,464],{"class":94},":",[81,466,467],{"class":94}," {",[81,469,128],{"class":127},[81,471,472],{"class":131},"FY24Q1",[81,474,135],{"class":127},[81,476,464],{"class":94},[81,478,128],{"class":127},[81,480,481],{"class":131},"CY23Q3",[81,483,135],{"class":127},[81,485,124],{"class":94},[81,487,128],{"class":127},[81,489,490],{"class":131},"FY24Q2",[81,492,135],{"class":127},[81,494,464],{"class":94},[81,496,128],{"class":127},[81,498,499],{"class":131},"CY23Q4",[81,501,135],{"class":127},[81,503,124],{"class":94},[81,505,506],{"class":87}," /* ... */",[81,508,509],{"class":94}," },\n",[81,511,512,515,517,519,521,523,525,527,529,531,533,535,537,539,541,543,545,548,550,552,554],{"class":83,"line":255},[81,513,514],{"class":460},"  AAPL",[81,516,464],{"class":94},[81,518,467],{"class":94},[81,520,128],{"class":127},[81,522,472],{"class":131},[81,524,135],{"class":127},[81,526,464],{"class":94},[81,528,128],{"class":127},[81,530,499],{"class":131},[81,532,135],{"class":127},[81,534,124],{"class":94},[81,536,128],{"class":127},[81,538,490],{"class":131},[81,540,135],{"class":127},[81,542,464],{"class":94},[81,544,128],{"class":127},[81,546,547],{"class":131},"CY24Q1",[81,549,135],{"class":127},[81,551,124],{"class":94},[81,553,506],{"class":87},[81,555,509],{"class":94},[81,557,559,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600],{"class":83,"line":558},5,[81,560,561],{"class":460},"  ORCL",[81,563,464],{"class":94},[81,565,467],{"class":94},[81,567,128],{"class":127},[81,569,472],{"class":131},[81,571,135],{"class":127},[81,573,464],{"class":94},[81,575,128],{"class":127},[81,577,481],{"class":131},[81,579,135],{"class":127},[81,581,124],{"class":94},[81,583,128],{"class":127},[81,585,490],{"class":131},[81,587,135],{"class":127},[81,589,464],{"class":94},[81,591,128],{"class":127},[81,593,499],{"class":131},[81,595,135],{"class":127},[81,597,124],{"class":94},[81,599,506],{"class":87},[81,601,509],{"class":94},[81,603,605],{"class":83,"line":604},6,[81,606,607],{"class":94},"}\n",[10,609,610],{},"Vitest のテストベクトルも 47 本書かせて全部通した。プラン更新後の再レビューでは「コード例が『数式禁止』と矛盾するので削除して固定表だけ残せ」と指摘が入り、これも反映。3 度目のレビューで「致命的な指摘なし、実装に進んで OK」。生成スクリプト 2 本に手を入れて、抜けていた 31 セルが画面で埋まった。",[27,612,614],{"id":613},"個社の上に4-社合算積み上げ棒を新設","個社の上に「4 社合算積み上げ棒」を新設",[10,616,617],{},"実績が埋まったところで、ユーザーとしての興味が次に動いた。",[34,619,620],{},[10,621,622],{},"各社の営業 CF・CapEx・FCF を合算して、積み上げ棒で個社別の上に 1 個作ってくれ。あと個社の方は数字が読みづらいので、バーの上にラベル入れて。",[10,624,625,628],{},[17,626,627],{},"HyperscalerCashflowConsolidatedStack.vue"," を新規で生やした。最初は持っているデータ全社（7 社）で合算したが、Apple の数字を入れたまま画面を見て手が止まる。",[34,630,631],{},[10,632,633],{},"Apple ってハイパースケーラーじゃないですよね。合算からは外しましょう。",[10,635,636,637,641],{},"Apple を除外。続けて Oracle と CoreWeave も「ハイパースケーラーの設備投資余力を見る」という趣旨から外れる規模・性質なので除外。Meta は微妙だが、自社で大規模クラスタを抱えて Llama を回している以上ここでは残す。最終的に合算は ",[638,639,640],"strong",{},"MSFT・GOOGL・AMZN・META の 4 社","。個社別チャートには 7 社全部残して、参考として並べておく。",[27,643,645],{"id":644},"点線の境界が-crwv-に引きずられていた","点線の境界が CRWV に引きずられていた",[10,647,648],{},"最後に細かい違和感。実績と予測を分ける垂直の点線が CY2025Q3 と Q4 の間に引かれていたが、4 社合算で見ると MSFT・GOOGL・AMZN・META は CY2026Q1 まで実績が揃っている。",[10,650,651,652,655,656,659],{},"データを覗くと、点線位置を決めている ",[17,653,654],{},"anyEstimate"," フラグが「全 7 社の OR」で計算されていた。CRWV だけが CY2025Q4 と CY2026Q1 で ",[17,657,658],{},"isActual=false","（estimate）として記録されているので、4 社合算チャートの境界が前倒しに引っ張られていた。",[10,661,662,663,666],{},"合算チャートでは「対象 ticker の範囲だけで OR を取る」、個社別小チャートでは「その ticker 単体の estimate フラグで判定する」、というように ",[17,664,665],{},"dividerX"," を ticker スコープに切り直す。CRWV のセルは Q3/Q4 の境、MSFT のセルは Q1/Q2 の境、というように各社で点線位置が独立して動く形に直った。",[27,668,669],{"id":669},"学び",[671,672,673,680,686,695],"ul",{},[674,675,676,679],"li",{},[638,677,678],{},"3 本並列はテーブルより速い","。CapEx と営業 CF を別ブロックで上下に置いている間は「Capex / OCF 比率」を別テーブルで計算しないと読めなかったのが、横並びにした瞬間にバーの高さの目算で済むようになった。グラフの軸構成は意味の取れ方を決める。",[674,681,682,685],{},[638,683,684],{},"FY → CY 変換は数式で書くと必ず事故る","。会計年度の終了年で FY を切る会社と開始年で切る会社が混在する以上、explicit テーブルとテストベクトルで固める。Codex の初手指摘がここを撃ち抜いてきたのは助かった。",[674,687,688,691,692,694],{},[638,689,690],{},"「全社 OR」のフラグ集計は対象範囲が動いた瞬間に意味がズレる","。",[17,693,654],{}," のような boolean OR は計算範囲をパラメータ化しておく癖をつけるべき。チャートを 7 社→4 社に絞った瞬間、点線が嘘をつき始める典型。",[674,696,697,700],{},[638,698,699],{},"「Upgrade」文字列のような無料プラン由来のプレースホルダは parseFloat で NaN になり、見た目には null と区別がつかない","。同じテーブルの他社で値が入っているなら、別テーブルのフォールバックがあるか先に疑う。前日の Koyfin EAC バグ修正と同じ筋の事故。",[27,702,703],{"id":703},"編集したファイル",[671,705,706,712,718,724,734,746,752],{},[674,707,708,711],{},[17,709,710],{},"apps/web/app/components/memory-makers/HyperscalerCapexSmallMultiples.vue","（3 本バー化・数値ラベル追加・ticker 別 dividerX）",[674,713,714,717],{},[17,715,716],{},"apps/web/app/components/memory-makers/HyperscalerCashflowConsolidatedStack.vue","（新規・4 社合算）",[674,719,720,723],{},[17,721,722],{},"apps/web/app/pages/memory-makers/hyperscaler-capex.vue","（個社別 OCF 節削除・合算節追加・脚注追加）",[674,725,726,729,730,733],{},[17,727,728],{},"apps/web/app/data/memory-makers/hyperscalerCapexQuarterly.ts"," / ",[17,731,732],{},"hyperscalerOcfQuarterly.ts","（実績 31 セル補填）",[674,735,736,729,739,742,743,745],{},[17,737,738],{},"apps/web/scripts/generate-hyperscaler-capex-quarterly.mjs",[17,740,741],{},"generate-hyperscaler-ocf-quarterly.mjs","（",[17,744,397],{}," フォールバック）",[674,747,748,751],{},[17,749,750],{},"apps/web/scripts/lib/hyperscalerFiscalCalendar.mjs","（新規・FY→CY explicit 表）",[674,753,754,757],{},[17,755,756],{},"apps/web/tests/hyperscaler-fiscal-calendar.test.ts","（新規・47 ケース pass）",[759,760,761],"style",{},"html pre.shiki code .sxvE3, html code.shiki .sxvE3{--shiki-default:#A0ADA0;--shiki-dark:#A0ADA0}html pre.shiki code .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}html pre.shiki code .sHkkW, html code.shiki .sHkkW{--shiki-default:#1E754F;--shiki-dark:#1E754F}html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .s4oTP, html code.shiki .s4oTP{--shiki-default:#B07D48;--shiki-dark:#B07D48}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 .sM54T, html code.shiki .sM54T{--shiki-default:#2F798A;--shiki-dark:#2F798A}html pre.shiki code .stQ0i, html code.shiki .stQ0i{--shiki-default:#AB5959;--shiki-dark:#AB5959}html pre.shiki code .sG7-3, html code.shiki .sG7-3{--shiki-default:#393A34;--shiki-dark:#393A34}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 .sz8Xr, html code.shiki .sz8Xr{--shiki-default:#998418;--shiki-dark:#998418}",{"title":77,"searchDepth":91,"depth":91,"links":763},[764,765,766,767,768,769,770,771],{"id":29,"depth":91,"text":29},{"id":48,"depth":91,"text":49},{"id":361,"depth":91,"text":362},{"id":407,"depth":91,"text":408},{"id":613,"depth":91,"text":614},{"id":644,"depth":91,"text":645},{"id":669,"depth":91,"text":669},{"id":703,"depth":91,"text":703},"dev","ハイパースケーラー設備投資ページを四半期ごとに営業CF・CapEx・FCF が横並びで効率が見える構成へ作り直し、Koyfin の Upgrade 文字列で抜けた 23Q1〜24Q1 の実績を別テーブル経由で埋め、点線の境界線も ticker 別の estimate に追従させるまで詰めた記録。","md",{},true,null,"/hyperscaler-capex-page-parallel-chart-refactor","financial-data",false,"2026-06-27T00:00:00.000Z",{"title":5,"description":773},"2026-06/2026-06-27/hyperscaler-capex-page-parallel-chart-refactor",[785,786,787,788,789,790],"memory-makers","ハイパースケーラー","CapEx","営業キャッシュフロー","Koyfin","Codex","WHXwW9jQGiij1MDWhpL5cZP62Be5mCp36PTNRNvJIY0",[],"https://log.eurekapu.com/og/blog/hyperscaler-capex-page-parallel-chart-refactor.png?v=2026-06-27T00%3A00%3A00.000Z&title=hyperscaler-capex%20%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E3%80%8C%E5%96%B6%E6%A5%ADCF%E3%83%BBCapEx%E3%83%BBFCF%20%E4%B8%89%E6%9C%AC%E4%B8%A6%E5%88%97%E3%80%8D%E3%81%B8%E4%BD%9C%E3%82%8A%E7%9B%B4%E3%81%97%E3%80%81%E5%90%88%E7%AE%97%E7%A9%8D%E3%81%BF%E4%B8%8A%E3%81%92%E6%A3%92%E3%81%A8%E7%82%B9%E7%B7%9A%E4%BD%8D%E7%BD%AE%E3%81%BE%E3%81%A7%E8%A9%B0%E3%82%81%E3%82%8B&author=Kei%20Komatsu&sig=3277708174624479",1782885016248]