朝、beat-monitoring のトップを開きながら「ハイパースケーラーの FCF を時系列で並べたい」と思い出した。前日にそんな話をした記憶があるが、計画書には残っていない。とにかく /add-ticker で AAPL/MSFT/AMZN/GOOGL/META の5本を順次叩けばいいだろう、と Claude Code に投げた。
ところが、走り始めた瞬間に予想が崩れた。
4社は既に登録済み・AAPL だけが完全新規
/add-ticker MSFT の Step 3 で tickerMeta を確認させた結果、MSFT/AMZN/GOOGL/META は 前日(2026-06-25)に登録済み・JSON も作成済み・summaries にも反映済みだった。残作業は Koyfin valuation の取込だけ。AAPL のみが完全新規。
タスクリストを実態に合わせて組み直し、AAPL のリサーチをサブエージェントに background で派遣しつつ、並行で Chrome MCP の Koyfin タブで MSFT を開いて KID 解決の準備に入った。
AAPL リサーチが直近6四半期分のフル品質データを返してきたところで一気に流した:
- AAPL.json 作成 → tickerMeta に追加
- summaries.ts 再生成
- 5社まとめて Koyfin タブで KID を解決し、
tickersテーブルへ INSERT +koyfin_kid永続化 import_koyfin_batch.pyで 5社の estimates と price を一括取得 → Turso へ取込- valuation.ts 再生成 → MU/NVDA/SNDK の price が巻き添えで null 化していないことを確認
- dev で 5社カードに価格・NTM EPS・成長率・フォワード PER が描画されていることを確認
ここまでで完了サマリを出してもらい、いったん終わったつもりになった。
「インデックスにハイパースケーラー枠を作って」の真意
サマリを読んだ筆者から、すぐに違和感が返ってきた。
「これってビートモニタリングに作ってくれたんでしたっけ。だとしたら、そこのインデックスにハイパースケーラー枠を1個作って入れてほしいんですけど」
最初、SECTOR_GROUP_LIST の「AIインフラ・電力」から「クラウド/ハイパースケーラー」を独立セクターとして切り出す方針で実装させた。だが、これも違った。
「継続ウォッチとかのカテゴリーを変更するんじゃなくて、これに加えてってこと」
つまりセクター分割ではなく、tier 自体を新規追加してほしい、という指示だった。AAPL/MSFT/AMZN/GOOGL/META はビートを追う銘柄ではない。FCF や AI Capex を継続ウォッチする枠が欲しいだけ。
「ビート継続・成長期待」と「継続ウォッチ」の間に、新 tier「ハイパースケーラー」を独立配置する方針に切り替えた。SECTOR_GROUP の分割は元に戻し、tier だけで5社を集約。
// apps/web/data/tickerMeta.ts(イメージ)
tier: 'hyperscaler', // 新 tier
sector: 'cloud',
note: 'AI Capex/FCF モニタリング'
apps/web/app/pages/beat-monitoring/index.vue の tier 列に挿入。「ハイパースケーラー」見出しの下に 5社カードが並んだ。
サプライズ系チャートを全 38 銘柄から削除
ハイパースケーラー枠が落ち着いた段階で、別件の整理も入れた。サプライズ率・成長率を描画していた <TripleBeatPctChart> を [ticker].vue の呼び出しごと削除。これで全 38 銘柄の個別ページから消えた。apps/web/app/components/content/TripleBeatPctChart.vue 自体は残し、呼び出し側だけ落とす方針。
MSFT で「FY26 ガイドが n/a」の指摘 → 全銘柄スキャンへ
MSFT の個別ページを見ていた筆者が、画面上の通期ガイダンス欄を見て手を止めた。
「マイクロソフトも見たんですけど、このフィスカル26 の給付がないじゃないですか。これ、x-search 使ってもらえれば必ず拾えるはずなんで」
ここから方針が一気に拡張した。「他のやつも全部同じように拾ってね、頑張って」。
apps/web/app/data/tripleBeat/*.json 全体に対して consensus: "n/a" を grep させたところ、109件 / 17ファイルが浮かんだ。内訳:
- 日本銘柄(285A/4062/5016): 44件 — X 上の英語言及が薄く、x-search では拾いにくいので素直に見送り
- 米国銘柄: 65件 — ここを並列で潰す
サブエージェント並列で 65件を一気に埋める
筆者の主眼であるハイパースケーラー 2社(MSFT 1件 + META 6件)を先に処理し、品質を確認してから残り 12 ファイル 58件を 3 エージェントに分割した。
| エージェント | 担当 | 結果 |
|---|---|---|
| 単発 | MSFT (1件) | 1/1 採用 |
| 単発 | META (6件) | 6/6 採用 |
| Agent A | DELL/STX/WDC (19件) | 17/19 採用(89%) |
| Agent B | AXTI/LITE/VRT/NBIS/PWR/ETN (21件) | 11/21 採用(AXTI 小型株は X 上の言及不足で 10件見送り) |
| Agent C | BE/NOW/SNDK | 完了 |
各エージェントが自身の JSON を直接編集して完結する方針。検索 → 値抽出 → JSON 書き換え → 終了通知まで一気通貫。メイン側はエージェントの完了通知を受け取り、最後に dev で描画確認しただけ。
META のページを開くと、新コンセンサス値(41.67 / 46.20 / $59.50 等)が当該四半期にきれいに乗り、ビート率の折れ線がチャート末尾までつながっていた。残った "n/a" 2件は EPS ガイダンスそのものが未公表のラベルで、仕様通りの空欄。
気づき
人間が判断する係、AI が実行する係の構図が、今回は特に効いた。
- 「ハイパースケーラー枠を tier として切り出す/セクターとして切り出す」の区別は、画面を見て初めて気づける違和感
- 「マイクロソフトの FY26 ガイドが n/a」も、tickerMeta や JSON を眺めているだけでは出てこない。個別ページの表を見て手が止まった瞬間に拾えた
- そこから先の「全銘柄スキャン → 109件抽出 → 3並列エージェントで埋める」は完全に AI 側のパイプライン
x-search サブエージェントを 3 並列で投げる判断も、最初から 5 並列にしなかったのが今回は奏功した。MSFT/META を先に走らせて品質を見て、米国銘柄でも採用率に差が出る(DELL 89% vs AXTI 採用不能)ことを把握してから残りに進めた。「先に小さく出して品質を見る」を素朴にやっただけだが、AXTI のような小型株を別扱いにする判断材料がそこで揃った。
関連ファイル
apps/web/data/tickerMeta.ts— 新 tierhyperscaler追加apps/web/app/pages/beat-monitoring/index.vue— tier 列に「ハイパースケーラー」を挿入apps/web/app/components/content/TripleBeatPctChart.vue— 呼び出し側を全 38 銘柄から削除apps/web/app/data/tripleBeat/*.json— 米国 14 銘柄のコンセンサス埋め込みapps/web/app/data/tripleBeat/{AAPL,MSFT,AMZN,GOOGL,META}.json— ハイパースケーラー 5社
明日以降
/check-earningsはtickers.koyfin_kid登録済みの全銘柄を自動取込する仕様。5社の KID は本日永続化済みなので、明朝以降のジョブが自動で拾う- 日本銘柄 44件のコンセンサス n/a は、x-search では拾いにくいので別ルート(IR PDF 直読みなど)を検討