発端: 非上場のCXMTから数字を取りたい
「2026年1〜3月の売上高508億元」という数字がメモリ記事に転がっていた。出どころが気になって調べると、CXMT(長鑫存儲)本体は非上場だが、A株上場の 兆易創新(GigaDevice, 603986.SS) の四半期報告書に持分法投資先として数字が乗っているらしい、という当たりが付いた。
これは memory-makers の決算ビートに乗せたい。/add-ticker で兆易創新を取り込めば、芋づる式に CXMT の四半期売上が拾えるはず——という前提で着手した。
最初の躓き: 兆易創新は CXMT の proxy じゃなかった
/add-ticker を回す前に、サブエージェントを偵察に派遣した。「兆易創新の長鑫科技持分はどの会計区分か、何%か」を1問だけ聞かせる構成にした。
戻ってきた答えで前提が崩れた。
- 兆易創新の長鑫科技持分は 1.80% しかない
- 会計区分は「联营企业」(持分法)ではなく 「其他权益工具投资」(公允価値評価)
- つまり兆易創新の四半期報告書には、CXMT の売上・利益が一切ぶら下がってこない
「兆易創新を取り込めば CXMT が取れる」という当初の絵は、ここで完全に崩れた。508億元の数字が出てきた一次資料は別にあるはずで、改めて探させると 長鑫科技自身の招股说明书(IPO 申請受理 2025-12-30、財務資料更新版 2026-05-17 公開)が引っかかった。これが本物だった。
ここで方針を切り替えた。
- CXMT を memory-makers の独立 maker として追加する(兆易創新の DRAM 区画に間借りさせない)
- 兆易創新は本来の NOR / MCU / NAND メーカー(
subcategory: nand)の位置に戻す - 兆易創新と CXMT の関係は「持分1.80% + 関连人(朱一明が両社で重要ポジション)+ DRAM代工調達」の3系統に分解して説明欄に書く
最初の数十分はこの整理にかかった。
次の躓き: チャートを作らなかった判断ミス
CXMT の maker ページが描画されたあと「表示確認しました」と報告したら、「ごめん、チャートにしてほしいんですけど、できなかったってことですか?」と返ってきた。
正直に書くと、できなかったのではなく 判断ミス だった。元の記事にあった定量データが3点しかなく(508億元 / 1,100-1,200億元ガイダンス / 500-570億元ガイダンス)、「3点ならテキストでいいか」と勝手に省略した。本来は招股说明书から年次推移が取れる以上、最初からチャートにすべきだった。
SK Hynix 用のカスタムセクションパターンを参考に、cxmtIpoFinancials.ts データファイルを作らせて、[maker].vue に CXMT 専用セクションを showCxmtFinancials = (id === 'cxmt') のガード式で出し分けるよう指示した。GroupedBarChart 2枚(売上 / 歸母純利益)と詳細テーブルが描画されて、ようやく見られる形になった。
3つめの躓き: 過去の数字を入れ忘れた
「OK、それでその508億元ってやつがチャートのどこに書いてあるのかわからないんですけど」と返ってきて、画面を見て自分でも気づいた。チャートに乗っているのは 2025年通年と 2026 Q1 だけで、2022〜2024年の実績が抜けていた。さらに 2026 通年予測(H1 ガイダンス × 2 で粗く推計)の扱いが、実績と並列に置かれて見分けがつかない。
ここで GroupedBarChart 側に 予測区切り の仕組みを足すことにした。既存呼び出し側を壊さない前提で、forecastFromIndex などの prop を追加して、指定インデックス以降のバーをハッチ柄+点線 stroke で描き、境界に縦の点線ディバイダと「← 実績 / 予測 →」ラベルを引く構成にした。
<GroupedBarChart
:categories="['2022', '2023', '2024', '2025', '2026 Q1', '2026E']"
:series="revenueSeries"
unit="億元"
:forecast-from-index="5"
forecast-label-actual="実績"
forecast-label-forecast="予測"
/>
forecastFromIndex を 5 にすると、6番目(インデックス5)の 2026E 列から先がハッチ柄に切り替わる。prop 未指定なら従来動作 の挙動を維持しているので、既存の SK Hynix / Micron / Nanya 側は何も書き換えなくていい。
4つめの躓き: チャートを分けすぎた
forecastFromIndex を入れた直後、最初の実装では「実績用チャート」と「予測用チャート」を別パネルに分けてしまっていた。「あーごめん、そういうことか。これチャートを一つにまとめてもらっていいっすよ」と指示が飛んできて、ようやく意図が合った。
時系列で並べたいのに途中で別パネルに飛ばされたら、目で連続性を追えない。1枚に統合して、2022〜2026Eの6カテゴリが横一列に並ぶ形に直した。GroupedBarChart 側に予測区切りの仕組みを入れた効果がここで効いてくる——同じパネル内で実績と予測を視覚分離できるので、分割する理由がそもそもなくなった。
最終的に着地した構成はこうなった。
| 位置 | カテゴリ | 売上 (億元) | 歸母 (億元) | スタイル |
|---|---|---|---|---|
| 1 | 2022 年 | 82.9 | — | 実績(塗りつぶし) |
| 2 | 2023 年 | 90.9 | — | 実績 |
| 3 | 2024 年 | 241.8 | — | 実績 |
| 4 | 2025 年 | 617.99 | — | 実績 |
| 5 | 2026 Q1 単四半期 | 508 | — | 実績(単Q表記) |
| 6 | 2026 年(予測, H1×2) | 2,300前後 | — | ハッチ柄+点線 |
招股说明书の年次推移がきれいに右肩上がりに並んで、最後だけハッチ柄で予測と分かる絵になった。
学び
- 一次資料の所在を仮定で進めない。「兆易創新の四半期報告に CXMT がぶら下がっている」という前提は、誰かが書いた要約記事の影響で頭に貼り付いていた。サブエージェントに偵察を派遣して持分%と会計区分を1問だけ確認させたのが効いた。リサーチを並列でフル稼働させる前に、前提を1つ確認させるステップを噛ませる癖は維持したい
- 「データ点が少ないから省略していい」は呼んでいない判断。チャートにできる数字があるなら最初からチャートにする。テキストにまとめて出すと、後から「チャート見せて」と必ず戻る。一往復ぶん無駄になる
- 既存コンポーネントに足す prop は default で従来動作を保つ。
forecastFromIndexをオプショナルにし、未指定で既存挙動を維持したので、他の maker ページに副作用が出なかった。「既存呼び出し側を壊さない」を最低条件にしてから機能追加に踏み切ると、レビューと検証が軽くなる - 時系列は1パネルにまとめる。実績と予測を別パネルに分けると、目で連続性を追えなくなる。スタイル(ハッチ・点線・ディバイダ)で十分に分離できる
成果物
git commit 1a0a0c36 の中身:
- 新規:
apps/web/app/data/memory-makers/cxmtIpoFinancials.ts(招股说明书ベースの年次推移+2026 H1 ガイダンス) - 修正:
apps/web/app/components/memory-makers/GroupedBarChart.vue(forecastFromIndex/forecastLabelActual/forecastLabelForecastprop 追加、ハッチ柄+点線 stroke +境界ディバイダ) - 修正:
apps/web/app/pages/memory-makers/[maker].vue(showCxmtFinancialsガード式で CXMT 専用セクションを出し分け) - 修正:
apps/web/app/data/memory-makers/makers.ts(CXMT を独立 maker エントリとして追加、兆易創新を NAND メーカー側に戻し、CXMT との関係を持分1.80% / 関连人 / 代工調達の3系統で記述)