[{"data":1,"prerenderedAt":756},["ShallowReactive",2],{"content-/kioxia-fy25-q4-summary-and-beat-monitoring-todo":3,"all-pages-for-dir":754,"og-image-/kioxia-fy25-q4-summary-and-beat-monitoring-todo":755},{"id":4,"title":5,"body":6,"category":732,"description":733,"extension":734,"meta":735,"navigation":375,"ogImage":736,"path":737,"project_name":738,"published":739,"publishedAt":740,"seo":741,"stem":742,"tags":743,"todo":736,"unpublished":739,"updatedAt":736,"__hash__":753},"pages/2026-06/2026-06-25/kioxia-fy25-q4-summary-and-beat-monitoring-todo.md","キオクシア決算サマリー記事公開と beat-monitoring/285A の途中対応 — アナリストコンセンサスがない銘柄をどう扱うか",{"type":7,"value":8,"toc":713},"minimark",[9,14,23,26,30,35,38,63,75,78,82,114,118,129,132,152,180,182,186,190,200,283,298,302,309,312,357,361,364,433,436,440,443,565,572,574,577,581,592,602,606,616,618,622,629,685,687,690,709],[10,11,13],"h1",{"id":12},"キオクシア決算サマリー記事公開と-beat-monitoring285a-の途中対応","キオクシア決算サマリー記事公開と beat-monitoring/285A の途中対応",[15,16,17,18,22],"p",{},"2026年6月25日。マイクロン FY26 Q3 のサマリー記事を出したあとで、ユーザーから「同じ形式でキオクシアもまとめてほしい」と依頼が来た。\n記事公開までは予定通り進んだが、関連ページ ",[19,20,21],"code",{},"/beat-monitoring/285A"," にデータを反映するところで「そもそもアナリストコンセンサスが取れていない」という前提崩れにぶつかり、途中で日付が変わった。",[24,25],"hr",{},[27,28,29],"h2",{"id":29},"やったこと",[31,32,34],"h3",{"id":33},"_1-キオクシア-fy25-q4-決算サマリー記事を公開","1. キオクシア FY25 Q4 決算サマリー記事を公開",[15,36,37],{},"公式 IR の決算説明資料 PDF と決算短信 PDF を取りに行き、24Q 分のセグメント PL を引き直した。",[39,40,41,49,55],"ul",{},[42,43,44,45],"li",{},"公開記事: ",[46,47,48],"a",{"href":48},"/kioxia-fy25-q4-summary-japanese",[42,50,51,52],{},"図1（売上 vs 売上原価、粗利率折れ線）: ",[19,53,54],{},"apps/web/public/images/kioxia-fy25-q4-summary-japanese/figure-01-revenue-cogs-gm.svg",[42,56,57,58,62],{},"マイクロン記事の ",[46,59,61],{"href":60},"/images/micron-q3-fy26-prepared-remarks-japanese/figure-11-revenue-cogs-gm.svg","figure-11"," と同形式（積み上げバー + 粗利率折れ線）に揃えて、IFRS データで作り直した",[15,64,65,66,70,71,74],{},"Q4 単独で売上 ",[67,68,69],"strong",{},"¥1兆29億"," に到達して、前四半期から ",[67,72,73],{},"+¥4,592億"," ほぼ倍増。\n売上原価は ¥2,716億 → ¥3,599億 までしか伸びておらず、増分のほぼ全部が粗利に直行している。\nマイクロンの Q3 で観測した「売上は伸びる、COGS は据え置き」がそのまま再現されていた。",[15,76,77],{},"::: callout\nちなみに音声入力で「キオクシア」を喋ったら「記憶視野」と書き起こされていて、最初に読んだとき何のことかしばらく分からなかった。Kioxia の語源は「記憶 + axia（価値）」なので、ある意味当たっている。\n:::",[31,79,81],{"id":80},"_2-ceo-発言と市場反応の補完","2. CEO 発言と市場反応の補完",[39,83,84,87,94],{},[42,85,86],{},"公式 IR ページから決算説明資料 PDF と社長発言を取得",[42,88,89,90,93],{},"ITmedia は「太田裕雄 社長」と書いていたが、決算短信の代表者欄は ",[67,91,92],{},"早坂 伸夫 代表取締役社長 CEO"," で確定。脚注で両説併記",[42,95,96,97,100,101,100,104,100,107,100,110,113],{},"x-search で ",[19,98,99],{},"@hibitti"," ",[19,102,103],{},"@kamiyaf14",[19,105,106],{},"@mofmof_investor",[19,108,109],{},"@apaes53",[19,111,112],{},"@kioxiaman"," 等の市場反応を拾って、記事末尾の「市場の反応」セクションに反映",[31,115,117],{"id":116},"_3-24四半期分の財務-ts-データを整備","3. 24四半期分の財務 TS データを整備",[15,119,120,121,124,125,128],{},"IR データブック Excel（",[19,122,123],{},"00.xlsx","）から Q1 FY2020 〜 Q4 FY2025 の ",[67,126,127],{},"24Q 分"," + Q1 FY2026 会社ガイドを構造化。",[15,130,131],{},"新規ファイル:",[39,133,134,140,146],{},[42,135,136,139],{},[19,137,138],{},"apps/web/app/data/memory-makers/kioxiaFinancialsTypes.ts"," — 型定義",[42,141,142,145],{},[19,143,144],{},"apps/web/app/data/memory-makers/kioxiaQuarterlyFinancials.ts"," — IFRS PL / Non-GAAP PL / BS / CF / アプリ別売上を四半期ごとに保持",[42,147,148,151],{},[19,149,150],{},"apps/web/tests/kioxia-financials.test.ts"," — 7件パス",[15,153,154,157,158,157,161,157,164,167,168,171,172,175,176,179],{},[19,155,156],{},"makers.ts"," / ",[19,159,160],{},"registry.ts",[19,162,163],{},"types.ts",[19,165,166],{},"index.ts"," に ",[19,169,170],{},"kioxia","（subcategory='nand'）を登録して、既存の ",[19,173,174],{},"[maker].vue"," レンダラに ",[19,177,178],{},"kioxiaQuarterlyFinancialsCompat"," で渡せる形にした。\nExcel → TS の自動生成スクリプトはセッション scratchpad に置いて、IR データブック更新時はそこを叩けば再生成できるようにしてある。",[24,181],{},[27,183,185],{"id":184},"ここから先が明日に持ち越しになった","ここから先が「明日に持ち越し」になった",[31,187,189],{"id":188},"発端-beat-monitoring285a-にデータが反映されていない","発端: /beat-monitoring/285A にデータが反映されていない",[15,191,192,193,195,196,199],{},"記事を公開したあと、ユーザーから「IR ページにガイダンスも実績も載っているのに、なぜ ",[19,194,21],{}," には何も入っていないのか」と指摘が入った。\nデータ反映するだけのつもりで ",[19,197,198],{},"285A.json"," を開いたら、想定外の構造が見えた。",[201,202,207],"pre",{"className":203,"code":204,"language":205,"meta":206,"style":206},"language-jsonc shiki shiki-themes vitesse-light vitesse-light","{\n  \"ticker\": \"285A\",\n  \"quarters\": [\n    {\n      \"quarter\": \"Q3 FY25\",\n      \"actual\": { \"revenue\": 428.5, \"eps\": ... },\n      // consensus が無い\n      \"guidance\": { \"revenue\": { \"company\": 445.0 }, ... }\n    }\n    // ...\n  ]\n}\n","jsonc","",[19,208,209,217,223,229,235,241,247,253,259,265,271,277],{"__ignoreMap":206},[210,211,214],"span",{"class":212,"line":213},"line",1,[210,215,216],{},"{\n",[210,218,220],{"class":212,"line":219},2,[210,221,222],{},"  \"ticker\": \"285A\",\n",[210,224,226],{"class":212,"line":225},3,[210,227,228],{},"  \"quarters\": [\n",[210,230,232],{"class":212,"line":231},4,[210,233,234],{},"    {\n",[210,236,238],{"class":212,"line":237},5,[210,239,240],{},"      \"quarter\": \"Q3 FY25\",\n",[210,242,244],{"class":212,"line":243},6,[210,245,246],{},"      \"actual\": { \"revenue\": 428.5, \"eps\": ... },\n",[210,248,250],{"class":212,"line":249},7,[210,251,252],{},"      // consensus が無い\n",[210,254,256],{"class":212,"line":255},8,[210,257,258],{},"      \"guidance\": { \"revenue\": { \"company\": 445.0 }, ... }\n",[210,260,262],{"class":212,"line":261},9,[210,263,264],{},"    }\n",[210,266,268],{"class":212,"line":267},10,[210,269,270],{},"    // ...\n",[210,272,274],{"class":212,"line":273},11,[210,275,276],{},"  ]\n",[210,278,280],{"class":212,"line":279},12,[210,281,282],{},"}\n",[15,284,285,286,289,290,293,294,297],{},"ほかの30銘柄（MU / NVDA / GOOGL …）は ",[19,287,288],{},"consensus","（Koyfin / SEC EDGAR 由来）と ",[19,291,292],{},"actual"," を比較する作りになっている。\nキオクシアだけ ",[67,295,296],{},"アナリストコンセンサスが空"," で、会社ガイダンスしか入っていなかった。\nそもそも日本企業のキオクシアに、米国系金融データプロバイダの consensus は十分に揃っていない。",[31,299,301],{"id":300},"方針転換-kioxia-だけ会社の前qガイダンス-vs-実績に切り替える","方針転換: Kioxia だけ「会社の前Qガイダンス vs 実績」に切り替える",[15,303,304,305,308],{},"「アナリスト予想に対するビート率」というフレーム自体が、この銘柄では成立していない。\n代わりに「",[67,306,307],{},"前Q時点で会社が出した自分のガイダンスに対して、実績がどれだけ上振れたか","」を見る方が、キオクシアの場合は意味がある。",[15,310,311],{},"ここで仕様判断:",[39,313,314,325,332,350],{},[42,315,316,317,320,321,324],{},"データ側に ",[19,318,319],{},"consensusSource"," フィールドを追加する（型: ",[19,322,323],{},"'analyst-consensus' | 'company-prior-guidance'","）",[42,326,327,328,331],{},"285A.json だけ ",[19,329,330],{},"\"consensusSource\": \"company-prior-guidance\""," を立てる",[42,333,334,335,338,339,341,342],{},"レンダラ (BeatExpectationsChart / TripleBeatTable / ",[19,336,337],{},"[ticker].vue",") は ",[19,340,319],{}," を見て、ラベルと比較対象を切り替える\n",[39,343,344,347],{},[42,345,346],{},"❌ 「アナリスト予想（コンセンサス）」 → ⭕ 「前Q時点の会社ガイダンス」",[42,348,349],{},"❌ 「売上ビート率」 → ⭕ 「売上 ガイド達成率（前Qガイド比）」",[42,351,352,353,356],{},"ビート率の計算式も ",[19,354,355],{},"(actual - prior_guide) / prior_guide"," に変える",[31,358,360],{"id":359},"実装はだいたい入ったけど","実装はだいたい入った、けど",[15,362,363],{},"ここまでで:",[39,365,368,387,396,409,415,424],{"className":366},[367],"contains-task-list",[42,369,372,100,377,167,379,382,383,386],{"className":370},[371],"task-list-item",[373,374],"input",{"checked":375,"disabled":375,"type":376},true,"checkbox",[19,378,163],{},[19,380,381],{},"ConsensusSource"," 型と ",[19,384,385],{},"TripleBeatData.consensusSource?"," を追加",[42,388,390,392,393,395],{"className":389},[371],[373,391],{"checked":375,"disabled":375,"type":376}," 285A.json に ",[19,394,319],{}," 追加",[42,397,399,100,401,404,405,408],{"className":398},[371],[373,400],{"checked":375,"disabled":375,"type":376},[19,402,403],{},"BeatExpectationsChart.vue"," のメインチャート est バーを ",[19,406,407],{},"quarters[i-1].guidance.X.company"," から引くように変更",[42,410,412,414],{"className":411},[371],[373,413],{"checked":375,"disabled":375,"type":376}," 凡例とチャート見出しを動的化",[42,416,418,100,420,423],{"className":417},[371],[373,419],{"checked":375,"disabled":375,"type":376},[19,421,422],{},"TripleBeatTable.vue"," の行ラベルと値も Kioxia 限定で切替",[42,425,427,100,429,432],{"className":426},[371],[373,428],{"checked":375,"disabled":375,"type":376},[19,430,431],{},"vue-tsc --noEmit"," パス、ユニットテスト 7件パス、既存 36件もパス",[15,434,435],{},"ここで時計を見たら深夜2時で、ブラウザでの目視確認に入る前に手が止まった。\nユーザーが chrome-devtools MCP を一度 reject したのもあって、明日の朝にログイン済み Chrome を繋ぎ直してから確認することにした。",[31,437,439],{"id":438},"計算上の埋まり方だけは机上で確認した","計算上の「埋まり方」だけは机上で確認した",[15,441,442],{},"実装の正しさだけはコード上で詰めた。実際に DOM に出る数字はこうなるはず:",[444,445,446,465],"table",{},[447,448,449],"thead",{},[450,451,452,456,459,462],"tr",{},[453,454,455],"th",{},"四半期",[453,457,458],{},"rev 実績",[453,460,461],{},"前Qガイド",[453,463,464],{},"達成率",[466,467,468,483,496,508,530,552],"tbody",{},[450,469,470,474,477,480],{},[471,472,473],"td",{},"Q3 FY25",[471,475,476],{},"4,285億",[471,478,479],{},"— (最古行)",[471,481,482],{},"—",[450,484,485,488,491,494],{},[471,486,487],{},"Q4 FY25",[471,489,490],{},"3,471億",[471,492,493],{},"— (前Qガイド無)",[471,495,482],{},[450,497,498,501,504,506],{},[471,499,500],{},"Q1 FY26",[471,502,503],{},"3,428億",[471,505,493],{},[471,507,482],{},[450,509,510,515,520,525],{},[471,511,512],{},[67,513,514],{},"Q2 FY26",[471,516,517],{},[67,518,519],{},"4,483億",[471,521,522],{},[67,523,524],{},"4,450億",[471,526,527],{},[67,528,529],{},"+0.7%",[450,531,532,537,542,547],{},[471,533,534],{},[67,535,536],{},"Q3 FY26",[471,538,539],{},[67,540,541],{},"5,436億",[471,543,544],{},[67,545,546],{},"5,250億",[471,548,549],{},[67,550,551],{},"+3.5%",[450,553,554,557,560,563],{},[471,555,556],{},"Q4 FY26",[471,558,559],{},"10,029億",[471,561,562],{},"— (Q3 は FY guide のみ)",[471,564,482],{},[15,566,567,568,571],{},"最後の Q4 FY26 が「会社が次Qガイドを出さず、通期ガイドだけ出した」パターンで空欄になる。\nこれを ",[19,569,570],{},"通期ガイド - (Q1+Q2+Q3 実績)"," で implied guide として埋めるかは、明日の判断対象に積んだ。",[24,573],{},[27,575,576],{"id":576},"学び",[31,578,580],{"id":579},"ベンチマークを1個の指標に固定するとそれが取れない銘柄が落ちる","「ベンチマーク」を1個の指標に固定すると、それが取れない銘柄が落ちる",[15,582,583,584,587,588,591],{},"これまで ",[19,585,586],{},"/beat-monitoring/*"," は「アナリストコンセンサスに対する実績のビート率」一本で来ていた。\n日本企業を入れた瞬間、その前提が崩れた。\n",[67,589,590],{},"「比較対象は何か」をデータ側で宣言させて、レンダラが切り替える"," という設計にしておけば、別ベンチマーク（セルサイドアナリスト / 自社前Qガイド / バイサイドホエール期待値 など）の銘柄が混在しても破綻しない。",[15,593,594,595,157,598,601],{},"今日はとりあえず2種類（",[19,596,597],{},"analyst-consensus",[19,599,600],{},"company-prior-guidance","）に閉じたが、将来 NVDA の「whisper number」とか別のソースを足すことになっても、enum を増やすだけで済む形にできた。",[31,603,605],{"id":604},"比較対象が無いはデータが無いと区別する","「比較対象が無い」は「データが無い」と区別する",[15,607,608,609,611,612,615],{},"ビート率カラムが空のとき、「データが無いから空」なのか「比較対象がそもそも無いから空」なのかは、UI 上で区別できる必要がある。\n今日の実装では前者は ",[19,610,482],{}," のまま、後者は明示的に ",[19,613,614],{},"（前Qガイド無）"," を出すようにした。\nユーザー側で「いつデータが入るか」と「永久に入らないか」を見分けられるのが、ファクトベースの UI として正しい振る舞い。",[24,617],{},[27,619,621],{"id":620},"明日やること持ち越し","明日やること（持ち越し）",[15,623,624,625,628],{},"進捗の詳細は ",[19,626,627],{},"memo/2026-06-25/kioxia-data-and-beat-monitoring-progress.md"," に積んである。最優先は以下。",[39,630,632,647,656,670,679],{"className":631},[367],[42,633,635,637,638,640,641,640,644,646],{"className":634},[371],[373,636],{"disabled":375,"type":376}," chrome-devtools MCP をログイン済み Chrome に繋いで、",[19,639,21],{}," と ",[19,642,643],{},"/memory-makers/kioxia",[19,645,48],{}," の3ページをスクショ取得して目視確認する",[42,648,650,652,653,655],{"className":649},[371],[373,651],{"disabled":375,"type":376}," Q4 FY26 の implied guide 補完（通期ガイド − Q1+Q2+Q3 累計）を ",[19,654,403],{}," の priorRevGuide / priorEpsGuide ヘルパーに追加するかどうかを決める",[42,657,659,661,662,664,665,640,667,669],{"className":658},[371],[373,660],{"disabled":375,"type":376}," 公開記事 ",[19,663,48],{}," から ",[19,666,21],{},[19,668,643],{}," への導線を callout で2本追加する",[42,671,673,100,675,678],{"className":672},[371],[373,674],{"disabled":375,"type":376},[19,676,677],{},"/code-review"," を1パス回して致命的指摘だけ拾う（CLAUDE.md の post-implementation-checklist Step 5）",[42,680,682,684],{"className":681},[371],[373,683],{"disabled":375,"type":376}," 未コミットの差分を3つの粒度に分けて commit する（公開記事 / memory-makers データ / beat-monitoring 拡張）",[24,686],{},[27,688,689],{"id":689},"関連リンク",[39,691,692,697,704],{},[42,693,44,694],{},[46,695,696],{"href":48},"キオクシア 2026年3月期 第4四半期（Q4 FY25）決算サマリー",[42,698,699,700],{},"マイクロン同形式記事: ",[46,701,703],{"href":702},"/micron-q3-fy26-prepared-remarks-japanese","Micron FY26 Q3 Prepared Remarks 全文和訳",[42,705,706,707],{},"持ち越しメモ: ",[19,708,627],{},[710,711,712],"style",{},"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);}",{"title":206,"searchDepth":219,"depth":219,"links":714},[715,720,726,730,731],{"id":29,"depth":219,"text":29,"children":716},[717,718,719],{"id":33,"depth":225,"text":34},{"id":80,"depth":225,"text":81},{"id":116,"depth":225,"text":117},{"id":184,"depth":219,"text":185,"children":721},[722,723,724,725],{"id":188,"depth":225,"text":189},{"id":300,"depth":225,"text":301},{"id":359,"depth":225,"text":360},{"id":438,"depth":225,"text":439},{"id":576,"depth":219,"text":576,"children":727},[728,729],{"id":579,"depth":225,"text":580},{"id":604,"depth":225,"text":605},{"id":620,"depth":219,"text":621},{"id":689,"depth":219,"text":689},"dev","2026年6月25日の開発ログ。マイクロン FY26 Q3 と同じフォーマットでキオクシア（東証プライム: 285A）の FY25 Q4 決算サマリー記事を公開し、IR データブックから24四半期分の財務 TS データも整備した。続けて /beat-monitoring/285A にデータを反映しようとしたところ、キオクシアにはまともなアナリストコンセンサスが取れていないことが判明。Kioxia だけ『前Q時点の会社ガイダンス vs 実績』に切り替える方針へ移行し、BeatExpectationsChart と 285A.json の構造を読み始めたところで時間切れ。明日続きをやるための持ち越しメモ。","md",{},null,"/kioxia-fy25-q4-summary-and-beat-monitoring-todo","mdx-playground",false,"2026-06-25T00:00:00.000Z",{"title":5,"description":733},"2026-06/2026-06-25/kioxia-fy25-q4-summary-and-beat-monitoring-todo",[744,745,746,747,748,749,750,751,752],"Kioxia","285A","決算","NAND","beat-monitoring","ガイダンス","Vue","Nuxt","持ち越し","eVP258Kn9dlT1y17GxhqRbMrSl00NQaYsIRqoDwNFds",[],"https://log.eurekapu.com/og/blog/kioxia-fy25-q4-summary-and-beat-monitoring-todo.png?v=2026-06-25T00%3A00%3A00.000Z&title=%E3%82%AD%E3%82%AA%E3%82%AF%E3%82%B7%E3%82%A2%E6%B1%BA%E7%AE%97%E3%82%B5%E3%83%9E%E3%83%AA%E3%83%BC%E8%A8%98%E4%BA%8B%E5%85%AC%E9%96%8B%E3%81%A8%20beat-monitoring%2F285A%20%E3%81%AE%E9%80%94%E4%B8%AD%E5%AF%BE%E5%BF%9C%20%E2%80%94%20%E3%82%A2%E3%83%8A%E3%83%AA%E3%82%B9%E3%83%88%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%B3%E3%82%B5%E3%82%B9%E3%81%8C%E3%81%AA%E3%81%84%E9%8A%98%E6%9F%84%E3%82%92%E3%81%A9%E3%81%86%E6%89%B1%E3%81%86%E3%81%8B&author=Kei%20Komatsu&sig=b3613503436b0f3c",1782445066060]