AEHRのバックログ積み上げ横棒チャートで再利用テンプレートの再現性をテストした
Downloads/backlog_stacked_chart_template.md というテンプレートが手元に残っていた。装置メーカーの「期首バックログ + 受注 - 売上 = 期末バックログ」というT字勘定の流れを、20四半期ぶんの積み上げ横棒チャートで描くための再利用プロンプトと、AEHR (Aehr Test Systems, NASDAQ: AEHR) の20四半期分のサンプルデータが入っている。
このテンプレートは「他人に渡してもそのまま再現できる」ことが価値の核になる。手元で書いた本人は描けて当然で、別のセッション・別のClaudeに渡したときに同じ図が出てこないと「再利用」を名乗れない。今日は自分で書いたテンプレートを自分で再現できるかを試すことにした。
できあがったチャート
仕様どおり、各四半期で2本の積み上げ棒を縦に並べてある。
- 上段(借方系): 受注 (#c2410c オレンジ) + 期首残 (#e5e5e5 薄グレー)
- 下段(貸方系): 売上 (#1e40af ネイビー) + 期末残 (#bbb 中間グレー)
- 配色の意図: 受注と売上に注目させたいので、両者だけに有彩色を当てて、ストック側(期首残・期末残)はグレーで背景化した。テンプレート原文は4階調グレースケールだったが、フローの2要素を視認しやすくするため有彩色に切り替えた
- ゼロ軸: 左 (x=120) に揃える対称配置ではないやり方
- スケール: 10px = $1M
- 枠線: 通常 0.5px、直近の急変化点(FY24 Q2の受注崩壊/FY26 Q3の受注最高)だけ 1.2px に太らせた
描いてみて気付いたテンプレートの瑕疵
1. 「20四半期」と書いて実データは19四半期だった
テンプレートのデータテーブルの見出しには ### データテーブル (FY22 Q1 〜 FY26 Q3, 20四半期分) と書いてある。しかし実際に行を数えると FY22 Q1 から FY26 Q3 まで19行しかない。FY26 Q4 がまだ決算されていないので当然なのだが、見出しと中身が食い違っている。
再利用プロンプトの方にも viewBoxの高さは20四半期×90px + 上下マージン200pxを目安 と書いてあるので、ここも「19四半期」に直したほうがよい。今回は19四半期で計算し、viewBoxの高さは 19 × 90 + 200 = 1910px にした。
2. FY25 Q1 のデータに整合性ズレが$5.6Mある
T字勘定の仕様では各四半期で 期首残 + 受注 = 売上 + 期末残 が成立するはず。19四半期ぶん検算したところ、ほとんどは0.0〜0.1M(四捨五入の影響)で収まる。
ところがFY25 Q1だけは:
- 上段(期首残 + 受注): 7.3 + 16.8 = 24.1
- 下段(売上 + 期末残): 13.1 + 16.6 = 29.7
- 差分: $5.6M
テンプレートの整合性チェックの注釈には $1M以上ズレている場合は元データを再確認する と書いた本人なので、自分の言葉どおりに再確認すべき箇所がある。チャート上ではこの四半期だけ「合計 24.1 = 29.7 (Δ +5.6)」と赤字で表示されるようにした。
候補は3つ思い浮かぶ:
- 8-Kから受注額を写し間違えた(一番ありそう)
- 為替・キャンセル等の調整が期中に入った
- 受注の定義変更(gross / net of cancellations)
ここは原データの 8-K に戻って取り直すのが筋。記事の主題ではないので保留にしておく。
3. 「期首残」と「受注」の積み上げ順序が仕様で曖昧
再利用プロンプトの本文では 上段 = 受注 + 期首残 と受注を先に書いてある一方、配色の説明では 濃い順に: 受注=#888, 売上=#666, 期末残=#bbb, 期首残=#ddd と並べている。
実装するときに「左から濃い順」に置くか、「左から 受注 → 期首残 の文字順」に置くかで悩んだ。今回は本文の語順に合わせて、上段は 受注 (濃い) → 期首残 (薄い)、下段は 売上 (濃い) → 期末残 (中間) とした。濃いセグメントがゼロ軸寄りに集まるので、目線が左端のフローに自然に向く。
ただ、「期首残は前期からの繰越なので左端に置きたい」という別の合理性もある。次にテンプレートを更新するなら、左から右への順序: [受注, 期首残](フロー → ストックの順で読ませる) のように、明示的に書き加えるのがよい。
4. 「合計 X = Y」の桁ズレが多い
整合性チェックの数字を見ると、$0.1M程度のズレが半数以上の四半期で出ている。
| 四半期 | 上段 | 下段 | 差 |
|---|---|---|---|
| FY22 Q1 | 22.3 | 22.2 | -0.1 |
| FY22 Q3 | 42.1 | 42.2 | +0.1 |
| FY22 Q4 | 31.3 | 31.4 | +0.1 |
| FY23 Q4 | 46.7 | 46.8 | +0.1 |
| FY24 Q2 | 24.5 | 24.4 | -0.1 |
| FY24 Q3 | 27.5 | 27.6 | +0.1 |
| FY24 Q4 | 24.0 | 23.9 | -0.1 |
| FY25 Q1 | 24.1 | 29.7 | +5.6 |
| FY25 Q2 | 25.8 | 25.9 | +0.1 |
| FY26 Q1 | 26.6 | 26.5 | -0.1 |
0.1Mのズレは M単位で四捨五入する以上避けられない。AEHRは8-Kでも$M小数1桁までしか開示しないので、ここは仕様として許容範囲に入れて運用するしかない。
チャートを描く側の実装メモ
viewBox とレイアウトの再計算
仕様の数字を素直に置くと:
- viewBox:
0 0 680 1910(19四半期に調整) - 各四半期セクション: 90px
- 上段バー: y_offset = 10、高さ 18
- ギャップ: 8
- 下段バー: y_offset = 36、高さ 18
- パディング: 残り 36px
- ゼロ軸: x = 120
- 1単位: 10px
各四半期の最大値はFY26 Q3 の 上段49.0 / 下段49.0。バーの右端は 120 + 490 = 610px、合計表示の余白を含めても 680px 内に収まる。
バー内側ラベルの脱落条件
期首残や期末残が小さい四半期(例: FY22 Q1 の期首残 1.6 → 幅16px)では、12pxフォントの数値が物理的にバーに収まらない。今回は セグメント幅 < 18px の場合は内側ラベルを省略するルールを足した。
理想的には「セグメントの右上に外置きする」「より小さなフォントにする」などのフォールバックを書きたいが、テンプレートの仕様には触れていない暗黙の領域なので、再利用プロンプトに加筆する余地がある。
有彩色バーの文字色は白
テンプレート原文の 文字は黒。ただし濃いグレー(売上バー)上だけ白にする のルールは色覚バリアフリーの観点から有効。今回は受注 (#c2410c オレンジ) と売上 (#1e40af ネイビー) の両方に有彩色を当てたので、どちらも背景が暗く、内側ラベルは白文字 (fill="#fff") にしてコントラストを確保した。
急変化点の判定
仕様は 直近の急変化点があれば、そのバーだけ枠線を太く(stroke-width=1) だが、「急変化」の定義が書かれていない。今回はテンプレートの本文末尾にあった気づきに依拠した:
- FY24 Q2: 受注
2.2M(前期18.4M から崩壊) - FY26 Q3: 受注 $37.2M(過去最高)
人間の判断が要る箇所なので、自動化したいなら 前期比で受注が±50%以上動いた四半期 などの定量的な閾値を仕様に書き込むほうがよい。
テンプレートをアップデートするなら
今回の試行で出た改善点をまとめると:
- データテーブルの見出しを「20四半期」→「19四半期(FY26 Q4 は未決算)」に修正
- viewBox 高さ目安を四半期数に応じて変動する式に書き換える
- 上段・下段の積み上げ順序を明示(受注 → 期首残、売上 → 期末残)
- バー内ラベルの脱落条件(セグメント幅 < 18px 等)を仕様に追加
- 急変化点の閾値を定量化(例: 前期比 ±50% で太線)
- FY25 Q1 のデータを 8-K で再確認して差し替え
- 配色オプションを2系統用意する(フローに注目したいときの「有彩色版」: 受注=オレンジ/売上=ネイビー、印刷向けの「グレースケール版」: 元仕様のまま)
5年俯瞰でAEHRに何が見えるか
チャートを並べてみると、テンプレートの末尾にあった3つのピークがそのまま視覚化される:
- FY22 Q2: 期末バックログ $36.1M。SiC(炭化珪素)初期の駆け込み受注期
- FY23 Q3: 期末バックログ
31.6M。SiCピーク(受注33.3M) - FY26 Q3: 期末バックログ $38.7M(過去最高)。AI/シリコンフォトニクス顧客の拡大期
そして谷:
- FY24 Q2: 期末バックログ
3.0M、受注2.2M。EV/SiC需要の急ブレーキ。バー2本ともほぼ消失する - FY24 Q4: 期末バックログ $7.3M。EV/SiCの凪が続いた
5年で見ると、装置メーカーのシクリカル特性が「FY24 Q2の崩壊」一発で言い切れる強さで現れる。Book-to-bill比率(受注÷売上)は売上の振れに引きずられて見映えが悪くなりがちだが、絶対額のバックログ推移を5年並べると、谷とピークの位置がそのまま投資判断の入りどころに見える。
メタな結論
「自分で書いたプロンプトテンプレートを自分(の別セッション)で再現できるか」というテストは、ただ図を出すだけの作業ではなく、テンプレート自体のバグ取りになる。今回はテンプレート側に4つの瑕疵(四半期数、積み上げ順序の曖昧さ、バー内ラベルの脱落、急変化点の閾値未定義)と、データ側に1つの瑕疵(FY25 Q1の$5.6Mズレ)を見つけた。
再利用プロンプトは「初回の自分」と「未来の他人」を結ぶインターフェースなので、書きっぱなしにせずに1度は自分で再生して齟齬を潰す工程を挟むのが安いコストで効く。
参考: 元のテンプレート原文
Downloads/backlog_stacked_chart_template.md(手元のローカル資料)。AEHRの20四半期分T字勘定分析の会話から派生した再利用テンプレート。