Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TypeScriptの型はAIに届いている か?_shotaro

TypeScriptの型はAIに届いている か?_shotaro

TSKaigi2026にてShotaroさんが登壇する資料です。
https://2026.tskaigi.org/talks/24

More Decks by UPSIDER, Inc. Tech&Product div.

Transcript

  1. 今日話すこと 1. 「届く」を 3レイヤーで見る 2. 各ツールはどう接続しているか —— 対比で見る 3. 「経路がある」と「効く」は別

    4. 実務で、型をAIにどう届けるか 対象: Claude Code / Codex / Cursor / GitHub Copilot / Gemini CLI(2026-05-16 観測時点) © 2026 UPSIDER.inc
  2. 「届く」を3レイヤーに整理 Text — ソースに書かれた型(型注釈・シグネチャ・JSDoc) Diagnostics — tsc / lint のエラー・警告

    Semantics — hover の推論型 / 定義ジャンプ / 参照 / 呼び出し階層 LSP が代表的な経路 → 「型が届く」は Yes/No ではなく「どのレイヤーまで」 © 2026 UPSIDER.inc
  3. Textだけでは見えない型情報 export function buildConfig(env: Env) { return { ...defaults, ...env.overrides,

    resolvedAt: Date.now() }; } // hover → { apiUrl: string; retries: number; resolvedAt: number } → 推論された型は、hover のような Semantics 経由で初めて見える → TypeScript は「ソースに書いてあること」と「型システムが知っていること」がズレ やすい © 2026 UPSIDER.inc
  4. 各ツールは、どこにどう接続しているか ツール Semantics への経路 主な手段 Claude Code ◯ goToDefinition /findReferences

    /hover 等を実装・公開済み GitHub Copilot ◯ goToDefinition /findReferences /hover 等を実装・公開済み Codex CLI ✗ shell + grep 。Semantics 系ツールはなし Cursor ✗ grep + embedding search Gemini CLI ✗ native未実装 → Text と Diagnostics はどこもだいたい届く。差が出るのは Semantics への接続 © 2026 UPSIDER.inc
  5. 届く側: Claude Code / Copilot 事実 Claude Code と Copilot

    CLI は、ともに goToDefinition / findReferences / hover / documentSymbol などの LSP 系操作をツールとしてモデルに公開している どちらも、AI に Semantics へ届く経路を渡している 私の見立て → 少なくともこの2者は、Semantics への接続に価値がある前提で設計している © 2026 UPSIDER.inc
  6. 届かない側: Codex 事実 Codex CLI は shell + grep を中心に動く

    少なくとも公開されている範囲では、Semantics 系ツールはない 現状の Codex CLI からは、LSP ベースの経路は確認できない © 2026 UPSIDER.inc
  7. 届かない側: Codex 事実 LSP統合を求める Issue #8745 に対し、Pyright 作者 Eric Traut(現

    OpenAI) がコメント: "the language server protocol was not designed for coding agents." "We've experimented with the idea, and it hasn't provided the benefits that I initially thought it might." → ① エージェント向けに設計されてない ② 試したが期待ほどの効果は出ず © 2026 UPSIDER.inc
  8. 届かない側: Codex 私の見立て OpenAI の中の人の発言 + Codex が実装上 LSP を採らない事実

    を合わせて読 むと、 今の Codex は「LSP には乗らない」という設計判断で動いている。 Text + Diagnostics + シェル操作 で押し切る方向にベットしている — というのが私の 解釈 © 2026 UPSIDER.inc
  9. 経路がある ≠ モデルが使う VS Code 公式リリースノート: agent は grep を好む

    自前実験 (Claude Code, 5タスク × N=10 = 50 session): 指示なし → 0/50 で LSP を一度も呼ばず CLAUDE.md に「LSP優先」と書いても、タスク次第で grep を選ぶ → 「機能がある」と「モデルが実際に呼ぶ」の間に、運用指示の段差がある 実験条件: claude-opus-4-7 (1M context) / プロンプトキャッシュ有効 / コストは API 換算値 © 2026 UPSIDER.inc
  10. 使う ≠ いつでも効く HTTPException のような ユニーク識別子の参照タスク (N=10): 手段 時間 コスト

    正解度 grep 直行 7.5s $0.05 1.00 LSP 優先 15.6s $0.12 0.99 → クラス名で十分に追える探索では、LSP の前準備コストが乗って逆効果 補足: LSPRAG (2025) / RLCSF (2025) も同様の指摘 © 2026 UPSIDER.inc
  11. でも LSP が刺さる場面はある 共通名クラス Context の参照を全部出すタスク (N=10): 手段 時間 コスト

    正解度 grep で頑張る 148s $0.78 0.985 LSP findReferences 72s $0.41 0.998 grep は JSX 用法など別物の Context が混入 → 手作業で除外を繰り返して到達 LSP は型でつながる参照だけを 一発で返す → 名前衝突しうるシンボルでは、LSP の 省力性 がはっきり出る © 2026 UPSIDER.inc
  12. 型をどう届かせるか Semantics だけに頼らず、Text と設定でも届き方を整える コード側: 公開APIの戻り値型を明示 / 型に名前を付ける / as

    ・any を減らす 設定: 「常にLSP優先」ではなく「タスクで使い分け」と書く。足りなければ Serena 等で外付け → 見るべきは対応の有無ではなく、型を AI にどう届かせるか © 2026 UPSIDER.inc
  13. 結論 TypeScriptの型はAIに届く ただし、大事なのは 届くか ではなく どう届くか です 単純な探索では、grep + Diagnostics

    で十分なことがある call hierarchy / rename / 曖昧名の追跡 では、Semantics の価値が大きい 実務で見るべきなのは、LSP 対応の有無 ではなく タスクに応じた届け方を持てるか © 2026 UPSIDER.inc
  14. 観測条件 調査時点: 2026-05-16 ツール バージョン 主な確認手段 Claude Code v2.1.143 実機

    + changelog / Issue Codex CLI v0.130.0 実機 + Issue Cursor v3.3 changelog + docs / forum GitHub Copilot CLI v1.0.48 releases + docs / release notes Gemini CLI v0.42.0 releases + Issue / docs 正解度 = precision (誤検出の少なさ) と recall (取りこぼしの少なさ) の調和平均(F1) 。0〜1 で、1 が最高。 © 2026 UPSIDER.inc
  15. 主な一次資料 論点 出典 Codex の LSP 非採用 / Eric Traut

    コメント openai/codex Issue #8745 Copilot agent が grep を好む VS Code v1.110 release notes Copilot CLI の LSP 操作 GitHub Docs: Using LSP servers with GitHub Copilot CLI Cursor agent tools Cursor Docs: Semantic & Agentic Search Cursor CLI は grep-like + embeddings Cursor Forum #156751 Gemini CLI の LSP 要望 Issue #2465, Issue #6690 静的型言語ほど LSP の効果が強い LSPRAG (2025) raw LSP は agent 向けに脆い RLCSF (2025) © 2026 UPSIDER.inc