• #AEHR
  • #バックログ
  • #T字勘定
  • #SVG
  • #プロンプトテンプレート
  • #再現性テスト
開発misc-devメモ

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 に太らせた

AEHR バックログ積み上げ横棒チャート (19四半期)

描いてみて気付いたテンプレートの瑕疵

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 Q122.322.2-0.1
FY22 Q342.142.2+0.1
FY22 Q431.331.4+0.1
FY23 Q446.746.8+0.1
FY24 Q224.524.4-0.1
FY24 Q327.527.6+0.1
FY24 Q424.023.9-0.1
FY25 Q124.129.7+5.6
FY25 Q225.825.9+0.1
FY26 Q126.626.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字勘定分析の会話から派生した再利用テンプレート。