に参加して、VS Code の AI 支援開発について学びましょう。

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

アップデート 1.96.1: このアップデートでは、これらの問題が修正され、GitHub Copilot 無料プランが有効になります。

アップデート 1.96.2: このアップデートでは、これらの問題が修正されます。

アップデート 1.96.3: このアップデートでは、これらの問題が修正されます。

アップデート 1.96.4: このアップデートでは、これらの問題が修正されます。

ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap


Visual Studio Code 2024年11月リリースへようこそ。今回のバージョンでは、多くのアップデートがあります。主なハイライトをいくつかご紹介します。

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

GitHub Copilot

GitHub Copilot 無料プラン

GitHub Copilot のまったく新しい無料プランを発表できることを嬉しく思います。GitHub Copilot 無料プランにサインアップするには、GitHubアカウントが必要です。毎月、一定回数の補完とチャットインタラクションが許可され、これらは毎月リセットされます。

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

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

Copilot 無料プランの詳細と条件について詳しくはこちらをご覧ください。

Copilot Edits

前回のマイルストーンで、自然言語を使って一度に複数のファイルを素早く編集できるCopilot Edits (現在プレビュー中) を導入しました。それ以来、私たちはその体験を繰り返し改善してきました。Copilot Editsは、コマンドセンターのCopilotメニューを開いて「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は、作業セットのファイルを追加ボタンの横に提案ファイルを表示します。また、ファイルを追加を選択し、次に関連ファイルを選択して、提案ファイルのリストから選択することもできます。

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

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

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

検索ビューの検索結果やエクスプローラービューのファイルに対して、新しい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-debug/startDebuggingインテントを含むCopilotのデバッグ機能は、デバッグの前にコンパイルステップが必要なコードに対して、必要に応じてpreLaunchTaskを生成するようになりました。これはRustやC++などのコンパイル言語でよくあるケースです。

コンテキストの追加

Copilot ChatとCopilot Editsにシンボルとフォルダーをコンテキストとして含める新しい方法を追加しました。これにより、ワークフロー中に必要な情報を参照しやすくなります。

シンボル

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

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

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

フォルダー

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

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

Copilot使用状況グラフ

VS Code拡張機能は、VS Code APIを使用してCopilotの機能を活用できます。Runtime Statusビューで拡張機能の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コード検索とその有効化方法について詳しくはこちらをご覧ください。

アクセシビリティ

コードアクションのアクセシビリティ信号

一部のコードアクション、例えば外部サービスを呼び出して画像の代替テキストを生成するクイックフィックスなどは、完了に時間がかかる場合があります。いつトリガーされたのか、いつ完全に適用されたのかが分かりにくいかもしれません。そこで、コードアクションがトリガーされた、または適用されたことを示すアクセシビリティ信号を追加しました。

これらの信号は、accessibility.signals.codeActionTriggeredaccessibility.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.

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

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

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

タイトル領域をできるだけすっきりさせたいと考える方もいらっしゃいます。タイトル領域の戻る/進むボタンを非表示にできる新しい設定workbench.navigationControl.enabledを追加しました。

この設定は、タイトル領域を右クリックし、ナビゲーションコントロールを選択することでもアクセスできます。

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ファイル間でコードをコピー&ペーストする際に、自動的にインポートを追加します。ワークフローを妨げないようにするため、デフォルトでは、ペーストはプレーンテキストを挿入し、インポート付きペーストはペーストコントロールのオプションとして提供されるようにしました。ただし、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設定で無効にすることができます。

上書きモード

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

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

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

ソース管理

Git blame情報 (実験的)

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

エディターとステータスバーに表示されるメッセージの形式は、git.blame.editorDecoration.templateおよびgit.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.titleおよびterminal.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, 形式のリンクがターミナルでリンクとして検出されるようになりました。

テスト

帰属可能なカバレッジ

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

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

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

テストのエラーメッセージを再設計し、より目を引き、かつ邪魔にならないようにしました。これは、SCMやCopilot Editsからの差分など、多忙なシナリオで特に役立ちます。エラーメッセージを選択すると、引き続きピークコントロールが開き、エラーの完全な詳細が表示されます。

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 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"]
  }
}

最後に、インポート付き貼り付けを完全に無効にしたい場合は、typescript.updateImportsOnPaste.enabledおよびjavascript.updateImportsOnPaste.enabledを使用できます。

リモート開発

リモート開発拡張機能を使用すると、開発コンテナー、SSH 経由のリモートマシン、リモートトンネル、またはWindows 用 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環境拡張機能

今回のリリースでは、Python環境拡張機能を導入します。現在、マーケットプレイスでプレビュー版として利用可能です。

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

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

Python環境拡張機能はマーケットプレイスからダウンロードでき、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のいずれに設定されているかに応じて、次の設定のデフォルト値を変更するようになりました。

設定 ライト default フル
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サーバーからの展開/縮小された情報を表示できるようになりました。拡張機能は、展開可能なホバーAPIを使用して、エディターホバーに+-マーカーを表示し、より詳細な情報またはより少ない情報を表示します。

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

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

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

この作業の際立った機能の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フローで問題が発生した場合は、issueを開いてください。

拡張機能の作成

@vscode/chat-extension-utils

拡張機能の作者がGitHub Copilotと統合できるように、チャットおよび言語モデル拡張機能APIを数か月間利用できるようにしていました。しかし、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 Chatのコンテキストとしてアタッチすることができました。コンテキストをより細かく制御するために、コードフラグメントを貼り付けてチャットのコンテキストとしてアタッチできるようになりました。これにより、必要なファイル情報と対応する行番号が追加されます。現在のワークスペース内のファイルから取得したコードのみを貼り付けることができます。

これを試すには、コードをコピーして、インラインチャット、クイックチャット、またはチャットビューに貼り付けます。表示される貼り付けコントロールを選択し、「貼り付けられたコード添付ファイル」を選択します。または、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.enabledおよびterminal.integrated.suggest.enableExtensionCompletionsを設定してください。現在、cdcode、およびcode-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 issueでご意見をお聞かせください!

提案されたネイティブウィンドウハンドル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認証がMSALを採用するために特別に追加されたもので、ネイティブハンドルをOSに渡して、OSがVS Codeの上に認証ダイアログをレンダリングできるようにしました。

nativeWindowHandleの提案についてユースケースやフィードバックがある場合は、このGitHub issueでご意見をお聞かせください!

エンジニアリング

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 1.95でonDidChangeCheckboxStateが破損
  • 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への貢献

  • @oliversen (Oliver Olsen)
    • .dist-infoディレクトリを拡張機能パッケージから除外 PR #215
    • .vscodeignore.pycファイルに対するglobパターンを修正 PR #216
    • noxfile.pyから重複するコードを削除 PR #217

vscode-test-webへの貢献

inno-updaterへの貢献

language-server-protocolへの貢献者

© . This site is unofficial and not affiliated with Microsoft.