[{"data":1,"prerenderedAt":664},["ShallowReactive",2],{"content-/aehr-backlog-chart-template-test":3,"all-pages-for-dir":662,"og-image-/aehr-backlog-chart-template-test":663},{"id":4,"title":5,"body":6,"category":643,"description":644,"extension":645,"meta":646,"navigation":503,"path":647,"project_name":648,"published":649,"publishedAt":650,"seo":651,"stem":652,"tags":653,"todo":660,"updatedAt":650,"__hash__":661},"pages/2026-04/2026-04-27/aehr-backlog-chart-template-test.md","AEHRのバックログ積み上げ横棒チャートで再利用テンプレートの再現性をテストした",{"type":7,"value":8,"toc":621},"minimark",[9,13,21,24,28,31,72,79,82,87,94,105,109,123,126,146,153,156,167,170,174,185,200,207,211,214,373,380,383,387,390,422,429,432,439,442,445,456,459,466,479,486,489,492,542,546,549,574,577,593,596,599,602,609,612,616],[10,11,5],"h1",{"id":12},"aehrのバックログ積み上げ横棒チャートで再利用テンプレートの再現性をテストした",[14,15,16,20],"p",{},[17,18,19],"code",{},"Downloads/backlog_stacked_chart_template.md"," というテンプレートが手元に残っていた。装置メーカーの「期首バックログ + 受注 - 売上 = 期末バックログ」というT字勘定の流れを、20四半期ぶんの積み上げ横棒チャートで描くための再利用プロンプトと、AEHR (Aehr Test Systems, NASDAQ: AEHR) の20四半期分のサンプルデータが入っている。",[14,22,23],{},"このテンプレートは「他人に渡してもそのまま再現できる」ことが価値の核になる。手元で書いた本人は描けて当然で、別のセッション・別のClaudeに渡したときに同じ図が出てこないと「再利用」を名乗れない。今日は自分で書いたテンプレートを自分で再現できるかを試すことにした。",[25,26,27],"h2",{"id":27},"できあがったチャート",[14,29,30],{},"仕様どおり、各四半期で2本の積み上げ棒を縦に並べてある。",[32,33,34,42,48,54,60,66],"ul",{},[35,36,37,41],"li",{},[38,39,40],"strong",{},"上段（借方系）",": 受注 (#c2410c オレンジ) + 期首残 (#e5e5e5 薄グレー)",[35,43,44,47],{},[38,45,46],{},"下段（貸方系）",": 売上 (#1e40af ネイビー) + 期末残 (#bbb 中間グレー)",[35,49,50,53],{},[38,51,52],{},"配色の意図",": 受注と売上に注目させたいので、両者だけに有彩色を当てて、ストック側（期首残・期末残）はグレーで背景化した。テンプレート原文は4階調グレースケールだったが、フローの2要素を視認しやすくするため有彩色に切り替えた",[35,55,56,59],{},[38,57,58],{},"ゼロ軸",": 左 (x=120) に揃える対称配置ではないやり方",[35,61,62,65],{},[38,63,64],{},"スケール",": 10px = $1M",[35,67,68,71],{},[38,69,70],{},"枠線",": 通常 0.5px、直近の急変化点（FY24 Q2の受注崩壊／FY26 Q3の受注最高）だけ 1.2px に太らせた",[14,73,74],{},[75,76],"img",{"alt":77,"src":78},"AEHR バックログ積み上げ横棒チャート (19四半期)","/2026-04/2026-04-27/aehr-backlog-chart.svg",[25,80,81],{"id":81},"描いてみて気付いたテンプレートの瑕疵",[83,84,86],"h3",{"id":85},"_1-20四半期と書いて実データは19四半期だった","1. 「20四半期」と書いて実データは19四半期だった",[14,88,89,90,93],{},"テンプレートのデータテーブルの見出しには ",[17,91,92],{},"### データテーブル (FY22 Q1 〜 FY26 Q3, 20四半期分)"," と書いてある。しかし実際に行を数えると FY22 Q1 から FY26 Q3 まで19行しかない。FY26 Q4 がまだ決算されていないので当然なのだが、見出しと中身が食い違っている。",[14,95,96,97,100,101,104],{},"再利用プロンプトの方にも ",[17,98,99],{},"viewBoxの高さは20四半期×90px + 上下マージン200pxを目安"," と書いてあるので、ここも「19四半期」に直したほうがよい。今回は19四半期で計算し、viewBoxの高さは ",[17,102,103],{},"19 × 90 + 200 = 1910px"," にした。",[83,106,108],{"id":107},"_2-fy25-q1-のデータに整合性ズレが56mある","2. FY25 Q1 のデータに整合性ズレが$5.6Mある",[14,110,111,112,115,116,122],{},"T字勘定の仕様では各四半期で ",[17,113,114],{},"期首残 + 受注 = 売上 + 期末残"," が成立するはず。19四半期ぶん検算したところ、ほとんどは",[17,117,121],{"className":118},[119,120],"language-math","math-inline","0.0〜","0.1M（四捨五入の影響）で収まる。",[14,124,125],{},"ところがFY25 Q1だけは:",[32,127,128,134,140],{},[35,129,130,131],{},"上段（期首残 + 受注）: 7.3 + 16.8 = ",[38,132,133],{},"24.1",[35,135,136,137],{},"下段（売上 + 期末残）: 13.1 + 16.6 = ",[38,138,139],{},"29.7",[35,141,142,143],{},"差分: ",[38,144,145],{},"$5.6M",[14,147,148,149,152],{},"テンプレートの整合性チェックの注釈には ",[17,150,151],{},"$1M以上ズレている場合は元データを再確認する"," と書いた本人なので、自分の言葉どおりに再確認すべき箇所がある。チャート上ではこの四半期だけ「合計 24.1 = 29.7 (Δ +5.6)」と赤字で表示されるようにした。",[14,154,155],{},"候補は3つ思い浮かぶ:",[32,157,158,161,164],{},[35,159,160],{},"8-Kから受注額を写し間違えた（一番ありそう）",[35,162,163],{},"為替・キャンセル等の調整が期中に入った",[35,165,166],{},"受注の定義変更（gross / net of cancellations）",[14,168,169],{},"ここは原データの 8-K に戻って取り直すのが筋。記事の主題ではないので保留にしておく。",[83,171,173],{"id":172},"_3-期首残と受注の積み上げ順序が仕様で曖昧","3. 「期首残」と「受注」の積み上げ順序が仕様で曖昧",[14,175,176,177,180,181,184],{},"再利用プロンプトの本文では ",[17,178,179],{},"上段 = 受注 + 期首残"," と受注を先に書いてある一方、配色の説明では ",[17,182,183],{},"濃い順に: 受注=#888, 売上=#666, 期末残=#bbb, 期首残=#ddd"," と並べている。",[14,186,187,188,191,192,195,196,199],{},"実装するときに「左から濃い順」に置くか、「左から ",[17,189,190],{},"受注 → 期首残"," の文字順」に置くかで悩んだ。今回は本文の語順に合わせて、上段は ",[38,193,194],{},"受注 (濃い) → 期首残 (薄い)","、下段は ",[38,197,198],{},"売上 (濃い) → 期末残 (中間)"," とした。濃いセグメントがゼロ軸寄りに集まるので、目線が左端のフローに自然に向く。",[14,201,202,203,206],{},"ただ、「期首残は前期からの繰越なので左端に置きたい」という別の合理性もある。次にテンプレートを更新するなら、",[17,204,205],{},"左から右への順序: [受注, 期首残]（フロー → ストックの順で読ませる）"," のように、明示的に書き加えるのがよい。",[83,208,210],{"id":209},"_4-合計-x-yの桁ズレが多い","4. 「合計 X = Y」の桁ズレが多い",[14,212,213],{},"整合性チェックの数字を見ると、$0.1M程度のズレが半数以上の四半期で出ている。",[215,216,217,236],"table",{},[218,219,220],"thead",{},[221,222,223,227,230,233],"tr",{},[224,225,226],"th",{},"四半期",[224,228,229],{},"上段",[224,231,232],{},"下段",[224,234,235],{},"差",[237,238,239,254,268,281,294,307,320,333,347,360],"tbody",{},[221,240,241,245,248,251],{},[242,243,244],"td",{},"FY22 Q1",[242,246,247],{},"22.3",[242,249,250],{},"22.2",[242,252,253],{},"-0.1",[221,255,256,259,262,265],{},[242,257,258],{},"FY22 Q3",[242,260,261],{},"42.1",[242,263,264],{},"42.2",[242,266,267],{},"+0.1",[221,269,270,273,276,279],{},[242,271,272],{},"FY22 Q4",[242,274,275],{},"31.3",[242,277,278],{},"31.4",[242,280,267],{},[221,282,283,286,289,292],{},[242,284,285],{},"FY23 Q4",[242,287,288],{},"46.7",[242,290,291],{},"46.8",[242,293,267],{},[221,295,296,299,302,305],{},[242,297,298],{},"FY24 Q2",[242,300,301],{},"24.5",[242,303,304],{},"24.4",[242,306,253],{},[221,308,309,312,315,318],{},[242,310,311],{},"FY24 Q3",[242,313,314],{},"27.5",[242,316,317],{},"27.6",[242,319,267],{},[221,321,322,325,328,331],{},[242,323,324],{},"FY24 Q4",[242,326,327],{},"24.0",[242,329,330],{},"23.9",[242,332,253],{},[221,334,335,338,340,342],{},[242,336,337],{},"FY25 Q1",[242,339,133],{},[242,341,139],{},[242,343,344],{},[38,345,346],{},"+5.6",[221,348,349,352,355,358],{},[242,350,351],{},"FY25 Q2",[242,353,354],{},"25.8",[242,356,357],{},"25.9",[242,359,267],{},[221,361,362,365,368,371],{},[242,363,364],{},"FY26 Q1",[242,366,367],{},"26.6",[242,369,370],{},"26.5",[242,372,253],{},[14,374,375,379],{},[17,376,378],{"className":377},[119,120],"0.1Mのズレは ","M単位で四捨五入する以上避けられない。AEHRは8-Kでも$M小数1桁までしか開示しないので、ここは仕様として許容範囲に入れて運用するしかない。",[25,381,382],{"id":382},"チャートを描く側の実装メモ",[83,384,386],{"id":385},"viewbox-とレイアウトの再計算","viewBox とレイアウトの再計算",[14,388,389],{},"仕様の数字を素直に置くと:",[32,391,392,399,416,419],{},[35,393,394,395,398],{},"viewBox: ",[17,396,397],{},"0 0 680 1910","（19四半期に調整）",[35,400,401,402],{},"各四半期セクション: 90px\n",[32,403,404,407,410,413],{},[35,405,406],{},"上段バー: y_offset = 10、高さ 18",[35,408,409],{},"ギャップ: 8",[35,411,412],{},"下段バー: y_offset = 36、高さ 18",[35,414,415],{},"パディング: 残り 36px",[35,417,418],{},"ゼロ軸: x = 120",[35,420,421],{},"1単位: 10px",[14,423,424,425,428],{},"各四半期の最大値はFY26 Q3 の 上段49.0 / 下段49.0。バーの右端は ",[17,426,427],{},"120 + 490 = 610px","、合計表示の余白を含めても 680px 内に収まる。",[83,430,431],{"id":431},"バー内側ラベルの脱落条件",[14,433,434,435,438],{},"期首残や期末残が小さい四半期（例: FY22 Q1 の期首残 1.6 → 幅16px）では、12pxフォントの数値が物理的にバーに収まらない。今回は ",[17,436,437],{},"セグメント幅 \u003C 18px"," の場合は内側ラベルを省略するルールを足した。",[14,440,441],{},"理想的には「セグメントの右上に外置きする」「より小さなフォントにする」などのフォールバックを書きたいが、テンプレートの仕様には触れていない暗黙の領域なので、再利用プロンプトに加筆する余地がある。",[83,443,444],{"id":444},"有彩色バーの文字色は白",[14,446,447,448,451,452,455],{},"テンプレート原文の ",[17,449,450],{},"文字は黒。ただし濃いグレー(売上バー)上だけ白にする"," のルールは色覚バリアフリーの観点から有効。今回は受注 (#c2410c オレンジ) と売上 (#1e40af ネイビー) の両方に有彩色を当てたので、どちらも背景が暗く、内側ラベルは白文字 (",[17,453,454],{},"fill=\"#fff\"",") にしてコントラストを確保した。",[83,457,458],{"id":458},"急変化点の判定",[14,460,461,462,465],{},"仕様は ",[17,463,464],{},"直近の急変化点があれば、そのバーだけ枠線を太く(stroke-width=1)"," だが、「急変化」の定義が書かれていない。今回はテンプレートの本文末尾にあった気づきに依拠した:",[32,467,468,476],{},[35,469,470,471,475],{},"FY24 Q2: 受注 ",[17,472,474],{"className":473},[119,120],"2.2M（前期 ","18.4M から崩壊）",[35,477,478],{},"FY26 Q3: 受注 $37.2M（過去最高）",[14,480,481,482,485],{},"人間の判断が要る箇所なので、自動化したいなら ",[17,483,484],{},"前期比で受注が±50%以上動いた四半期"," などの定量的な閾値を仕様に書き込むほうがよい。",[25,487,488],{"id":488},"テンプレートをアップデートするなら",[14,490,491],{},"今回の試行で出た改善点をまとめると:",[32,493,496,506,512,518,524,530,536],{"className":494},[495],"contains-task-list",[35,497,500,505],{"className":498},[499],"task-list-item",[501,502],"input",{"disabled":503,"type":504},true,"checkbox"," データテーブルの見出しを「20四半期」→「19四半期（FY26 Q4 は未決算）」に修正",[35,507,509,511],{"className":508},[499],[501,510],{"disabled":503,"type":504}," viewBox 高さ目安を四半期数に応じて変動する式に書き換える",[35,513,515,517],{"className":514},[499],[501,516],{"disabled":503,"type":504}," 上段・下段の積み上げ順序を明示（受注 → 期首残、売上 → 期末残）",[35,519,521,523],{"className":520},[499],[501,522],{"disabled":503,"type":504}," バー内ラベルの脱落条件（セグメント幅 \u003C 18px 等）を仕様に追加",[35,525,527,529],{"className":526},[499],[501,528],{"disabled":503,"type":504}," 急変化点の閾値を定量化（例: 前期比 ±50% で太線）",[35,531,533,535],{"className":532},[499],[501,534],{"disabled":503,"type":504}," FY25 Q1 のデータを 8-K で再確認して差し替え",[35,537,539,541],{"className":538},[499],[501,540],{"disabled":503,"type":504}," 配色オプションを2系統用意する（フローに注目したいときの「有彩色版」: 受注=オレンジ／売上=ネイビー、印刷向けの「グレースケール版」: 元仕様のまま）",[25,543,545],{"id":544},"_5年俯瞰でaehrに何が見えるか","5年俯瞰でAEHRに何が見えるか",[14,547,548],{},"チャートを並べてみると、テンプレートの末尾にあった3つのピークがそのまま視覚化される:",[32,550,551,557,568],{},[35,552,553,556],{},[38,554,555],{},"FY22 Q2",": 期末バックログ $36.1M。SiC(炭化珪素)初期の駆け込み受注期",[35,558,559,562,563,567],{},[38,560,561],{},"FY23 Q3",": 期末バックログ ",[17,564,566],{"className":565},[119,120],"31.6M。SiCピーク（受注 ","33.3M）",[35,569,570,573],{},[38,571,572],{},"FY26 Q3",": 期末バックログ $38.7M（過去最高）。AI/シリコンフォトニクス顧客の拡大期",[14,575,576],{},"そして谷:",[32,578,579,588],{},[35,580,581,562,583,587],{},[38,582,298],{},[17,584,586],{"className":585},[119,120],"3.0M、受注 ","2.2M。EV/SiC需要の急ブレーキ。バー2本ともほぼ消失する",[35,589,590,592],{},[38,591,324],{},": 期末バックログ $7.3M。EV/SiCの凪が続いた",[14,594,595],{},"5年で見ると、装置メーカーのシクリカル特性が「FY24 Q2の崩壊」一発で言い切れる強さで現れる。Book-to-bill比率（受注÷売上）は売上の振れに引きずられて見映えが悪くなりがちだが、絶対額のバックログ推移を5年並べると、谷とピークの位置がそのまま投資判断の入りどころに見える。",[25,597,598],{"id":598},"メタな結論",[14,600,601],{},"「自分で書いたプロンプトテンプレートを自分（の別セッション）で再現できるか」というテストは、ただ図を出すだけの作業ではなく、テンプレート自体のバグ取りになる。今回はテンプレート側に4つの瑕疵（四半期数、積み上げ順序の曖昧さ、バー内ラベルの脱落、急変化点の閾値未定義）と、データ側に1つの瑕疵（FY25 Q1の$5.6Mズレ）を見つけた。",[14,603,604,605,608],{},"再利用プロンプトは「初回の自分」と「未来の他人」を結ぶインターフェースなので、書きっぱなしにせずに",[38,606,607],{},"1度は自分で再生して齟齬を潰す工程","を挟むのが安いコストで効く。",[610,611],"hr",{},[25,613,615],{"id":614},"参考-元のテンプレート原文","参考: 元のテンプレート原文",[14,617,618,620],{},[17,619,19],{},"（手元のローカル資料）。AEHRの20四半期分T字勘定分析の会話から派生した再利用テンプレート。",{"title":622,"searchDepth":623,"depth":623,"links":624},"",2,[625,626,633,639,640,641,642],{"id":27,"depth":623,"text":27},{"id":81,"depth":623,"text":81,"children":627},[628,630,631,632],{"id":85,"depth":629,"text":86},3,{"id":107,"depth":629,"text":108},{"id":172,"depth":629,"text":173},{"id":209,"depth":629,"text":210},{"id":382,"depth":623,"text":382,"children":634},[635,636,637,638],{"id":385,"depth":629,"text":386},{"id":431,"depth":629,"text":431},{"id":444,"depth":629,"text":444},{"id":458,"depth":629,"text":458},{"id":488,"depth":623,"text":488},{"id":544,"depth":623,"text":545},{"id":598,"depth":623,"text":598},{"id":614,"depth":623,"text":615},"dev","Aehr Test Systems (AEHR) の19四半期分の受注・売上・期首/期末バックログを、Downloads配下にあった『バックログ積み上げ横棒チャート再利用テンプレート』のプロンプト仕様どおりにSVGで描いて、テンプレートが他人（=Claude）に渡しても同じ図を再現できるか試した記録。データ整合性チェックでFY25 Q1に$5.6Mズレを検出し、テンプレートが20四半期と書いていたのに実データは19四半期だった、などの瑕疵もあわせて発見した。","md",{},"/aehr-backlog-chart-template-test","misc-dev",false,"2026-04-27T00:00:00.000Z",{"title":5,"description":644},"2026-04/2026-04-27/aehr-backlog-chart-template-test",[654,655,656,657,658,659],"AEHR","バックログ","T字勘定","SVG","プロンプトテンプレート","再現性テスト","memo","SOIuXiz_uH5ckXgsRe41ElOYssPn3TqB_69O5_bIKa4",[],"https://log.eurekapu.com/favicon.svg",1777329226876]