VS Codeのエージェントモードを拡張するには、を試してください!

2024年11月 (バージョン 1.96)

アップデート 1.96.1: このアップデートでは、これらの問題に対処し、GitHub Copilot Free プランを有効にします。

アップデート 1.96.2: このアップデートでは、これらの問題に対処します。

アップデート 1.96.3: このアップデートでは、これらの問題に対処します。

アップデート 1.96.4: このアップデートでは、これらの問題に対処します。

ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Visual Studio Codeの2024年11月リリースへようこそ。このバージョンには、皆様に気に入っていただけると嬉しい多くのアップデートが含まれており、主なハイライトは次のとおりです。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.comアップデートにアクセスしてください。Insiders: 新機能をできるだけ早く試したいですか? 夜間ビルドのInsidersをダウンロードして、利用可能になり次第最新のアップデートを試すことができます。

GitHub Copilot

GitHub Copilot Free プラン

GitHub Copilot のまったく新しい無料ティアを発表できることを嬉しく思います。GitHub Copilot Free プランにサインアップすると、GitHub アカウントさえあれば利用できます。毎月、特定の数の補完とチャットインタラクションが利用でき、これらは毎月リセットされます。

VS Code内から直接サインアップできます。Copilot セットアップガイドの手順に従ってください。

Chat view shows the Copilot message and a button that enables you to sign in to use Copilot.

Copilot Free プランの詳細と条件について詳しく学ぶことができます。

Copilot Edits

前回のマイルストーンでは、自然言語を使って複数のファイルを一度にすばやく編集できるCopilot Edits(現在プレビュー中)を導入しました。それ以来、私たちはそのエクスペリエンスを継続的に改善してきました。Copilot Editsは、コマンドセンターのCopilotメニューを開き、「Open Copilot Edits」を選択するか、をトリガーすることで試すことができます。

進行状況とエディターコントロール

Copilot Editsは、異なるファイル間で複数の変更を加えることができます。編集がストリームされるにつれて、その進行状況をより明確に確認できるようになりました。また、エディターのオーバーレイコントロールを使用すると、すべての変更を簡単に循環表示し、承認または破棄できます。

チャットセッションをCopilot Editsに移動する

コードに変更を加えるためのアイデアを探索するためにチャットビューを使用することがあるかもしれません。個々のコードブロックを適用する代わりに、チャットセッションをCopilot Editsに移動して、セッションからのすべてのコード提案を適用できるようになりました。

Edit with Copilot showing for a chat exchange.

作業セットの提案ファイル

Copilot Editsでは、作業セットがCopilot Editsが変更を提案できるファイルを決定します。関連するファイルを作業セットに追加するのを助けるために、Gitリポジトリの場合、Copilot Editsは既に追加したファイルに基づいて追加ファイルを提案できるようになりました。たとえば、Copilot Editsは、既に追加したファイルと一緒によく変更されるファイルを提案します。

Copilotは、作業セットのAdd Filesボタンの横に提案ファイルを表示します。また、Add Filesを選択してからRelated Filesを選択して、提案されたファイルのリストから選択することもできます。

再起動後の編集セッションの復元

VS Codeの再起動後、編集セッションが完全に復元されるようになりました。これには、作業セット、承諾状態、および過去のすべての編集ステップのファイル状態が含まれます。

エクスプローラー、検索、エディターから作業セットに追加

検索ビューの検索結果やエクスプローラービューのファイルに対して、新しいAdd File to Copilot Editsコンテキストメニューアクションを使用して、ファイルをCopilot Editsの作業セットに追加できます。さらに、エディターのコンテキストメニューからテキスト選択をCopilot Editsにアタッチすることもできます。

Add a file from the explorer view to Copilot Edits

Copilotを使ったデバッグ

デバッグの構成は、特に新しいプロジェクトや言語を扱う場合に複雑になることがあります。このマイルストーンでは、VS Codeを使用してプログラムをデバッグするのに役立つ新しいcopilot-debugターミナルコマンドを導入します。これは、通常実行するコマンドの前にcopilot-debugを付加することで使用できます。例えば、通常python foo.pyコマンドでプログラムを実行する場合、copilot-debug python foo.pyを実行してデバッグセッションを開始できるようになりました。

プログラムが終了した後、プログラムを再実行するか、プログラムのデバッグに使用されたVS Codeの起動構成を表示、保存、または再生成するオプションが提供されます。

デバッグセッション後、ターミナルにはプログラムを再実行、再生成、保存、または起動設定を表示するオプションが表示されます。 テーマ: Codesong (vscode.devでプレビュー)

タスクサポート

Copilotのデバッグ機能(copilot-debugおよび/startDebuggingインテントを含む)は、デバッグ前にコンパイルステップが必要なコードに対して、必要に応じてpreLaunchTaskを生成するようになりました。これは、RustやC++のようなコンパイル言語によく見られます。

コンテキストの追加

Copilot ChatおよびCopilot Editsにシンボルとフォルダーをコンテキストとして含める新しい方法が追加され、ワークフロー中に必要な情報を簡単に参照できるようになりました。

シンボル

シンボルは、アウトラインビューまたはブレッドクラムからチャットビューにドラッグ&ドロップすることで、Copilot ChatおよびCopilot Editsに簡単に追加できるようになりました。

また、チャット入力にシンボル補完機能が導入されました。#の後にシンボル名を入力すると、最近作業したファイルからのシンボルの提案が表示されます。

プロジェクト全体のシンボルを参照するには、#symを使用してグローバルシンボルピッカーを開くことができます。

フォルダー

フォルダーは、エクスプローラー、ブレッドクラム、または他のビューからCopilot Chatにドラッグすることで、コンテキストとして追加できるようになりました。

フォルダーがCopilot Editsにドラッグされると、そのフォルダー内のすべてのファイルが作業セットに含まれます。

Copilot使用状況グラフ

VS Codeの拡張機能は、VS Code APIを使用してCopilotの機能の上に構築することができます。拡張機能のCopilot使用状況のグラフが、ランタイムステータスビューで表示されるようになりました。このグラフは、過去30日間に拡張機能によって行われたチャットリクエストの数を示します。

Copilot usage graph in the Runtime Status view

コミットメッセージ生成のカスタム命令

Copilotは、行われた変更に基づいてコミットメッセージを生成するのに役立ちます。このマイルストーンでは、コミットメッセージを生成する際のカスタム命令のサポートが追加されました。例えば、コミットメッセージが特定の形式に従う必要がある場合、カスタム命令でこれを記述できます。

github.copilot.chat.commitMessageGeneration.instructions設定を使用して、カスタム命令を指定するか、カスタム命令を含むワークスペースのファイルを指定できます。これらの命令は、コミットメッセージの生成に使用されるプロンプトに追加されます。カスタム命令の使用方法の詳細については、こちらをご覧ください。

インラインチャット

このマイルストーンでは、インラインチャットのユーザーエクスペリエンスがさらに向上しました。進行状況の報告がより控えめになり、変更のストリーミング中には波線が無効になり、検出されたコマンドがよりきれいに表示されるようになりました。

また、擬似コード検出の改善も継続しており、行のほとんどが自然言語の場合にインラインチャットで続行できるヒントを表示するようになりました。この機能により、エディターに擬似コードを入力し、それをインラインチャットのプロンプトとして使用できます。このフローは、⌘I (Windows, Linux Ctrl+I)を押してトリガーすることもできます。

Inline Chat hint for a line that is dominated by natural language.

さらに、空行にインラインチャットのヒントを表示する新しい実験的な設定があります。この設定はinlineChat.lineEmptyHint経由で有効にできます。デフォルトでは、この設定は無効になっています。

ターミナルチャット

ターミナルインラインチャットは、エディターインラインチャットと見た目や操作感が非常に近くなるように、デザインが一新されました。

Terminal inline chat looks a lot like editor chat now

その他、注目すべき改善点は以下の通りです

  • ウィジェットのレイアウトと配置が改善され、全体的に動作が向上しました。
  • モデルピッカーがあります。
  • 下部のボタンがより一貫性を持つようになりました。

@workspace のパフォーマンス向上

@workspace を使用してCopilotに現在開いているワークスペースについて質問する場合、まずワークスペースをCopilotにコンテキストとして渡すことができる関連するコードスニペットのセットに絞り込む必要があります。ワークスペースがGitHubリポジトリによってバックアップされている場合、GitHubコード検索を使用してこれらの関連するスニペットをすばやく見つけることができます。ただし、コード検索インデックスはリポジトリのメインブランチを追跡するため、ローカルの変更やブランチ上の場合はそれに依存できませんでした。

このマイルストーンでは、GitHub検索の速度上の利点をブランチとプルリクエストにもたらす作業を行いました。これは、リポジトリのメインブランチに基づくリモートインデックスと、ローカルで変更されたファイルの両方を検索するようになったことを意味します。その後、これらの結果をマージし、Copilotに高速で最新のスニペットセットを提供して作業を進めます。GitHubコード検索とその有効化方法について詳しく読むことができます。

アクセシビリティ

コードアクションのアクセシビリティシグナル

一部のコードアクション(例:外部サービスを呼び出して画像のaltテキストを生成するクイックフィックス)は完了に時間がかかる場合があります。トリガーされた時期や完全に適用された時期が不明確な場合があります。そのため、コードアクションがトリガーまたは適用されたことを示すアクセシビリティシグナルを追加しました。

これらのシグナルは、accessibility.signals.codeActionTriggeredおよびaccessibility.signals.codeActionApplied設定で有効にできます。

REPLにおける自動フォーカス管理

REPLでの作業時のアクセシビリティを向上させるための新しい設定を導入しました。accessibility.replEditor.autoFocusReplExecutionを使用すると、コードが実行されるたびに、フォーカスを保持するか (none)、入力ボックスに移動するか (input)、または最後に実行されたセルに移動するか (lastExecution) を指定できるようになりました。デフォルトでは、フォーカスは入力ボックスに移動します。

Workbench

拡張機能検索結果の改善

拡張機能ビューで自由形式のテキストを使用して拡張機能を検索すると、インストール済みの拡張機能が検索結果のトップに表示されるようになりました。これにより、マーケットプレイスを検索する際に、インストール済みの拡張機能を見つけて管理しやすくなります。

Installed extensions shown at top of search results.

拡張機能ビューから拡張機能をダウンロード

VS Codeから直接拡張機能をダウンロードできるようになりました。拡張機能ビューの拡張機能のコンテキストメニューにあるダウンロードアクションを使用します。これは、拡張機能をインストールせずにダウンロードしたい場合に便利です。

Context menu option to download an extension from the Extensions view.

拡張機能のディスク使用量

拡張機能エディターで、ディスク上の拡張機能のメモリ使用量を確認できるようになりました。これにより、拡張機能が使用しているディスク容量を把握できます。

Extension memory usage on disk shown in the Extensions view.

エクスプローラー内検索の改善

9月のリリースでは、プロジェクト全体でファイルを検索する機能(以前は利用できなかった機能)を導入しました。しかし、このアップデートにより、ハイライトモードが一時的に削除され、一部のアクションが制限されていました。

今回のリリースでは、ハイライトモードが復活しました。この機能により、ワークスペース全体のファイルとフォルダーを簡単に特定でき、一致する結果がハイライト表示されるため、視認性が向上します。さらに、折りたたまれたフォルダーに新しい視覚的なインジケーターが導入され、一致する項目がその中に隠されているかどうかが表示されます。

フィルター切り替えは引き続き利用可能で、一致しない項目を非表示にすることで、クエリに一致するファイルとフォルダーにのみ焦点を当てることができます。また、以前のリリースで無効にせざるを得なかったすべてのコンテキストメニューアクションも再有効化しました。

また、検索コントロールを使用する際のユーザーエクスペリエンスも改善されました。ファイルエクスプローラーの一番上までスクロールすると、上部に余分なスペースが作成され、コントロールが検索結果を妨げないようになりました。

The find control is rendered above the first file or folder in the explorer when scrolled to the top.

プライマリとセカンダリのサイドバー間でビューを移動する

すでにドラッグ&ドロップまたはMove Viewコマンドを使用して、ビューコンテナを別の場所に移動できました。ビューコンテナの「Move To」コンテキストメニューアクションを直接使用して、プライマリサイドバー、セカンダリサイドバー、またはパネル領域の間で移動できるようになりました。

タイトル領域のナビゲーションコントロールを非表示にする

タイトル領域をできるだけすっきりとさせたい人もいるでしょう。新しい設定workbench.navigationControl.enabledを追加しました。これにより、タイトル領域の戻る/進むボタンを非表示にできます。

この設定は、タイトル領域を右クリックし、「Navigation Controls」を選択することでもアクセスできます。

Navigation Controls context menu when right-clicking the VS Code title area.

Editor

貼り付けとドラッグ&ドロップの動作を構成する

ファイルをテキストエディターにドラッグ&ドロップまたはコピー&ペーストする際、VS Codeはファイルを挿入する複数の方法を提供します。デフォルトでは、VS Codeはファイルのワークスペース相対パスを挿入しようとします。ドロップ/ペーストコントロールを使用して、リソースがどのように挿入されるかを切り替えることができるようになりました。拡張機能は、MarkdownのようにMarkdownリンクを挿入する編集を提供するなど、カスタマイズされた編集を提供することもできます。

新しいeditor.pasteAs.preferencesおよびeditor.dropIntoEditor.preferences設定により、デフォルトでどの編集タイプを使用するかを優先できるようになりました。たとえば、コピー/ペーストで常に貼り付けられたファイルの絶対パスを挿入したい場合は、次のように設定します。

"editor.pasteAs.preferences": [
    "uri.path.absolute"
]

これらの設定は、編集の種類を順番に並べたリストです。優先される種類の最初の一致する編集がデフォルトで適用されます。デフォルトの編集が適用された後でも、ドロップ/ペーストコントロールを使用して別の種類の編集に変更できます。

これらの新しい設定は、JavaScriptおよびTypeScriptのインポート付きコピー&ペーストの新しいサポートとうまく連携します。この機能は、JavaScriptまたはTypeScriptファイル間でコードをコピー&ペーストする際に、自動的にインポートを追加します。ワークフローを中断しないように、デフォルトでは、ペーストはプレーンテキストを挿入し、paste with importsがペーストコントロールのオプションとして提供されるようにしました。ただし、VS Codeが常にインポート付きでペーストしようとするようにしたい場合は、次のように設定してください。

"editor.pasteAs.preferences": [
    "text.updateImports"
]

これで、VS Codeは可能な場合、自動的にインポート付きで貼り付けを試み、インポート付き貼り付け編集が利用できない場合はプレーンテキストの貼り付けにフォールバックします。現時点では、これはJavaScriptとTypeScriptでのみ機能しますが、時間の経過とともに他の言語もサポートを採用することを期待しています。

最後に、editor.action.pasteAsキーバインディングを設定する際に、優先する貼り付けスタイルも指定できるようになりました。以下のキーバインディングは、常に貼り付けとインポートの更新を試みます。

{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.updateImports"]
  }
}

エディターの検索履歴の保持

検索コントロールがセッション間で検索履歴を保持し、VS Codeの再起動後も復元するようになりました。検索履歴はワークスペースごとに保存され、editor.find.history設定で無効にできます。

上書きモード

Vimキーマップをインストールしない限り、VS Codeがエディターでのテキストの上書きをサポートしていなかったことをご存知でしたか?多くのリクエストに応え、入力時にテキストを挿入するのではなく、上書きする上書きモードが追加されました。Markdownテーブルの編集など、テーブルのセルの境界をきれいに揃えたい場合に便利なシナリオです。

このモードは、コマンドView: Toggle Overtype/Insert ModeまたはキーボードのInsertキーを使用して切り替えることができます。上書きモードの場合、ステータスバーにはOVRインジケーターが表示されます。

上書きモード時のカーソルスタイルは、editor.overtypeCursorStyle設定で変更できます。また、上書きモードでの貼り付けが上書きか挿入かを決定する設定editor.overtypeOnPasteもあります。デフォルトの動作は、貼り付けられたテキストを挿入することです。

ソース管理

Git blame 情報 (実験的)

このマイルストーンでは、エディタ装飾とステータスバー項目を使用して blame 情報を表示する実験的サポートを追加しました。この機能は、git.blame.editorDecoration.enabledgit.blame.statusBarItem.enabledの設定を使用して有効にできます。blame 情報にマウスオーバーすると、より詳細なコミット情報が表示されます。

エディターとステータスバーに表示されるメッセージの形式は、git.blame.editorDecoration.templategit.blame.statusBarItem.templateの設定でカスタマイズできます。最も一般的な情報には変数を使用できます。例えば、以下のテンプレートはコミットの件名、作者の名前、および現在からの作者の相対日付を示します。

{
  "git.blame.editorDecoration.template": "${subject}, ${authorName} (${authorDateAgo})"
}

エディターの装飾の色を調整したい場合は、git.blame.editorDecorationForegroundテーマカラーを使用してください。

この実験的な機能を試してみて、ご意見をお聞かせください。

ソース管理グラフのタイトルアクション

ユーザーからのフィードバックに基づいて、プルとプッシュのアクションをソース管理グラフビューのタイトルバーに戻しました。これらのアクションは、現在の履歴項目参照がソース管理グラフに表示されている場合に有効になります。

これらのアクション、またはソース管理グラフビューのタイトルバーからの他のアクションを使用しない場合は、タイトルバーを右クリックして非表示にすることができます。

Source Control Graph title actions and context menu to hide specific items.

ノートブック

セル間の選択ハイライト

選択ハイライトがノートブック内でサポートされ、複数のセルにわたってテキスト選択に基づくハイライトが可能になりました。これは、既存の設定editor.selectionHighlightで制御されます。

複数カーソル: 検索一致のすべての出現箇所を選択

ノートブックで、検索一致のすべての出現箇所を選択のキーボードショートカットがサポートされるようになりました。これはコマンドID notebook.selectAllFindMatchesで検索でき、デフォルトではキーボードショートカット⇧⌘L (Windows, Linux Ctrl+Shift+L)で使用できます。

Markdownのセクション内のセルを実行

ノートブックのMarkdownセルのセルツールバーに、セクション内のセルを実行アクションが公開されました。Markdownセルにヘッダーがある場合、そのセクションとその子セクションに含まれるすべてのセルが実行されます。ヘッダーがない場合、可能であれば周囲のセクションのすべてのセルが実行されます。

セルの実行時間の詳細表示

セルステータスバー内の実行時間情報に、詳細表示を増やすオプションが追加されました。これは、notebook.cellExecutionTimeVerbosity設定で有効にでき、実行時間に加えて実行タイムスタンプを表示できます。

Verbose cell execution time within cell status bar.

ターミナル

合字のサポート

GPUアクセラレーションが使用されているかどうかにかかわらず、ターミナルで合字がサポートされるようになりました。この機能は、terminal.integrated.fontLigatures設定で有効にできます。

Fonts that support ligatures like ->, ==>, and so on will now visually look like single characters

この機能を使用するには、合字をサポートするフォントも使用していることを確認してくださいterminal.integrated.fontFamily

ターミナルタブのカスタマイズ用の新しい変数

ターミナルタブに表示されるテキストは、terminal.integrated.tabs.titleterminal.integrated.tabs.descriptionの設定によって決定され、これらは一連の変数を使用できます。以下の新しい変数がサポートされるようになりました。

  • ${shellType} - ターミナルで使用されているシェルの検出されたタイプ。これはデフォルト値に似ていますが、たとえばgitコマンドを実行しているときにgitに変わることはありません。

  • ${shellCommand} - ターミナルで実行されているコマンド。これはシェル統合が必要です。

    alt text

  • ${shellPromptInput} - ターミナルで実行されているコマンド、または現在検出されているプロンプト入力。これはシェル統合が必要です。

    Typing "echo hello" in the terminal will show "echo hello|" in the tab when configured

最近のコマンド実行が履歴ソースファイルを表示するようになりました

最近のコマンドを実行シェル統合機能には、コマンドのソースのフルサイズヘッダーが含まれるようになりました。これには、関連する履歴ファイルと、それを開くための便利なボタンが含まれています。

alt text

このコマンドのデフォルトのキーバインディングはCtrl+Alt+Rです。

/path/to/file.ext, <line>形式のリンクがターミナルでリンクとして検出されるようになりました。

テスト

帰属可能なカバレッジ

このマイルストーンでは、拡張機能がテストごとにカバレッジを提供するAPIを完成させました。これにより、特定のテストがどのコードを実行したかを正確に確認できます。帰属可能なカバレッジが利用可能な場合、テストカバレッジビュー、エディターアクション、またはトグルされた場合のテストカバレッジツールバー(Test: Test Coverage Toolbarコマンド経由)にフィルターボタンが表示されるか、単にTest: Filter Coverage by Testコマンドを使用することで利用できます。

テーマ: Codesong (vscode.devでプレビュー)

インライン失敗メッセージの再設計

テスト失敗メッセージを、より目を引くように、そして目立たないように再設計しました。これは、SCMやCopilot Editsのdiffなど、忙しいシナリオで特に役立ちます。失敗メッセージを選択すると、失敗の詳細全体を表示するためのピークコントロールが引き続き開きます。

Image of new test error messages in the editor.

連続実行UIの改善

以前は、テストエクスプローラービューの「目」アイコンで切り替えられる連続テスト実行のグローバル状態は、デフォルトの実行プロファイルセットで連続実行をオンまたはオフに切り替えていました。

連続実行UIを再設計し、プロファイルごとに連続実行を個別にオンまたはオフにするドロップダウンメニューを含めました。インジケーターを選択すると、最後に使用された実行プロファイルのセットがオンまたはオフに切り替わります。

言語

TypeScript 5.7

当社のJavaScriptおよびTypeScriptサポートは、TypeScript 5.7を使用するようになりました。この主要なアップデートには、多数の言語およびツール改善、重要なバグ修正、およびパフォーマンス最適化が含まれています。

TypeScript 5.7リリースに関する詳細情報は、TypeScriptブログで確認できます。また、以下のセクションではいくつかのツールのハイライトも紹介しています。

JavaScriptとTypeScriptのインポート付き貼り付け

ファイル間でコードを移動した後、インポートを手動で追加するのにうんざりしていませんか?TypeScript 5.7以降のインポート付き貼り付け機能を試してみてください。JavaScriptまたはTypeScript間でコードをコピー&ペーストするたびに、VS Codeが貼り付けられたコードのインポートを追加できるようになりました。

インポートが追加されるだけでなく、貼り付けられたコードで使用されていたローカル変数に対して新しいエクスポートも追加されている点に注目してください!

この機能は大幅な時間節約になると考えていますが、既存のワークフローを中断することにも配慮しています。そのため、デフォルトでは、コピー&ペーストは常に貼り付けられたテキストのみを挿入するようにしています。paste with imports編集が利用可能な場合は、ペーストコントロールが表示され、そこからpaste with imports編集を選択できます。

Paste control that shows options to insert plain text or paste with imports.

常にインポート付きで貼り付けたい場合は、新しいeditor.pasteAs.preferences設定を使用できます。

"editor.pasteAs.preferences": [
    "text.updateImports"
]

これにより、編集が利用可能な場合は常にインポート付きで貼り付けが試行されます。

利用可能な場合、キーバインディングを設定してインポート付きで貼り付けることもできます。

{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.updateImports"]
  }
}

もしよろしければ、逆のことも可能です。インポート付き貼り付けをデフォルトにし、プレーンテキストとして貼り付けるキーバインディングを追加することもできます。

"editor.pasteAs.preferences": [
    "text.updateImports"
]
{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.plain"]
  }
}

最後に、paste with importsを完全に無効にしたい場合は、typescript.updateImportsOnPaste.enabledjavascript.updateImportsOnPaste.enabledを使用できます。

リモート開発

リモート開発拡張機能を使用すると、開発コンテナー、SSH経由のリモートマシンまたはリモートトンネル、またはWindows Subsystem for Linux(WSL)をフル機能の開発環境として利用できます。

主なハイライトは次のとおりです。

  • remote-ssh Copilot チャット参加者
  • 強化されたセッションログ

これらの機能の詳細については、リモート開発リリースノートで確認できます。

Enterprise support

許可される拡張機能を構成する

extensions.allowed設定を使用して、VS Codeにインストールできる拡張機能を制御できるようになりました。この設定では、発行元、特定の拡張機能、およびバージョンごとに許可またはブロックされる拡張機能を指定できます。拡張機能またはバージョンがブロックされた場合、すでにインストールされていれば無効になります。以下の種類の拡張機能セレクターを指定できます。

  • 発行元からのすべての拡張機能を許可またはブロックする
  • 特定の拡張機能を許可またはブロックする
  • 特定の拡張機能のバージョンを許可する
  • 特定の拡張機能のバージョンとプラットフォームを許可する
  • 拡張機能の安定版のみを許可する
  • 発行元からの安定版拡張機能バージョンのみを許可する

以下のJSONスニペットは、さまざまな設定値の例を示しています。

"extensions.allowed": {
    // Allow all extensions from the 'microsoft' publisher. If the key does not have a '.', it means it is a publisher ID.
    "microsoft": true,

    // Allow all extensions from the 'github' publisher
    "github": true,

    // Allow prettier extension
    "esbenp.prettier-vscode": true,

    // Do not allow docker extension
    "ms-azuretools.vscode-docker": false,

    // Allow only version 3.0.0 of the eslint extension
    "dbaeumer.vscode-eslint": ["3.0.0"],

    // Allow multiple versions of the figma extension
    "figma.figma-vscode-extension": ["3.0.0", "4.2.3", "4.1.2"],

    // Allow version 5.0.0 of the rust extension on Windows and macOS
    "rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"],

    // Allow only stable versions of the GitHub Pull Requests extension
    "github.vscode-pull-request-github": "stable",

    // Allow only stable versions from redhat publisher
    "redhat": "stable"
}

発行元は発行元IDで指定します。キーにピリオド(.)がない場合、それは発行元IDとみなされます。キーにピリオドがある場合、それは拡張機能IDとみなされます。現在、ワイルドカードの使用はサポートされていません。

発行元IDとしてmicrosoftを使用すると、たとえ異なる発行元IDを持つ場合でも、Microsoftによって公開されたすべての拡張機能を参照できます。

バージョン範囲はサポートされていません。複数の拡張機能バージョンを許可したい場合は、各バージョンを個別に指定する必要があります。プラットフォームでバージョンをさらに制限するには、@記号を使用してプラットフォームを指定します。例: "rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"]。詳細については、エンタープライズドキュメントを参照してください。

管理者は、Windows のグループポリシー経由でこの設定を構成することもできます。詳細については、エンタープライズドキュメントのWindows のグループポリシーのセクションを参照してください。

プリインストールされた拡張機能でVS Codeをセットアップする

VS Codeを、あらかじめインストールされた拡張機能(ブートストラップ)のセットでセットアップできます。この機能は、VS Codeがプリインストールされ、特定の拡張機能がすぐに利用できる状態のマシンイメージ、仮想マシン、またはクラウドワークステーションを準備する場合に役立ちます。

: 拡張機能のプリインストールは、現在Windowsでのみサポートされています。

拡張機能をブートストラップするための手順は以下の通りです

  1. VS Codeのインストールディレクトリにbootstrap\extensionsフォルダを作成します。

  2. プリインストールしたい拡張機能のVSIXファイルをダウンロードし、bootstrap\extensionsフォルダに配置します。

  3. ユーザーが初めてVS Codeを起動すると、bootstrap\extensionsフォルダ内のすべての拡張機能がバックグラウンドでサイレントインストールされます。

ユーザーは、プリインストールされた拡張機能をアンインストールすることもできます。拡張機能をアンインストールした後、VS Codeを再起動しても拡張機能は再インストールされません。

拡張機能への貢献

Python

Python Environments 拡張機能

このリリースでは、マーケットプレイスでプレビュー版として利用可能なPython Environments拡張機能を導入します。

この拡張機能は、Python環境管理を簡素化し、環境の作成、削除、管理のためのUIを提供するとともに、パッケージのインストールおよびアンインストールを行うパッケージ管理も提供します。

さまざまなAPIを介して好みの環境マネージャーとシームレスに統合するように設計されており、デフォルトでグローバルPythonインタープリター、venv、およびCondaをサポートします。開発者は、お気に入りのPython環境マネージャーのサポートを追加し、拡張機能のUIと統合するための拡張機能を構築して、機能とユーザーエクスペリエンスを向上させることができます。

Python Environmentsはマーケットプレイスからダウンロードでき、Python拡張機能のプレリリースバージョンと併用できます。

Pythonテストの機能強化

  • pytestの--rootdir引数が、ワークスペース内のpython.testing.cwd設定の有無に基づいて動的に調整されるようになりました。
  • テストデバッグセッションを再起動すると、指定されたテストのみが再実行されるようになりました。
  • カバレッジサポートがNoSource例外を処理するように更新されました。
  • pytest-describeプラグインが、UIでのテスト検出と実行をサポートするようになりました。
  • Testing Rewriteは、プロセス間通信にUDSの代わりにFIFOを活用するようになり、ユーザーは自分のテスト設計でpytest_socketのようなpytestプラグインを利用できるようになりました。
  • リライトのデフォルト化が間近: このリリースでは、テストリライトの最後の既知の問題に対処しており、新たな問題が発生しない限り、2025年初頭にリライト実験はオフになり、リライトがデフォルトに設定されます。

Python REPLの機能強化

  • Native REPLへのスマート送信後、エディターにフォーカスを残す
  • Native REPLの再読み込み後の処理を改善
  • VS CodeターミナルでのPython 3.13におけるインデントエラーの問題を修正

Pylance「full」言語サーバーモード

python.analysis.languageServerMode設定がfullモードもサポートするようになり、Pylanceの機能の全範囲と最も包括的なIntelliSenseエクスペリエンスを活用できるようになりました。ただし、これはパフォーマンスの低下を伴う点に注意が必要です。特に大規模なコードベースでは、Pylanceがリソースを大量に消費する可能性があります。

python.analysis.languageServerMode設定は、それがlightdefault、またはfullに設定されているかどうかに応じて、以下の設定のデフォルト値を変更するようになりました。

設定 light default full
python.analysis.exclude ["**"] [] []
python.analysis.useLibraryCodeForTypes false true true
python.analysis.enablePytestSupport false true true
python.analysis.indexing false true true
python.analysis.autoImportCompletions false false true
python.analysis.showOnlyDirectDependenciesInAutoImport false false true
python.analysis.packageIndexDepths [ { "name": "sklearn", "depth": 2 }, { "name": "matplotlib", "depth": 2 }, { "name": "scipy", "depth": 2 }, { "name": "django", "depth": 2 }, { "name": "flask", "depth": 2 }, { "name": "fastapi", "depth": 2 } ] [ { "name": "sklearn", "depth": 2 }, { "name": "matplotlib", "depth": 2 }, { "name": "scipy", "depth": 2 }, { "name": "django", "depth": 2 }, { "name": "flask", "depth": 2 }, { "name": "fastapi", "depth": 2 } ] { "name": "", "depth": 4, "includeAllSymbols": true }
python.analysis.regenerateStdLibIndices false false true
python.analysis.userFileIndexingLimit 2000 2000 -1
python.analysis.includeAliasesFromUserFiles false false true
python.analysis.functionReturnTypes false false true
python.analysis.pytestParameters false false true
python.analysis.supportRestructuredText false false true
python.analysis.supportDocstringTemplate false false true

TypeScript

TypeScriptの展開可能なホバー (実験的)

このマイルストーンでは、TSサーバーから展開/縮小された情報を表示できるようになりました。拡張機能は、Expandable Hover APIを使用して、エディターのホバーに+-マーカーを表示し、より多くの情報またはより少ない情報を表示します。

この実験的な設定は、typescript.experimental.expandableHoverを使用して有効にできます。この設定を機能させるには、TypeScriptバージョン5.8以上を使用する必要があります。TypeScript: Select TypeScript Version...コマンドを使用してTypeScriptバージョンを変更できます。

Microsoft アカウントで MSAL が使用されるようになりました (Windows では WAM をサポート)

Microsoft 認証の強力なセキュリティベースラインを確保するため、Microsoft Account 拡張機能でMicrosoft Authentication Libraryを採用しました。

この作業の際立った機能の1つは、WAM (Web Account Manager...またBrokerとも呼ばれる) 統合です。簡単に言えば、Microsoft認証フローのためにブラウザに移動する代わりに、OSと直接やり取りするようになりました。これはMicrosoft認証セッションを取得する推奨される方法です。さらに、OSで既にログインしているアカウントを活用できるため、高速です。

An authentication popup that the OS shows over VS Code.

この新しいフローで何か問題が見つかった場合はお知らせください。もし大きな問題が見つかり、以前のMicrosoft認証動作に戻す必要がある場合は、microsoft-authentication.implementationclassicに設定してVS Codeを再起動)を使用することで可能です。ただし、この設定は長くは残らないことに注意してください。MSALフローで問題が発生した場合は、イシューをオープンしてください。

拡張機能の作成

@vscode/chat-extension-utils

チャット言語モデル拡張APIは数ヶ月間利用可能で、拡張機能開発者がGitHub Copilotと統合できるようにしています。しかし、LLMの操作と高品質なチャット拡張機能の構築は、特にツール呼び出しを利用したい場合に本質的に複雑であることがわかりました。

チャット参加者を可能な限り簡単に立ち上げ、実行できるようにすることを目指すnpmパッケージ、@vscode/chat-extension-utilsを公開しました。これにより、そうでなければ自分でやらなければならないいくつかのことが引き継がれるため、チャット参加者を数行のコードで実装できます。このパッケージには、@vscode/prompt-tsxで使用するための有用な高品質の要素も含まれています。

完全なドキュメントはchat-extension-utilsリポジトリで確認でき、動作例はサンプルチャット拡張機能で確認できます。新しいLanguageModelTool APIドキュメントでもその使用方法が説明されています。

帰属可能なカバレッジAPI

テストカバレッジAPIは、拡張機能がテストごとにカバレッジ情報を提供できるようにするようになりました。このAPIを実装するには、FileCoverageincludesTests?: TestItem[]プロパティに、そのファイル内のコードを実行したテストを示すように入力し、TestRunProfile.loadDetailedCoverageForTestを実装してステートメントおよび宣言のカバレッジを提供します。

ユーザーからどのように見えるかの例は、上記の帰属可能なカバレッジセクションを参照してください。

JavaScriptデバッグターミナルへの貢献

JavaScriptデバッガには、他の拡張機能がJavaScriptデバッグターミナルの作成に参加するためのメカニズムが追加されました。これにより、Node.js以外のフレームワークやランタイムでも、同じおなじみの場所でデバッグが可能になります。詳細については、JavaScriptデバッガのドキュメントを参照してください。

Node.js fetch APIのプロキシサポート

グローバルなfetch関数にプロキシサポートが有効になりました(http.fetchAdditionalSupport)。これは、すでにプロキシサポートが有効だったhttpsモジュールと同様です。

プレビュー機能

チャットコンテキストをアタッチするためにコードを貼り付ける

以前は、ファイルをCopilotチャットのコンテキストとしてアタッチすることができました。コンテキストをより細かく制御するために、コードフラグメントを貼り付けてチャットのコンテキストとしてアタッチできるようになりました。これにより、必要なファイル情報と対応する行番号が追加されます。現在のワークスペース内のファイルからのみコードを貼り付けることができます。

これを試すには、コードをコピーしてインラインチャット、クイックチャット、またはチャットビューに貼り付けます。表示される貼り付けコントロールを選択し、Pasted Code Attachment.を選択します。または、editor.pasteAs.preferences設定を設定できます。

"editor.pasteAs.preferences": [
    "chat.attach.text"
]

Attaching code as context in Copilot Chat using the paste control.

より多くのシェルに対応するターミナル補完

以前のイテレーションでは、pwshでのターミナル補完の実験的サポートを追加しました。今回のリリースでは、これを他のシェルにも拡張する作業を開始しました。現時点では特にbashzshをターゲットにしていますが、この新しいアプローチは拡張機能ホストAPIによって提供されているため、ほとんどのシェルで一般的なサポートを提供する予定です。

terminal.integrated.suggest.enabledterminal.integrated.suggest.enableExtensionCompletionsを設定することで、現在の作業中の機能を試すことができます。現在、cdcodecode-insiders引数のみがサポートされています。

The command  is typed on the terminal, which shows suggestions. Then  is typed and options are provided,  is selected. Completions are requested with ctrl+space and all locales are shown.  is typed and the list is filtered to  and .

提案されたAPI

クイックピックにおける提案値選択API

InputBoxでは「値の選択」を設定でき、入力の一部または全体をプログラムで選択することが可能でした。このマイルストーンでは、QuickPickでの値の選択に関する提案APIを追加しました。

それがどのようなものか、例を挙げます。

const qp = vscode.window.createQuickPick();
qp.value = '12345678';
qp.valueSelection = [4, 6];
qp.items = [
  { label: '12345678', description: 'desc 1' },
  { label: '12345678', description: 'desc 2' },
  { label: '12345678', description: 'desc 3' }
];
qp.show();

A couple of characters are selected in the quick pick's input box.

valueSelectionInQuickPickの提案を試して、このGitHubイシューでご意見をお聞かせください!

提案されているネイティブウィンドウハンドルAPI

このマイルストーンでは、フォーカスされているウィンドウのネイティブウィンドウハンドルを取得するための新しい提案APIを追加しました。ネイティブウィンドウハンドルはOSの概念であり、本質的に特定のウィンドウへのポインタを提供します。これは、ネイティブコードとやり取りし、たとえばウィンドウの上にネイティブダイアログをレンダリングする必要がある場合に役立ちます。

declare module 'vscode' {
  export namespace window {
    /**
     * Retrieves the native window handle of the current active window.
     * This will be updated when the active window changes.
     */
    export const nativeHandle: Uint8Array | undefined;
  }
}

これは、Microsoft AuthenticationのMSAL採用のために特に追加されたもので、これにより、ネイティブハンドルをOSに渡して、VS Codeの上に認証ダイアログをレンダリングできるようになります。

nativeWindowHandleの提案について、ユースケースやフィードバックがありましたら、このGitHubイシューでお知らせください!

エンジニアリング

vscode-unpkgサービスによる拡張機能アップデートの最適化

マーケットプレイスインフラストラクチャへの負荷を軽減するため、VS Codeは拡張機能のアップデートを確認するために、新しく追加されたvscode-unpkgサービスのエンドポイントを使用するようになりました。このサービスは10分間のTTLを持つサーバーサイドキャッシュを実装しており、マーケットプレイスへの直接リクエスト数を大幅に削減します。この最適化はextensions.gallery.useUnpkgResourceApi設定(デフォルトで有効)で制御されます。

拡張機能のアップデートに問題が発生した場合、この機能はextensions.gallery.useUnpkgResourceApiで無効にでき、マーケットプレイスの直接バージョンチェックに戻すことができます。

エディターにおけるGPUアクセラレーションのための基礎作業

エディターでGPUアクセラレーションを有効にする作業を開始したことを発表でき、大変嬉しく思います。これはターミナルと同様です。この取り組みの目標は、主に入力レイテンシを削減し、スクロールパフォーマンスを向上させることで、全体的なコーディングエクスペリエンスを改善することです。

これはまだ初期段階であり、テストする準備はできていませんが、これまでの進捗状況についていくつか詳細を共有したいと思います。

  • GPUレンダラーは、内部でWebGPUを使用しています。
  • 現在は、パフォーマンスよりも機能の同等性と正確性に焦点を当てています。
  • GPUアクセラレーションが有効になっている場合、完全にサポートされていない行はDOMレンダリングに「フォールバック」できるフォールバックメカニズムがあります。これは、早期にセルフホストでき、現在互換性のない行は代わりにDOMアプローチを使用して表示されることを意味します。現在フォールバックする行の例:200文字を超える行、特定のMonaco装飾(例:未使用変数のフェードアウト)を持つ行、折り返された行などです。
  • 文字を含む実際の要素のスタイルを設定できるMonacoのインライン装飾は、CSSを使用してスタイル設定されるため、この機能にとって大きな課題となりました。ほとんどのインライン装飾を破損またはAPIを変更せずにサポートするために使用しているアプローチは、これらの装飾に添付されたCSSを検出し、一般的なCSSプロパティのサブセットをサポートし、すべてのスタイルがサポートされていない場合はフォールバックすることです。

機能が動作しているスクリーンショットを次に示します。ガターの黄色い線は、どの行がフォールバックレンダリングを使用しているかを示しています。この特定のケースでは、dontShowパラメーターが未使用としてインライン装飾を持っているため、フォールバックレンダリングを使用しています。

GPU rendering looks mostly the same as DOM rendering currently, a yellow line appears for lines rendered via the DOM

この作業を追跡しているイシューは#221145で、頻繁な更新と進捗に関する詳細が提供されています。

macOS 10.15のEOL警告

VS Codeデスクトップは、今後数回のマイルストーンでElectron 33に更新されます。Electron 33へのアップデートに伴い、VS CodeデスクトップはmacOS Catalinaでは動作しなくなります。このマイルストーンでは、影響を受けるプラットフォームのユーザー向けに、移行準備を促す非推奨通知を追加しました。上記のOSバージョンをご利用のユーザーは、追加情報についてFAQをご覧ください。

注目すべき修正点

  • 233915 拡張機能ビューの拡張機能のコンテキストメニューにあるリンクをコピーアクションを使用して、拡張機能を他のユーザーと共有する。
  • 231542 エラーEBUSYでファイルを保存できない、またはファイルデータが頻繁に消去される
  • 233304 onDidChangeCheckboxState が1.95で壊れている
  • 232263 プロセス間呼び出しがバッチ処理されるようにツリービューを最適化する
  • 156723 Waylandで実行中のドラッグ&ドロップサポートが修正されました

ありがとうございます

最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-emmet-helperへの貢献

vscode-eslintへの貢献者

vscode-extension-samplesへの貢献

vscode-extension-telemetryへの貢献

vscode-hexeditorへの貢献

vscode-json-languageserviceへの貢献

vscode-jupyterへの貢献者

vscode-mypyへの貢献

vscode-python-debuggerへの貢献者

vscode-python-tools-extension-templateへの貢献

vscode-test-webへの貢献

inno-updaterへの貢献

language-server-protocolへの貢献者