VS Code における AI 拡張性
この記事では、Visual Studio Code における AI 拡張オプションの概要を説明し、拡張機能に最適なアプローチを選択する手助けをします。
VS Code には、コーディング体験を向上させる強力な AI 機能が組み込まれています。
- コード補完: 入力中にインラインでコードの提案を行います
- エージェントモード: AI が専用ツールを使用して、開発タスクを自律的に計画・実行できるようにします
- チャット: 開発者がチャットインターフェースを通じて自然言語で質問したり、コードベースの編集を依頼したりできるようにします
- スマートアクション: エディター全体に統合された、AI 強化による一般的な開発タスク向けアクションを提供します
これらの組み込み機能を拡張・カスタマイズすることで、ユーザーの特定のニーズに合わせた AI 体験を作成できます。
なぜ VS Code で AI を拡張するのか?
拡張機能に AI 機能を組み込むことで、ユーザーに次のようなメリットがもたらされます。
- エージェントモードにおけるドメイン固有の知識: エージェントモードから、自社のデータソースやサービスへアクセス可能にします
- 優れたユーザーエクスペリエンス: 拡張機能の専門分野に合わせて調整されたインテリジェントな支援を提供します
- ドメイン特化: 特定のプログラミング言語、フレームワーク、またはドメインに特化した AI 機能を作成します
- チャット機能の拡張: チャットインターフェースに特殊なツールやアシスタントを追加し、より強力なインタラクションを実現します
- 開発者生産性の向上: デバッグ、コードレビュー、テストなどの一般的な開発タスクを AI 機能で強化します
チャット体験の拡張
Language Model Tool
Language Model Tool (言語モデルツール) を使用すると、VS Code のエージェントモードをドメイン固有の機能で拡張できます。エージェントモードでは、これらのツールはユーザーのチャットプロンプトに基づいて自動的に呼び出され、専門的なタスクの実行やデータソース・サービスからの情報取得を行います。また、ユーザーはプロンプト内で # を使用してツールを指定することで、明示的に呼び出すことも可能です。
Language Model Tool を実装するには、VS Code 拡張機能内で Language Model Tools API を使用します。Language Model Tool は、すべての VS Code 拡張機能 API にアクセスでき、エディターとの深い統合を提供します。
主なメリット:
- 自律的なコーディングワークフローの一部として、ドメイン固有の機能を利用可能
- 拡張機能ホストプロセスで実行されるため、ツール実装で VS Code API を利用可能
- Visual Studio Marketplace を通じた容易な配布とデプロイ
主な考慮事項:
- リモートデプロイには、クライアント・サーバー間の通信実装が必要
- 異なるツール間での再利用には、モジュール化された設計と実装が必要
MCP Tool
Model Context Protocol (MCP) Tool は、標準化されたプロトコルを使用して外部サービスと言語モデルを統合する方法を提供します。エージェントモードでは、これらのツールはユーザーのチャットプロンプトに基づいて自動的に呼び出され、専門的なタスクの実行や外部データソースからの情報取得を行います。
MCP Tool は VS Code の外部(ローカルマシン上、またはリモートサービスとして)で実行されます。ユーザーは JSON 設定を通じて MCP Tool を追加でき、VS Code 拡張機能からプログラムで設定することも可能です。さまざまな言語 SDK やデプロイオプションを使用して MCP Tool を実装できます。
MCP Tool は VS Code の外部で実行されるため、VS Code 拡張機能 API にはアクセスできません。
主なメリット:
- 自律的なコーディングワークフローの一部としてドメイン固有の機能を追加
- ローカルおよびリモートのデプロイオプション
- 他の MCP クライアント間での MCP サーバーの再利用
主な考慮事項:
- VS Code 拡張機能 API へのアクセス不可
- 配布とデプロイには、ユーザーによる MCP サーバーのセットアップが必要
チャット参加者
チャット参加者 (Chat Participants) は、ユーザーが Ask モードをドメイン専門家で拡張できるようにする特殊なアシスタントです。チャットにおいて、ユーザーは @ を使用して参加者を指定し、特定のトピックやドメインに関する自然言語のプロンプトを渡すことができます。チャット参加者は、そのチャットインタラクション全体を処理する役割を担います。
チャット参加者を実装するには、VS Code 拡張機能内で Chat API を使用します。チャット参加者は、すべての VS Code 拡張機能 API にアクセスでき、エディターとの深い統合を提供します。
主なメリット:
- エンドツーエンドのインタラクションフローを制御
- 拡張機能ホストプロセスで実行されるため、VS Code 拡張機能 API にアクセス可能
- Visual Studio Marketplace を通じた容易な配布とデプロイ
主な考慮事項:
- リモートデプロイには、クライアント・サーバー間の通信実装が必要
- 異なるツール間での再利用には、モジュール化された設計と実装が必要
独自の AI 駆動型機能を構築
VS Code では、AI モデルへの直接的なプログラムアクセスが可能であり、拡張機能で独自の AI 駆動型機能を作成できます。このアプローチにより、チャットインターフェースに依存せず、AI 機能を活用したエディター固有のインタラクションを構築できます。
言語モデルを直接使用するには、VS Code 拡張機能内で Language Model API を使用します。これらの AI 機能は、コードアクション、ホバープロバイダー、カスタムビューなど、拡張機能のあらゆる機能に組み込むことができます。
主なメリット:
- 既存の拡張機能に AI 機能を統合、または新しい機能を構築
- 拡張機能ホストプロセスで実行されるため、VS Code 拡張機能 API にアクセス可能
- Visual Studio Marketplace を通じた容易な配布とデプロイ
主な考慮事項:
- 異なるエクスペリエンス間での再利用には、モジュール化された設計と実装が必要
どのオプションを使用するかを決定する
VS Code 拡張機能で AI を拡張する際のアプローチを選択する際は、以下のガイドラインを考慮してください。
-
Language Model Tool を選択すべき場合:
- VS Code のチャットを特殊な機能で拡張したい場合
- エージェントモードにおいて、ユーザーの意図に基づいて自動的に呼び出したい場合
- VS Code との深い統合のために VS Code API にアクセスしたい場合
- VS Code Marketplace を通じてツールを配布したい場合
-
MCP Tool を選択すべき場合:
- VS Code のチャットを特殊な機能で拡張したい場合
- エージェントモードにおいて、ユーザーの意図に基づいて自動的に呼び出したい場合
- VS Code API との統合が不要な場合
- ツールが異なる環境(VS Code 以外も含む)で動作する必要がある場合
- ツールをリモートまたはローカルで実行したい場合
-
チャット参加者を選択すべき場合:
- 専門知識を持つ特化型アシスタントで Ask モードを拡張したい場合
- インタラクションフロー全体と応答動作をカスタマイズする必要がある場合
- VS Code との深い統合のために VS Code API にアクセスしたい場合
- VS Code Marketplace を通じてツールを配布したい場合
-
Language Model API を選択すべき場合:
- 既存の拡張機能の機能に AI 機能を統合したい場合
- チャットインターフェース以外の UI エクスペリエンスを構築している場合
- AI モデルへのリクエストをプログラムから直接制御する必要がある場合
次のステップ
拡張機能の目標に最も適したアプローチを選択してください。
- Language Model Tool を実装する
- VS Code 拡張機能に MCP Tool を登録する
- Language Model API を使用して拡張機能に AI を統合する
- チャット参加者を実装する
- Inline Completions API でコード補完を拡張する
サンプルプロジェクト
- Chat サンプル: エージェントモードツールとチャット参加者を含む拡張機能
- Code tutor チャット参加者チュートリアル: 特化型チャットアシスタントの構築
- AI 駆動型コード注釈チュートリアル: Language Model API を使用するためのステップバイステップガイド
- MCP 拡張機能サンプル: MCP Tool を登録する拡張機能