2025 年 5 月 (バージョン 1.101)¶
リリース日: 2025 年 6 月 12 日
Visual Studio Code の 2025 年 5 月リリースへようこそ。このバージョンには多くの更新プログラムが含まれており、気に入っていただけることを願っています。主なハイライトは次のとおりです:
- MCP
- チャット
- ツールセットにツールを組み合わせることで、関連ツールをグループ化して管理します (詳細)。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の Updates にアクセスしてください。 Insiders: 新機能をできるだけ早く試したいですか? 夜間の Insiders ビルドをダウンロードして、利用可能になり次第、最新の更新プログラムを試すことができます。
チャット¶
チャットツールセット¶
VS Code では、提案された API または UI を介してツールセットを定義できるようになりました。ツールセットは、個々のツールと同じように使用できるさまざまなツールのコレクションです。ツールセットを使用すると、関連するツールを簡単にグループ化し、エージェントモードですばやく有効または無効にすることができます。たとえば、以下のツールセットは GitHub 通知を管理するためのものです (GitHub MCP サーバー を使用)。
{
"gh-news": {
"tools": [
"list_notifications",
"dismiss_notification",
"get_notification_details",
],
"description": "GH 通知を管理",
"icon": "github-project"
}
}
ツールセットを作成するには、コマンドパレットから Configure Tool Sets > Create new tool sets file コマンドを実行します。次に、ツールセットに含めるツールを選択し、説明とアイコンを指定できます。
チャットクエリでツールセットを使用するには、#gh-news
のように名前を #-メンションして参照します。チャット入力ボックスのツールピッカーから選択することもできます。
ドキュメントで ツールセット の詳細をご覧ください。
プロンプトの MCP サポート¶
VS Code のモデルコンテキストプロトコルサポートにプロンプトサポートが含まれるようになりました。プロンプトは MCP サーバーによって定義でき、言語モデル用の再利用可能なスニペットやタスクを生成できます。プロンプトは、チャットでスラッシュ /
コマンドとして /mcp.servername.promptname
の形式でアクセスできます。プレーンテキストを入力したり、プロンプト変数にコマンド出力を含めたりすることができ、サーバーが提供する場合は補完もサポートします。
次の例は、AI を使用してプロンプトを生成し、Gistpad MCP サーバー を使用して保存し、それを使用して変更ログエントリを生成する方法を示しています:
リソースの MCP サポート¶
VS Code のモデルコンテキストプロトコルサポートにリソースサポートが含まれるようになりました。これにはリソーステンプレートのサポートも含まれます。いくつかの場所で利用できます:
- MCP ツール呼び出しから返されたリソースはモデルで利用でき、保存 ボタンを使用するか、リソースをエクスプローラービューにドラッグすることでチャットに保存できます。
- リソースは、チャットの コンテキストを追加... ボタンをクリックし、MCP リソース... を選択することでコンテキストとして添付できます。
- MCP: リソースの参照 コマンドを使用するか、MCP: サーバーの一覧表示 コマンドのエントリからサーバーを選択することで、サーバー間でリソースを参照および表示できます。
これは、Gistpad MCP サーバー からチャットにリソースを添付する例です:
サンプリングの MCP サポート (実験的)¶
VS Code のモデルコンテキストプロトコルサポートにサンプリングが含まれるようになりました。これにより、MCP サーバーはモデルにリクエストを返すことができます。MCP サーバーが初めてサンプリングリクエストを行う際に確認を求められ、MCP: サーバーの一覧表示 でサーバーを選択することで、MCP サーバーがアクセスできるモデルを設定したり、リクエストログを確認したりできます。
サンプリングサポートはまだ準備段階であり、今後のイテレーションで拡張および改善する予定です。
認証の MCP サポート¶
VS Code は認証が必要な MCP サーバーをサポートするようになり、そのサービスのユーザーアカウントに代わって動作する MCP サーバーと対話できるようになりました。
この機能は、クライアント向けの MCP 認証仕様を実装しており、次の両方をサポートしています:
- 2025-3-26 仕様。MCP サーバーは認証サーバーとして動作します。
- ドラフト仕様。MCP サーバーはリソースサーバーとして動作します (これは間もなく最終決定される予定です)。
MCP サーバーがドラフト仕様を実装し、GitHub または Entra を認証サーバーとして利用している場合、どのアカウントにどの MCP サーバーがアクセスできるかを管理できます:
また、そのサーバーがどのアカウントを使用するかを管理することもできます (前のクイックピックの歯車ボタン経由):
動的クライアント登録に依存する他の MCP サーバーについては、認証状態を他のすべてと同じ場所に含めます。たとえば Linear の場合:
そこからサインアウトすることもできます。これらについては、コード認証フローだけでなく、認証サーバーがサポートしていればデバイスコードフローもサポートします。
また、これらの動的クライアント登録をクリーンアップできる Authentication: Remove Dynamic Authentication Providers
コマンドも導入しました。これにより、VS Code に発行されたクライアント ID と、この認証プロバイダーに関連付けられたすべてのデータが破棄されます。
MCP: サーバーの追加... コマンドを使用して MCP サーバーを追加できることを覚えておいてください。これは認証付きサーバーの同じエントリポイントです。
MCP 開発モード¶
サーバー設定に dev
キーを追加することで、MCP サーバーの 開発モード を有効にできます。これは 2 つのプロパティを持つオブジェクトです:
watch
: MCP サーバーを再起動するファイル変更を監視するファイル glob パターン。debug
: MCP サーバーでデバッガーを設定できます。現在、node
とpython
でそれぞれ起動された Node.js と Python サーバーのデバッグのみをサポートしています。
.vscode/mcp.json
{
"servers": {
"gistpad": {
"command": "node",
"args": ["build/index.js"],
+ "dev": {
+ "watch": "build/**/*.js",
+ "debug": { "type": "node" }
+ },
チャット UX の改善¶
私たちは、皆様からのフィードバックに基づいて VS Code のチャットユーザーエクスペリエンスを継続的に改善しています。そのようなフィードバックの 1 つは、チャットでユーザーメッセージと AI 応答を区別するのが難しいということでした。これに対処するために、ユーザーメッセージの外観をより明確にしました。
以前のリクエストの取り消しもより見やすくなりました。リクエストにカーソルを合わせ、X
ボタンを選択してそのリクエストとそれに続くリクエストを取り消します。または、さらに速く、kb(workbench.action.chat.undoEdits)
キーボードショートカットを使用してください!
最後に、チャット入力ボックスからの添付ファイルがよりナビゲートしやすくなりました。
ドキュメントで VS Code でのチャットの使用 の詳細をご覧ください。
編集をより効率的に適用する¶
ファイルを編集する際、VS Code は 2 つの異なるアプローチを取ることができます。ファイルを最初から最後まで書き換えるか、複数の小さな編集を行うかです。どちらのアプローチも異なり、たとえば前者は大きなファイルでは遅くなる可能性があり、中間状態はしばしば正常にコンパイルされません。そのため、UI は適応し、必要に応じて自動保存と波線を条件付きで無効にします。
また、保持 と 元に戻す コマンドのキーバインドも調整しました。個々の変更の保持と元に戻す操作は、kb(chatEditor.action.acceptHunk)
と kb(chatEditor.action.undoHunk)
で行われるようになりました。同様に、ファイル内のすべての変更を保持および元に戻すためのキーバインドも調整し、現在は kb(chatEditor.action.accept)
と kb(chatEditor.action.reject)
になっています。これは調整のためだけでなく、一般的な編集コマンド ( 左側をすべて削除 など) との以前の競合も解消します。
暗黙的なコンテキスト¶
チャットで現在のファイルをコンテキストとして追加する方法を合理化し、簡素化しました。以前の「目玉トグル」は少し扱いにくいと感じる人が多くいました。現在、現在のファイルは提案されたコンテキストアイテムとして提供されます。アイテムを選択するだけで、チャットコンテキストに追加したり削除したりできます。プロンプト入力フィールドから、Shift+Tab, Enter
を押すと、キーボードですばやくこれを行うことができます。
さらに、エージェントモードでは、現在のエディターに関するヒントが含まれます。これにはファイルの内容は含まれず、ファイル名とカーソル位置のみが含まれます。エージェントは、クエリに関連性があると考えた場合、独自のツールを使用してファイルの内容を読み取ることができます。
ドキュメントで チャットでのコンテキストの追加 の詳細をご覧ください。
タスク設定エラーの修正¶
タスクと問題マッチャーの設定は難しい場合があります。タスク設定にエラーがある場合に提供される Github Copilot で修正 アクションを使用して、迅速かつ効率的に対処してください。
カスタムチャットモード (プレビュー)¶
デフォルトでは、チャットビューは 3 つの組み込みチャットモード (Ask、Edit、Agent) をサポートしています。各チャットモードには、LLM がリクエストをどのように処理すべきかを説明する一連の基本命令と、そのために使用できるツールのリストが付属しています。
チャットビューで使用できる独自のカスタムチャットモードを定義できるようになりました。カスタムチャットモードを使用すると、チャットの動作を調整し、そのモードで使用できるツールを指定できます。これは、特殊なワークフローや LLM に特定の指示を提供したい場合に特に便利です。たとえば、新しい機能を計画するためのカスタムチャットモードを作成できます。このモードでは、コードベースへの読み取り専用アクセスのみが許可されます。
カスタムチャットモードを定義して使用するには、次の手順に従います:
- コマンドパレットから Chat: Configure Chat Modes コマンドを使用してカスタムモードを定義します。
- 作成された
*.chatprompt.md
ファイルで、カスタムチャットモードの指示と利用可能なツールを提供します。 - チャットビューで、チャットモードのドロップダウンリストからチャットモードを選択します。
- チャットプロンプトを送信し、
次の例は、カスタムの「計画」チャットモードを示しています:
---
description: 新機能の実装計画または既存コードのリファクタリング計画を生成します。
tools: ['codebase', 'fetch', 'findTestFiles', 'githubRepo', 'search', 'usages']
---
# 計画モードの指示
あなたは計画モードです。あなたのタスクは、新機能または既存コードのリファクタリングのための実装計画を生成することです。
コード編集は行わず、計画のみを生成してください。
計画は、次のセクションを含む実装計画を記述した Markdown ドキュメントで構成されます:
* 概要: 機能またはリファクタリングタスクの簡単な説明。
* 要件: 機能またはリファクタリングタスクの要件のリスト。
* 実装手順: 機能またはリファクタリングタスクを実装するための詳細な手順のリスト。
* テスト: 機能またはリファクタリングタスクを検証するために実装する必要があるテストのリスト。
注: この機能は開発中ですが、ぜひお試しください! VS Code Insiders での最新の進捗状況をフォローし、動作しない点や不足している点をお知らせください。
タスク診断の認識¶
チャットエージェントがタスクを実行すると、問題マッチャーによって特定されたエラーや警告を認識するようになりました。この診断コンテキストにより、チャットエージェントは発生した問題に対してよりインテリジェントに応答できます。
ターミナルの cwd コンテキスト¶
エージェントモードでターミナルが開き、シェル統合がアクティブな場合、チャットエージェントは現在の作業ディレクトリ (cwd) を認識します。これにより、より正確でコンテキストを意識したコマンドサポートが可能になります。
フローティングウィンドウの改善¶
チャットセッションをフローティングウィンドウに移動すると、タイトルバーに 2 つの新しいアクションが利用可能になります:
- チャットを元の VS Code ウィンドウにドッキングする
- フローティングウィンドウで新しいチャットセッションを開始する。
フェッチツールの確認¶
フェッチツールを使用すると、Web ページから情報を取得できます。潜在的なプロンプトインジェクションについて通知するために、確認に警告メッセージを追加しました。
より多くの組み込みツールをカスタマイズする¶
エージェントモードまたはカスタムモードですべての組み込みツールを有効または無効にできるようになりました。たとえば、editFiles
を無効にしてエージェントモードがファイルを直接編集できないようにしたり、ターミナルコマンドを実行するための runCommands
を無効にしたりできます。
エージェントモードで、ツールの設定 ボタンを選択してツールピッカーを開き、目的のツールセットを選択します。
このメニューの一部のエントリは、複数のツールをグループ化するツールセットを表します。たとえば、モデルにはテキストファイルやノートブックを編集または作成するための複数のツールが提供され、これらはモデルファミリーによって異なる場合があり、editFiles
はこれらすべてをグループ化します。
要素をチャットに送信 (実験的)¶
前回のマイルストーンでは、シンプルブラウザーを開き、埋め込みブラウザーからチャットに追加する Web 要素を選択できる 新しい実験的機能 を追加しました。
この機能の改善を続ける中で、Live Preview 拡張機能 でも Web 要素を選択できるようになりました。拡張機能をダウンロードし、任意の HTML ファイルからライブサーバーを起動して、これを確認してください。
アクセシビリティ¶
ユーザー操作が必要な場合のサウンド¶
チャットでユーザー操作が必要な場合に通知するアクセシビリティシグナルを追加しました。サウンドを微調整しているため、これはオプトインです。この動作は setting(accessibility.signals.chatUserActionRequired)
で設定できます。
新しいコードアクションサウンド¶
次のための個別のサウンドを導入しました:
- コードアクションがトリガーされたとき:
setting(accessibility.signals.codeActionTriggered)
- コードアクションが適用されたとき:
setting(accessibility.signals.codeActionApplied)
エージェントモードのアクセシビリティ改善¶
アクセス可能なビューに確認ダイアログに関する豊富な情報が含まれるようになり、過去のツール実行、現在のツール実行、および保留中の確認を網羅します。これには、使用される入力も含まれます。
応答に確認ダイアログが表示されると、対応するコードブロックの ARIA ラベル、応答の ARIA ラベル、およびライブアラートにアクションのタイトルが含まれるようになり、スクリーンリーダーユーザーにより良いコンテキストを提供します。
エディターエクスペリエンス¶
入力時に検索¶
設定: setting(editor.find.findOnType:true)
入力時検索は検索コントロールのデフォルトの動作でしたが、これを維持するか、Enter キーを押した後にのみ検索を実行するように無効にするかを制御できるようになりました。
ネイティブウィンドウタイトルバーでのカスタムメニュー¶
設定: setting(window.menuStyle)
Windows と Linux のメニューバーとコンテキストメニュー、および macOS のコンテキストメニューに使用されるメニュースタイルを setting(window.menuStyle)
設定を使用して指定できるようになりました:
native
: OS によってレンダリングされますcustom
: VS Code によってレンダリングされますinherit
:setting(window.titleBarStyle)
によって設定されたタイトルバーのスタイルに一致します (ネイティブのタイトルバーとカスタムのメニューバーおよびコンテキストメニューを使用できます)。
Linux ネイティブウィンドウコンテキストメニュー¶
カスタムタイトルバーのアプリケーションアイコンを右クリックしたときに、ネイティブウィンドウコンテキストメニューをサポートするようになりました。
プロセスエクスプローラーの Web サポート¶
プロセスエクスプローラーは、エディターウィンドウ用にワークベンチにあるフローティングウィンドウインフラストラクチャを使用するように変換されました。その結果、リモートに接続されている場合 (たとえば Codespaces で)、Web でプロセスエクスプローラーをサポートするようになりました。
Windows シェル環境の検出¶
Windows 上の PowerShell のシェル環境検出を実装しました。これにより、VS Code は PowerShell プロファイルで設定された環境 (Node.js がさまざまなバージョンマネージャーを介して設定する PATH 更新など) を継承します。
未公開の拡張機能の警告¶
インストール済みの拡張機能が Marketplace で利用できなくなった場合、警告インジケーターが表示されるようになり、未公開または削除された可能性のある問題のある拡張機能を特定するのに役立ちます。
設定検索の提案 (プレビュー)¶
設定: setting(workbench.settings.showAISearchToggle:true)
このマイルストーンでは、設定エディターにトグルを追加しました。これにより、文字列一致に基づく結果ではなく、意味的に類似した結果を見つけるための AI 検索が開始されます。たとえば、「テキストサイズを大きくする」と検索すると、AI 検索は editor.fontSize
設定を見つけます。
トグルを表示するには、設定を有効にして VS Code をリロードします。また、精度の低い設定検索結果の一部を特定して修正するプロセスを進めており、自然言語クエリで期待される設定が見つからなかった場合のフィードバックを歓迎します。
次のマイルストーンでは、トグルを削除し、実験的な設定を、低速な AI 検索結果をリストの末尾に直接追加するタイミングを制御するものに変更することも検討しています。
検索キーワードの提案 (プレビュー)¶
設定: setting(search.searchView.keywordSuggestions)
前回のマイルストーンでは、検索ビューに キーワード提案 を導入し、関連性の高い結果をより速く見つけられるようにしました。提案のパフォーマンスを大幅に改善したため、結果が以前より約 5 倍速く表示されるようになります。
また、設定をチャット拡張機能から VS Code コアに移動し、名前を github.copilot.chat.search.keywordSuggestions
から setting(search.searchView.keywordSuggestions)
に変更しました。
セマンティック検索の動作オプション (プレビュー)¶
設定: setting(search.searchView.semanticSearchBehavior)
検索ビューのセマンティック検索を使用すると、テキストの一致だけでなく、クエリの意味に基づいて結果を取得できます。これは、検索する正確な用語がわからない場合に特に便利です。
デフォルトでは、セマンティック検索は明示的に要求された場合にのみ実行されます。セマンティック検索をトリガーするタイミングを制御する設定を追加しました:
manual
(デフォルト): UI から手動でトリガーされた場合にのみセマンティック検索を実行します (kb(search.action.searchWithAI)
)runOnEmpty
: テキスト検索で結果が返されなかった場合に自動的にセマンティック検索を実行しますauto
: すべての検索クエリに対してテキスト検索と並行して常にセマンティック検索を実行します
編集コンテキスト¶
設定: setting(editor.experimentalEditContextEnabled)
Stable で setting(editor.experimentalEditContextEnabled)
設定をデフォルトで有効にしました。これは、エディターの入力が EditContext API によって提供されるようになったことを意味します。これにより、特に IME エクスペリエンスに関連する多数のバグが修正され、将来的にはエディター内でより多用途で堅牢な入力エクスペリエンスへの道が開かれます。
EditContext API の詳細については、MDN ドキュメント を参照してください。
コード編集¶
NES インポートの提案¶
設定: setting(github.copilot.nextEditSuggestions.fixes)
先月、TypeScript と JavaScript の欠落しているインポートステートメントの追加を自動的に提案する、次の編集提案のサポートを導入しました。このリリースでは、これらの提案の精度と信頼性を向上させ、Python ファイルにもサポートを拡張しました。
NES はすべての VS Code Insiders ユーザーに対して有効になっており、6 月中に Stable ユーザーに対して段階的にデフォルトで有効になります。いつでも設定から NES を自分で有効にできます。
NES 受け入れフロー¶
次の編集提案の受け入れが、キーボードナビゲーションの改善により、よりシームレスになりました。提案を受け入れると、再度入力を開始するまでは、単一の kbstyle(Tab)
キーを押すだけで後続の提案を引き続き受け入れることができます。入力を開始すると、kbstyle(Tab)
を押してまずカーソルを次の提案に移動してから受け入れることができます。
ノートブック¶
エージェントセル実行のフォローモード¶
設定: setting(github.copilot.chat.notebook.followCellExecution.enabled)
フォローモードでは、ノートブックビューはエージェントによって現在実行されているセルに自動的にスクロールします。Jupyter Notebooks でのエージェントセル実行のフォローモードを有効または無効にするには、setting(github.copilot.chat.notebook.followCellExecution.enabled)
設定を使用します。
エージェントがセル実行ツールを使用すると、ノートブックツールバーがピンアイコンで更新され、フォローモードの状態が示されます。基本設定値を変更せずにエージェントの応答の途中で動作を切り替えることができ、エージェントの作業をリアルタイムでフォローし、エージェントが反復を続けている間に特定のコード部分を確認したい場合はオフに切り替えることができます。再度フォローしたい場合は、モードを切り替えるだけで、次の実行時に参加できます。
エージェントモード用のノートブックツール¶
ノートブックの設定¶
Jupyter 拡張機能 は、Jupyter Notebook のカーネルを設定するためのツールを提供します。このツールは、カーネルが選択され、ノートブックで使用できる状態であることを保証します。これには、必要に応じて仮想環境を作成するプロセス (推奨されるアプローチ) を案内したり、既存の Python 環境を選択するように促したりすることが含まれます。
このツールにより、LLM は最小限のユーザー操作でセルの実行などの操作をノートブックで実行できるようになり、エージェントモードでの全体的なユーザーエクスペリエンスが向上します。
長時間実行されるエージェントワークフロー¶
エージェントは、正確なコンテキストで軌道に乗せるのに役立つ内部ノートブックサマリーツールにアクセスできます。そのサマリーは、コンテキストが大きくなりすぎてエージェントが複雑な操作を続行できなくなった場合に、会話履歴を要約する際にも含まれます。
実行確認でのセルプレビュー¶
エージェントがそのセルの実行確認を要求すると、ノートブックセルからコードのスニペットが表示されます。チャットビューのセルリンクにより、ノートブック内のセルに直接移動できるようになりました。
ソース管理¶
Copilot コーディングエージェントの統合¶
Copilot コーディングエージェントを使用すると、GitHub Copilot は人間の開発者のようにバックグラウンドで独立してタスクを完了できます。GitHub Pull Requests 拡張機能を拡張し、VS Code 内からエージェントのタスクを簡単に割り当てて追跡できるようにしました。
拡張機能に次の機能を追加しました:
- Copilot に割り当て: VS Code の issue または PR ビューからプルリクエストまたは issue を Copilot に割り当てます
- Copilot on My Behalf PR クエリ: Copilot があなたのために作業しているすべてのプルリクエストをすばやく確認できます。
- PR ビュー: Copilot コーディングエージェントのステータスを確認し、ブラウザーでセッションの詳細を開きます。
ソース管理履歴アイテムの詳細¶
多くのご要望にお応えして、ソース管理グラフビューでアイテムを選択すると、その履歴アイテムのリソースが表示されるようになりました。...
メニューからツリービューまたはリストビューの表現を選択できます。
履歴アイテムのすべてのリソースを複数ファイル差分エディターで開くには、ホバー時の 変更を開く アクションを使用します。グラフビューから特定のリソースを選択すると、そのリソースのみの差分エディターが開きます。特定のバージョンのファイルを開くには、ファイルを開く アクションを選択します。
履歴アイテムをチャットコンテキストに追加¶
ソース管理履歴アイテムをチャットリクエストのコンテキストとして追加できるようになりました。これは、特定のコミットまたはプルリクエストの内容をチャットプロンプトのコンテキストとして提供したい場合に便利です。
履歴アイテムをチャットに追加するには、チャットビューから コンテキストを追加 > ソース管理 を使用し、特定の履歴アイテムを選択します。または、ソース管理グラフで履歴アイテムを右クリックし、コンテキストメニューから Copilot > 履歴アイテムをチャットに追加 を選択します。
タスク¶
インスタンスポリシー¶
タスクの runOptions
に instancePolicy
プロパティが追加されました。これは、タスクが instanceLimit
に達したときに何が起こるかを決定します。
オプションには、prompt
(デフォルト)、silent
、terminateNewest
、terminateOldest
、warn
が含まれます。
ターミナル¶
言語サーバーベースのターミナル提案¶
対話型 Python REPL セッションのターミナルで言語サーバー補完が利用できるようになりました。これにより、エディターで受け取るのと同じ言語補完がターミナル内で利用できます。Pylance を介した Python のサポートから開始し、将来的にはより多くの言語に拡張する予定です。
試すには、次の設定が有効になっていることを確認してください:
setting(terminal.integrated.shellIntegration.enabled:true)
setting(python.terminal.shellIntegration.enabled:true)
setting(terminal.integrated.suggest.enabled:true)
setting(python.analysis.supportAllPythonDocuments:true)
リモート開発¶
リモート開発拡張機能 を使用すると、開発コンテナー、SSH または リモートトンネル を介したリモートマシン、または Linux 用 Windows サブシステム (WSL) をフル機能の開発環境として使用できます。
ハイライトは次のとおりです:
- SSH 事前接続スクリプト
- リモートエクスプローラーの改善
これらの機能の詳細については、リモート開発リリースノート を参照してください。
拡張機能への貢献¶
Python¶
Python チャットツール¶
Python 拡張機能 には、「Python 環境の情報を取得」、「Python 環境の実行可能情報を取得」、「Python パッケージのインストール」、「Python 環境の設定」というチャットツールが含まれるようになりました。プロンプトで #getPythonEnvironmentInfo
#installPythonPackage
を追加して直接参照するか、エージェントモードが該当するツールを自動的に呼び出します。これらのツールは、ファイルまたはワークスペースのコンテキストに基づいて適切な環境情報をシームレスに検出し、正確な環境解決でパッケージのインストールを処理します。
「Python 環境の設定」ツールは、Python 環境がワークスペースに対して正しく設定されていることを保証します。これには、必要に応じて仮想環境を作成し、それをワークスペースのアクティブな Python 環境として選択することが含まれます。
以前 Python Environments 拡張機能 (プレビュー) で導入されたツールは Python 拡張機能に移行され、これにより Python 拡張機能がインストールされているすべてのユーザーがこれらのツールを利用できるようになりました。
テンプレートからプロジェクトを作成¶
Python Environments 拡張機能 は、Python パッケージと基本スクリプトのプロジェクト作成をサポートするようになり、スキャフォールディングをバイパスしてより迅速にコーディングを開始できるようになりました。Python Envs: Create Project from Template コマンドを使用して、パッケージを作成するかスクリプトを作成するかを選択します。
パッケージ作成では、パッケージに名前を付け、仮想環境を作成し、テストサブフォルダー、pyproject.toml
、dev-requirements.txt
、および定型的な __main__.py
と __init__.py
ファイルを含むスキャフォールディングされたプロジェクトを受け取ることができます。
スクリプトの場合、選択した名前で新しい Python ファイルを作成し、定型的なコードを含めます。
PyEnv と Poetry のサポート¶
Python Environments 拡張機能に、環境管理用の pyenv
と、パッケージおよび環境管理用の poetry
のサポートを追加しました。
拡張機能のオーサリング¶
MCP 拡張機能 API¶
拡張機能は MCP サーバーのコレクションを公開できるようになりました。これにより、MCP サーバーを拡張機能にバンドルしたり、他のソースから MCP サーバーを動的に検出する拡張機能を構築したりできます。詳細については、MCP 拡張機能開発ガイド を参照するか、MCP 拡張機能サンプル を確認してください。
拡張機能パッケージ化時のシークレットスキャン¶
VSCE は、拡張機能をパッケージ化する際にシークレットをスキャンするようになりました。ソースファイルで潜在的なシークレット (API キー、トークン、資格情報、.env
などの環境変数ファイルなど) が検出された場合、VSCE はパッケージ化プロセス中にエラーを表示します。これにより、機密情報を誤って Marketplace に公開することを回避できます。拡張機能を公開する前に、エラーを確認して対処してください。
特定のチェックをバイパスする必要がある場合は、VSCE の実行時に --allow-package-secrets <secret_type>
または --allow-package-env-file
フラグを使用できます。これらのフラグを使用すると、パッケージ化中にスキップするシークレットまたは環境ファイルチェックを設定できます。
Web 環境の検出¶
⚠️ 破壊的変更 ⚠️
設定: setting(extensions.supportNodeGlobalNavigator)
Node.js 拡張機能ホストは、Electron 35 ランタイム更新 の一環として、v20 から v22 に更新されました。この更新により、デスクトップおよびリモート拡張機能ホストで navigator
グローバルオブジェクト がサポートされるようになります。
この変更は、Web 環境を検出するために navigator
オブジェクトの存在に依存する拡張機能にとって破壊的変更となる可能性があります。
拡張機能作成者の移行を支援するために、undefined
に初期化される globalThis.navigator
のポリフィルを作成しました。これにより、拡張機能は引き続き正しく動作します。ポリフィルは setting(extensions.supportNodeGlobalNavigator)
VS Code 設定の背後にあります。デフォルトでは、この設定は無効になっており、ポリフィルが配置されています。拡張機能がこの方法で navigator
にアクセスしようとすると、テレメトリをキャプチャし、エラーをログに記録します (拡張機能開発モードの場合)。
将来的には、この設定がデフォルトで有効になる可能性があるため、拡張機能作成者には、新しい navigator
グローバルオブジェクトと互換性があるようにコードを移行することを強くお勧めします。コードを移行するには、次の手順に従います:
- 拡張機能ホストログで、拡張機能から発生したエラースタックを持つ
PendingMigrationError
を確認します。 - 必要に応じて、
typeof navigator === 'object'
のようなチェックがtypeof process === 'object' && process.versions.node
に移行されていることを確認します。 setting(extensions.supportNodeGlobalNavigator)
を有効にします。- 拡張機能の動作が変わらないことを確認します。
提案された API¶
認証プロバイダー: MCP でサポートされる認証サーバー¶
現在 MCP 認証 でのみ利用されているこの API 提案により、AuthenticationProvider
はそれに関連付けられている認証サーバーを宣言できます。
たとえば、GitHub 認証プロバイダーを見ると、認証プロバイダーコントリビューション の authorizationServerGlobs プロパティに一般的な GitHub 認証 URL が含まれています:
{
"label": "GitHub",
"id": "github",
"authorizationServerGlobs": [
"https://github.com/login/oauth"
]
}
このプロパティは拡張機能のアクティベーションに使用されます。要求された認証サーバーが一致する場合、拡張機能がアクティベートされます。
さらに、認証プロバイダーを登録する際には、最終決定された認証サーバー URL glob を含める必要があります。GitHub 認証がここで行っていること と同様です:
vscode.authentication.registerAuthenticationProvider(
type,
this._githubServer.friendlyName,
this,
{
supportsMultipleAccounts: true,
supportedAuthorizationServers: [
ghesUri ?? vscode.Uri.parse('https://github.com/login/oauth')
]
}
);
より複雑な例については、Microsoft 認証を参照してください。認証サーバーは、パスに配置されるテナントに依存します。そのため、これには コントリビューション でワイルドカードを使用します:
{
"label": "Microsoft",
"id": "microsoft",
"authorizationServerGlobs": [
"https://login.microsoftonline.com/*/v2.0"
]
},
そして 登録時 に:
authentication.registerAuthenticationProvider(
'microsoft',
'Microsoft',
authProvider,
{
supportsMultipleAccounts: true,
supportedAuthorizationServers: [
Uri.parse('https://login.microsoftonline.com/*/v2.0')
]
}
)
次に、呼び出し元が認証を要求するときに認証サーバー URL を渡すと、それは既に存在する AuthenticationProviderSessionOptions
を介して getSessions
関数と createSession
関数の両方に渡されます。
前述のように、この機能は現在 MCP サポートで使用されており、MCP サーバーから認証に使用する認証サーバー URL を受け取ります。その URL は認証プロバイダーにマッピングされるか、存在しない場合はその認証サーバー用に認証プロバイダーが動的に作成されます。
完全な API 提案は vscode リポジトリ にあり、GitHub issue でのフィードバックをお待ちしています!
エンジニアリング¶
Electron 35 アップデート¶
このマイルストーンでは、Stable リリースのユーザーに Electron 35 アップデートをプロモートしています。このアップデートには、Chromium 134.0.6998.205 と Node.js 22.15.1 が含まれています。Insiders ビルドでセルフホストし、早期のフィードバックを提供してくださった皆様に感謝いたします。
実世界の拡張機能での ESM の採用¶
前回のマイルストーンでは、JavaScript モジュール (ESM) のサポートを発表しました。これにより、拡張機能は import
および export
ステートメントを使用できるようになりますが、現在は NodeJS 拡張機能ホストをターゲットにしている場合に限られます。
今月、GitHub Issue Notebooks で実世界の採用を行いました。この拡張機能は NodeJS 拡張機能ホスト (ESM 拡張機能をサポート) と Web ワーカー拡張機能ホスト (現在 ESM 拡張機能をサポートしていません) で実行できるため、これは簡単ではありません。これにはより複雑なバンドラー設定が必要であり、その esbuild-config からインスピレーションを得たいと思うかもしれません。
ありがとうございます¶
最後になりましたが、VS Code の貢献者の皆様に心より感謝申し上げます。
Issue トラッキング¶
Issue トラッキングへの貢献:
- @gjsjohnmurray (John Murray)
- @albertosantini (Alberto Santini)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
プルリクエスト¶
vscode
への貢献:
- @alpalla (Alessio Palladino): Add a task instancePolicy to task runOptions PR ##117129
- @0xEbrahim (Ebrahim El-Sayed): Fix Typo and Grammar PR #248814
- @a-stewart (Anthony Stewart): For editor font choice, if OS is not detected assume Linux PR #248133
- @adnval (kevin): Add installed filter PR #248055
- @bhack: Add to new source format and the mandatory signed-by PR #239390
- @dylanchu: TerminalTaskSystem: Add support for nushell PR #238440
- @eronnen (Ely Ronnen)
- make maximum number of lines in debug console configurable PR #245915
- Update log tmLanguage from vscode-logfile-highlighter 3.4.1 PR #249046
- Disassembly View: don't display invalid memory instructions PR #249779
- disasembly view: handle negative line height returned by debug adapter PR #250081
- @gabritto (Gabriela Araujo Britto): [typescript-language-features] Add configuration for maximum hover length PR #248181
- @hickford (M Hickford): Highlight active line number correctly regardless of word wrap PR #240029
- @imfing (Xin): fix: conditionally append scope parameter in authorization URL for DynamicAuthProvider PR #250084
- @jeanp413 (Jean Pierre)
- Fix timeline git requests are not cancelled when switching editors too fast PR #244335
- Fix vscode.env.onDidChangeShell not firing in the webworker extension host PR #249824
- @joyceerhl (Joyce Er)
- refactor: reuse chat attachment widgets in chat list renderer PR #248163
- fix: register widgets in chat attachments content part PR #249054
- fix: set content reference description on historical chat attachments PR #249112
- fix: use markdown string for MCP tool confirmation PR #249497
- fix: allow Continue On if edit session identity provider mutates edit session payload PR #250057
- @JoyceGu (Joyce Gu): Joycegu/add genai packages 05222025 PR #249589
- @mawosoft (Matthias Wolf): Fix PowerShell shell integration when strict mode is enabled. PR #248625
- @mortalYoung (野迂迂): fix(search): fix expand all not working PR #248207
- @nojaf (Florian Verdonck): Close all unused ports command PR #244245
- @nomike (nomike): Enhance GithHub publishing logic to handle renamed repositories PR #245024
- @Parasaran-Python (Parasaran): Fix #248222 | Regex changes to allow multiple leading dots in relative paths PR #248340
- @pelmers-db (Peter Elmers): Fix cancellation logic in Picker onDidChangeValue handler (fixes #247945) PR #247946
- @randy3k (Randy Lai): Update upstream repo for R syntax PR #248880
- @rbuckton (Ron Buckton): Add casts to silence breaks due to updated DOM types PR #248346
- @RedCMD (RedCMD): Support
@builtin @disabled
PR #235885 - @xzakharov (Oleksandr Zakharov): fix(devcontainer): bump rust feature to fix container build PR #250430
- @y0sh1ne (y0sh1ne): Fix Copy Message with multiple selections (#247927) PR #248172
vscode-copilot-release
への貢献:
- @joyceerhl (Joyce Er): chore: update bug report template PR #9702
vscode-css-languageservice
への貢献:
- @Legend-Master (Tony): Add basic media query auto complete support PR #443
- @rgant (J Rob Gant)
vscode-custom-data
への貢献:
- @Legend-Master (Tony): Add media query support PR #118
vscode-eslint
への貢献:
vscode-generator-code
への貢献:
- @SamB (Samuel Bronson): Do not link to top of vscode docs PR #518
vscode-js-debug
への貢献:
- @kdy1 (Donny/강동윤): chore: Fix default url for turbopack PR #2223
- @mikaelwaltersson (Mikael Waltersson): Fix bug where the WasmWorker instance is disposed but never re-spawned on page reloads + writeMemory when WASM memory is SharedArrayBuffer PR #2211
vscode-jupyter
への貢献:
- @WillHirsch: Downgrade diagnostic severity for use of bang instead of percent for package installs PR #16601
vscode-languageserver-node
への貢献:
- @martijnwalraven (Martijn Walraven): Fix
workspace/textDocumentContent/refresh
request PR #1637
vscode-markdown-tm-grammar
への貢献:
- @Barros1902 (Tomás Barros ): Fix strikethrough with underscores in Markdown syntax (Fixes microsoft#173) PR #174
vscode-prompt-tsx
への貢献:
- @joyceerhl (Joyce Er): chore: npm audit fix PR #175
vscode-pull-request-github
への貢献:
- @kabel (Kevin Abel): Allow verified GitHub emails when none are private PR #6921
vscode-python-debugger
への貢献:
- @kycutler (Kyle Cutler): Fix
TypeError
from trying to read directory PR #692
debug-adapter-protocol
への貢献:
- @DrSergei: Fix some typos PR #543
- @robertoaloi (Roberto Aloi): Add Erlang EDB Debugger PR #544
language-server-protocol
への貢献:
- @asukaminato0721 (Asuka Minato)
- @brynne8 (Brynne Taylor): fix typo in glob pattern spec PR #2132
- @leon-bckl (Leon): Added c++20 lsp-framework PR #2144
- @nieomylnieja (Mateusz Hawrus): chore: Add Nobl9 VSCode extension to servers.md PR #2136
- @zonuexe (USAMI Kenta): Add LSP clients for Emacs PR #2145
lsprotocol
への貢献:
- @debonte (Erik De Bonte)
- @myleshyson (Myles Hyson): Add golang to plugin table PR #418