🚀 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: 新機能をいち早く試したいですか? nightly 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 メニューを開き、[Copilot Edits を開く] を選択するか、⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I) をトリガーします。

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

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 の機能を基に構築できます。ランタイム ステータス ビューで、拡張機能の 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.codeActionTriggered および accessibility.signals.codeActionApplied 設定で有効にできます。

REPL での自動フォーカス管理

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

ワークベンチ

拡張機能の検索結果の改善

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

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.

エディター

貼り付けとドロップの動作を構成

テキスト エディターにファイルをドラッグ アンド ドロップするか、コピー アンド ペーストすると、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 設定で無効にできます。

上書きモード

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

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

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

ソース管理

Git blame 情報 (実験的)

今回のマイルストーンでは、エディター装飾とステータス バー項目を使用して blame 情報を表示する実験的なサポートを追加しました。この機能を有効にするには、git.blame.editorDecoration.enabled および git.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, <line> のリンクが、ターミナルでリンクとして検出されるようになりました。

テスト

属性付きカバレッジ

今回のマイルストーンでは、拡張機能がテストごとにカバレッジを提供できる 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 のインポート付き貼り付け

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

インポート文が追加されるだけでなく、ペーストされたコードで使用されていたローカル変数に対して新しいexport文まで追加されていることに注目してください!

この機能は大幅な時間短縮になると考えていますが、既存のワークフローを邪魔しないように配慮もしています。そのため、デフォルトでは、コピー&ペーストは常にペーストされたテキストのみを挿入するようにしています。「インポート付きでペースト」編集が可能な場合は、ペーストコントロールが表示され、「インポート付きでペースト」編集を選択できます。

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.enabledjavascript.updateImportsOnPaste.enabled を使用できます。

リモート開発

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

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

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

これらの機能の詳細については、Remote Development リリースノートをご覧ください。

エンタープライズ サポート

許可された拡張機能の設定

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

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

次の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と見なされます。現時点では、ワイルドカードの使用はサポートされていません。

microsoft をパブリッシャーIDとして使用すると、Microsoftによって公開されたすべての拡張機能 (パブリッシャーIDが異なる場合でも) を参照できます。

バージョン範囲はサポートされていません。拡張機能の複数のバージョンを許可する場合は、各バージョンを個別に指定する必要があります。プラットフォームによってバージョンをさらに制限するには、@ 記号を使用してプラットフォームを指定します。たとえば、"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 拡張機能を導入します。現在、Marketplaceでプレビュー版をご利用いただけます。

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

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

Python Environments は Marketplace からダウンロードでき、Python 拡張機能のプレリリースバージョンで使用できます。

Python テストの機能強化

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

Python REPL の機能強化

  • ネイティブ REPL へのスマート送信後、エディターにフォーカスを残す
  • ネイティブ 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サーバーから展開/折りたたみされた情報を表示できるようにしました。拡張機能は、展開可能なホバーAPIを使用して、エディターのホバーに + および - マーカーを表示し、情報の表示量を増減します。

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

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

Microsoft 認証の強力なセキュリティベースラインを確保するために、Microsoft アカウント拡張機能に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.implementation (classic に設定し、VS Code を再起動) で実行できますが、この設定は長くは存続しないことに注意してください。MSALフローで問題が発生した場合は、問題をオープンしてください。

拡張機能の作成

@vscode/chat-extension-utils

拡張機能の作成者が GitHub Copilot と統合できるように、chat および 言語モデル 拡張機能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.enabledterminal.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 では、「値の選択」を設定でき、入力の一部または全部をプログラムで選択できます。このマイルストーンでは、クイックピックでの値選択のための提案された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 proposal を試して、この 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 Authentication の MSAL の採用のために特別に追加されたもので、ネイティブハンドルを OS に渡して、VS Code の上に認証ダイアログをレンダリングできるようにするためです。

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

エンジニアリング

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

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

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

エディターでの 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

この作業を追跡する issue は #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 のコントリビューターの皆様に心から感謝申し上げます。

Issue の追跡

Issue の追跡への貢献

プルリクエスト

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 への貢献