Slide 1

Slide 1 text

TypeScriptの型はAIに届いている か? AIコーディングツール検証で見えた「届き方」の差 © 2026 UPSIDER.inc

Slide 2

Slide 2 text

自己紹介 中田 章太郎 (Shotaro Nakata) 株式会社UPSIDER Software Engineer 法人カードシステムをフルスタック TypeScript で開発 日常のAIツールは Claude Code / Codex © 2026 UPSIDER.inc

Slide 3

Slide 3 text

あなたが使っているAIに、 TypeScriptの型は どこまで届いていますか? © 2026 UPSIDER.inc

Slide 4

Slide 4 text

今日話すこと 1. 「届く」を 3レイヤーで見る 2. 各ツールはどう接続しているか —— 対比で見る 3. 「経路がある」と「効く」は別 4. 実務で、型をAIにどう届けるか 対象: Claude Code / Codex / Cursor / GitHub Copilot / Gemini CLI(2026-05-16 観測時点) © 2026 UPSIDER.inc

Slide 5

Slide 5 text

「届く」を3レイヤーに整理 Text — ソースに書かれた型(型注釈・シグネチャ・JSDoc) Diagnostics — tsc / lint のエラー・警告 Semantics — hover の推論型 / 定義ジャンプ / 参照 / 呼び出し階層 LSP が代表的な経路 → 「型が届く」は Yes/No ではなく「どのレイヤーまで」 © 2026 UPSIDER.inc

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

各ツールは、どこにどう接続しているか ツール 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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

届かない側: Codex 事実 Codex CLI は shell + grep を中心に動く 少なくとも公開されている範囲では、Semantics 系ツールはない 現状の Codex CLI からは、LSP ベースの経路は確認できない © 2026 UPSIDER.inc

Slide 10

Slide 10 text

届かない側: 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

Slide 11

Slide 11 text

届かない側: Codex 私の見立て OpenAI の中の人の発言 + Codex が実装上 LSP を採らない事実 を合わせて読 むと、 今の Codex は「LSP には乗らない」という設計判断で動いている。 Text + Diagnostics + シェル操作 で押し切る方向にベットしている — というのが私の 解釈 © 2026 UPSIDER.inc

Slide 12

Slide 12 text

経路がある ≠ モデルが使う 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

Slide 13

Slide 13 text

使う ≠ いつでも効く 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

Slide 14

Slide 14 text

でも 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

Slide 15

Slide 15 text

型をどう届かせるか Semantics だけに頼らず、Text と設定でも届き方を整える コード側: 公開APIの戻り値型を明示 / 型に名前を付ける / as ・any を減らす 設定: 「常にLSP優先」ではなく「タスクで使い分け」と書く。足りなければ Serena 等で外付け → 見るべきは対応の有無ではなく、型を AI にどう届かせるか © 2026 UPSIDER.inc

Slide 16

Slide 16 text

結論 TypeScriptの型はAIに届く ただし、大事なのは 届くか ではなく どう届くか です 単純な探索では、grep + Diagnostics で十分なことがある call hierarchy / rename / 曖昧名の追跡 では、Semantics の価値が大きい 実務で見るべきなのは、LSP 対応の有無 ではなく タスクに応じた届け方を持てるか © 2026 UPSIDER.inc

Slide 17

Slide 17 text

TypeScript × AI に本気の会社です 金融インフラをフルスタック TypeScript で構築 ホワイエの UPSIDER ブースで アップルサイダー 配ってます © 2026 UPSIDER.inc

Slide 18

Slide 18 text

We are hiring ! UPSIDERでは一緒に働く仲間を募集しています © 2026 UPSIDER.inc

Slide 19

Slide 19 text

観測条件 調査時点: 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

Slide 20

Slide 20 text

主な一次資料 論点 出典 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

Slide 21

Slide 21 text

実験の詳細はこちら gist.github.com/sh0o0/bdd9d0c 155 セッションの生データ・集計・CLAUDE.md 全文・再現コマンドを公開中。 © 2026 UPSIDER.inc