コンテンツにスキップ
Vantage
日本語
Esc
navigateopen⌘Jpreview
このページの内容

ロードマップ

Vantage がこれから向かう方向。エージェントに「目」と「記憶」を与えるための検討中のアイデアと、意図的にやらないこと。

Vantage がこれから向かおうとしている方向をまとめたページです。すでに動くものについては 変更履歴を、いま書けることについては各ガイドを参照してください。

前提 ― 誰のためのフレームワークか

Vantage は AI コーディングエージェントを一級市民として設計されています。人間が読みやすいこと より、エージェントが間違えずに書けること・自分で検証できることを優先します。設定ファイルを 禁止しているのも、UI キットとデータ層をフレームワークが所有しているのも、vantage docs / vantage search が CLI にあるのも、すべて同じ理由です ― エージェントの窓口は CLI であり、判断の余地は規約で潰す。

この視点で今の Vantage を眺めると、支援が厚いのは 2 箇所です。

  • 書く前vantage docs / vantage search / vantage add skill / AGENTS.md
  • 静的に検証するvantage check / vantage routes

そして、大きな空白が 1 つあります。

エージェントは、自分が書いた画面を見られない。

vantage dev のブラウザ → ターミナル転送(console.warn / console.error / 未捕捉エラー)は、 その穴に開いた最初の小さな窓です。以下のアイデアは、ほとんどがこの穴を埋めるためのものです。

設計中

要素インスペクタ ― 画面からエージェントへ

ブラウザ上の要素をホバー・クリックで選び、「これを直して」とエージェントに渡す仕組み。 バイブコーディングツールでは定番の体験ですが、これをアプリ側の実装ではなく フレームワークの機能として持ちます。

構成は 3 つです。

  • 開発時だけ JSX にソース位置を注入するdata-vtg="src/sales/index.tsx:42:7" と コンポーネント名。Vantage は UI キットを自分で所有していて、その大半が {...props} を そのまま DOM へ渡すため、<DataTable /> のような要素に付けた属性も実際の DOM まで届きます。
  • 開発時だけのオーバーレイ ― 要素の輪郭とラベルを描き、選択結果を送出する。
  • vantage select ― 選択されたものをエージェントが CLI から受け取る。 --json と、選択されるまで待つ --wait

本番ビルドでは属性もオーバーレイも完全に落とします(ソースパスがバンドルに残るのは 情報漏洩そのものなので)。

Squadbase Editor のようにプレビューを iframe で埋め込むツール向けには、選択結果を postMessage でも流し、オーバーレイの見た目自体をツール側が乗っ取れるようにする方針です。 Vantage が持つのは「位置情報の正しさ」と最小限の既定 UI までで、体験の作り込みはツール側に 譲ります。

検討中 ― エージェントに「目」を与える

vantage snap ― ページの構造化スナップショット

各ルートをヘッドレスで描画し、画像ではなく構造化テキストで返すコマンド。

{
  "route": "/sales",
  "state": "ready",                    // loading | ready | error | empty
  "regions": [
    { "type": "kpi",   "labels": ["今月の売上", "前月比"], "values": ["¥12.4M", "+8.2%"] },
    { "type": "chart", "component": "EChart",   "series": ["売上", "目標"], "points": 12 },
    { "type": "table", "component": "DataTable", "columns": ["日付", "店舗", "金額"], "rows": 0 }
  ],
  "console": [{ "level": "warn", "text": "…" }],
  "network": [{ "url": "/api/sales", "status": 500 }]
}

エージェントにとっては、スクリーンショットの画像よりこの形のほうが桁違いに読めます。 「表が 0 行」「API が 500 を返している」は、人間がスクリーンショットを貼るまで誰も気づかない 種類の失敗です。

regions に意味づけができるのは、Vantage が UI キット・ルーティング・データ層をすべて 所有しているからです。汎用のブラウザ自動化ツールには出せない粒度で、ここが最大の勝ち筋だと 考えています。

vantage check --runtime ― 描画して初めてわかる診断

いまの 診断 はソースを読むだけの静的なものです。実際に描画しないと 分からない失敗を、同じコマンド・同じ終了コードに載せます。

  • クエリが pending のまま抜けず、ローディング表示から戻らない
  • データ取得は成功しているのに表やチャートが空
  • 描画中に叩いた API が 4xx / 5xx を返した
  • 未処理の Promise リジェクション
  • 要素が親の幅をはみ出している

狙いは「エージェントの自己検証ループが終了コードで閉じる」ことです。vantage check が 通れば出荷してよい、という一本の線を引きたい。

vantage dev --agent ― 構造化イベントストリーム

開発サーバーが、HMR の成否・描画エラー・API のレスポンス・遅いクエリを NDJSON で別チャネルへ 出す案。人間向けのターミナル出力は今のままにして、エージェントは追記を読み続けることで 編集した直後に壊れたことを知れるようにします。いまのコンソール転送の自然な延長線です。

検討中 ― エージェントに「記憶」を与える

definePageintent

そのページが何のためにあるかをフレームワークが構造として持つ案。

export const page = definePage({
  title: "売上ダッシュボード",
  intent: "店舗別の日次売上を見て、目標未達の店舗を早く見つける",
});

コメントは書き換えの過程で消えますが、これは vantage routes に出てマニフェストに載る 構造です。読者は「30 ターン後の自分」や「引き継いだ別のエージェント」。 AGENTS.md や Agent Skills と同じ「フレームワークが記憶の置き場所を規定する」という 考え方の、ページ単位版にあたります。

vantage diff ― コードの差分ではなくアプリの差分

routes    + /reports/monthly    - /legacy
api       ~ GET /api/sales      (POST が消えた)
render    /sales  表の列 5 → 4  ("担当者" が消えた)
bundle    +11.2 MB

エージェントは自分の変更の副作用を系統的に見落とします。「意図した変更」と「実際に起きた 変更」の差を突きつけるためのコマンドです。

vantage explain <route|file>

既存のアプリを引き継いだエージェント向けの、逆向きのドキュメント。そのページのルート・使って いるコンポーネント・叩いている API・依存している環境変数・親レイアウトを 1 画面にまとめます。 vantage routes --detail の延長ですが、狙いは「ソースを読む代わりになる粒度」で、 コンテキストの消費を大きく減らすことです。

検討中 ― そもそも間違えさせない

エラーをドキュメントへの入口にする

Vantage は自分のスタック(TanStack Query・Base UI・ECharts・Hono)を全部知っています。 ブラウザのエラーをターミナルへ転送するときに、次の一手を添えることができるはずです。

[console.error] Cannot read properties of undefined (reading 'map')
 > src/sales/index.tsx:42
   ↳ useApiQuery の data は初回 undefined です。`data?.map` にするか
     isLoading で分岐してください → vantage docs data-fetching

エージェントが最もつまずくのは「何を検索すればいいか分からない」場面なので、 エラーが自動的にドキュメントを引く形にします。

「よく間違える」を診断ではなく吸収で潰す

Base UI の Select の癖を UI キット側で吸収しているのと同じ方針の一般化です。 診断が頻繁に鳴るパターンは、診断ではなく「そのまま書いても動く」ようにする候補と考えます。 エージェントが間違えた回数そのものを、フレームワークの改善指標として扱いたい。

vantage check --budget

バンドルサイズや初期描画の回帰でビルドを止める案。エージェントは重い依存を平気で追加します (Markdown レンダラを 1 つ足しただけで出力が 10 MB 以上増えることがあります)。人間なら気づく 違和感を、機械が読める閾値に落とします。

データの形から骨格を作る

API のレスポンスや SQL の結果を渡すと、その形に合った可視化の骨格を出す案 (時系列なら折れ線、カテゴリ × 数値なら表と KPI、など)。エージェントは毎回この判断を ゼロからやり直しているので、定石はフレームワークが持つべきだと考えています。

意図的にやらないこと

ロードマップに載らないことも同じくらい重要なので、現時点の方針を書いておきます。

  • 設定ファイルの導入vantage.config は作りません。設定を足したくなったら、それは 規約かフラグで解けないかをまず疑います。判断の余地はエージェントにとって負債です。
  • スタックの差し替えを可能にすること ― React・ルーター・データ層・UI キットは Vantage が固定します。差し替えを許した瞬間、ドキュメントも Skill も診断も「相手が何を 使っているか分からない」前提になり、上に挙げたアイデアはほぼ全部成立しなくなります。
  • QueryClient の丸ごと差し替え ― カスタマイズの手段はクエリ単位の上書きです (データ取得を参照)。
  • 汎用のアプリケーションフレームワーク化 ― Vantage はダッシュボードのための フレームワークです。用途を広げるより、ダッシュボードで踏む地雷を全部踏み抜いておくことに 投資します。

フィードバック

上のアイデアの優先順位は、実際に詰まった場所で決めたいと考えています。使っていて 「エージェントがここで必ず間違える」「これが分からず手が止まった」という箇所があれば、 ぜひ教えてください。

このページは役に立ちましたか?