2024年9月(バージョン 1.94)
アップデート 1.94.1: このアップデートでは、セキュリティ問題に対処しています。
アップデート 1.94.2: このアップデートでは、これらの問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code 2024年9月リリースへようこそ。このバージョンには、皆様に気に入っていただけるであろう多数のアップデートが含まれています。主なハイライトは以下の通りです。
- エクスプローラーで検索 - 改善された検索コントロールで、エクスプローラービュー内のファイルを素早く見つける。
- ソース管理グラフ - ソース管理グラフでより多くのフィルタリングオプションとインタラクティブ性を実現。
- Pythonテストカバレッジ - カバレッジ付きでPythonテストを実行し、エディターで豊富な結果を得る。
- ESM - ESMへの移行により、VS Codeの起動が高速化。
- アカウント設定 - 拡張機能に使用するアカウントを指定する。
- Native REPLのCopilot - Native REPLでコード補完とインラインチャットを取得。
- チャットコンテキストの改善 - ファイルをドラッグ&ドロップするか、IntelliSenseを使用して、より関連性の高いチャットコンテキストを取得。
- テスト環境セットアップ - ワークスペースのテストフレームワーク設定をサポート。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の アップデート をご覧ください。インサイダー: 新機能をいち早く試したいですか?夜間の インサイダー ビルドをダウンロードして、最新の更新プログラムが利用可能になり次第すぐに試すことができます。
GitHub Copilot
チャットで言語モデルを切り替える
以前、OpenAI o1モデルの早期アクセスにサインアップできることを発表しました。アクセス権を取得すると、VS CodeのCopilot ChatにCopilot Chatモデルピッカーコントロールが表示され、チャットの会話に使用するモデルバージョンを選択できます。

インラインチャットのGPT-4o
CopilotインラインチャットをGPT-4oにアップグレードしました。これにより、エディターでチャットを使用する際に、より高速で正確な高品質のコードと説明が得られます。
チャットでの公開コードの一致
GitHub CopilotがGitHub.comで公開されているコードに一致する可能性のあるコードを返すことを許可できます。この機能が組織のサブスクリプションまたは個人のサブスクリプションで有効になっている場合、Copilotコード補完はすでに検出された一致に関する詳細情報を提供していました。今回、Copilot Chatでも公開コードの一致が表示されるようになりました。
組織またはサブスクリプションでこれが有効になっている場合、応答の最後に一致を表示リンクを含むメッセージが表示されることがあります。このリンクを選択すると、一致するコードリファレンスの詳細を示すエディターが開きます。

GitHubブログでGitHub Copilotでのコード参照に関する詳細情報を取得してください。
チャットでのファイル提案
チャット入力フィールドで、#<filename>と入力すると、ファイル名の提案が表示され、プロンプトにコンテキストとして素早く添付できるようになりました。これは、チャットビュー、クイックチャット、インラインチャット、ノートブックチャットなど、ファイル添付をサポートするチャットロケーションで機能します。
チャット応答でのファイルリンクの改善
Copilotの応答で言及されているワークスペースのファイルパスのレンダリングを改善しました。これらのパスは、@workspaceの質問をする際に非常によく使用されます。
まず気づくのは、ワークスペースファイルへのパスにファイルアイコンが含まれるようになったことです。これにより、チャット応答内で簡単に区別できるようになります。ファイルアイコンは、現在のファイルアイコンテーマに基づいています。

これらのパスはインタラクティブなリンクなので、選択するだけで対応するファイルが開きます。Shiftキーを押しながらドラッグ&ドロップして新しいエディターグループでファイルを開いたり、テキストエディターに挿入したりすることもできます。
デフォルトでは、これらのリンクはファイル名のみを表示しますが、ホバーすると完全なファイルパスが表示されます。

これらのパスのいずれかを右クリックして、リソースへの相対パスをコピーしたり、オペレーティングシステムのファイルエクスプローラーでファイルを表示したりするなどの追加コマンドを含むコンテキストメニューを開くこともできます。

今後のイテレーションでは、ワークスペースパスのレンダリングをさらに改善し、応答内のシンボル名にも同様の改善を加える予定です。
チャットコンテキストを追加するためのファイルのドラッグ&ドロップ
ワークベンチからファイルやエディタータブを直接チャットにドラッグすることで、チャットプロンプトのコンテキストとして追加ファイルを簡単に添付できるようになりました。インラインチャットでは、Shiftキーを押しながらファイルをドロップすると、エディターで開く代わりにコンテキストとして追加されます。
履歴に含まれるファイル添付
チャットリクエストに関連するコンテキストとして、ファイルやエディターの選択を添付する方法は複数あります。以前は、このコンテキストは現在のリクエストにのみ追加され、その後のリクエストの履歴には含まれていませんでした。今回、これらの添付ファイルは履歴に保持されるようになったため、再添付することなく参照し続けることができます。

PythonネイティブREPLでのインラインチャットと補完
Python拡張機能で使用されるネイティブREPLエディターが、入力ボックスでCopilotインラインチャットとコード補完を直接サポートするようになりました。
ノートブックで生成されたコードを受け入れて実行する
Copilotインラインチャットを使用してノートブックでコードを生成する場合、インラインチャットから生成されたコードを受け入れて直接実行できるようになりました。
ノートブックチャットで変数を添付する
ノートブックでCopilotを使用する際、Jupyterカーネルの変数をリクエストに添付できるようになりました。変数を追加することで、チャットリクエストのコンテキストをより正確に制御できるため、Copilotからより関連性の高い応答を得ることができます。
変数名に続けて#と入力するか、インラインチャットで📎コントロール(⌘/ (Windows, Linux Ctrl+/))を使用してコンテキスト変数を追加します。
チャットのユーザーエクスペリエンスの刷新
チャットビューを刷新し、クリーンな新しいウェルカムエクスペリエンスを提供し、チャット入力領域のレイアウトを更新しました。@ボタンを使用して、利用可能なチャット参加者とスラッシュコマンド(組み込みのものとインストールした拡張機能からのチャット参加者の両方)のリストを簡単に見つけられるようになりました。チャット入力ボックスに/または@と入力して、参加者とスラッシュコマンドを見つけることもできます。

セマンティック検索結果(プレビュー)
設定: github.copilot.chat.search.semanticTextResults
検索ビューでは、ファイル全体に対して正確な検索を実行できます。今回、Copilotを使用して意味的に関連性の高い検索結果を提供する機能を検索ビューに追加しました。
この機能はまだプレビュー段階であり、デフォルトでは設定が無効になっています。ぜひ試して、ご意見をお聞かせください!
テストの失敗を修正(プレビュー)
設定: github.copilot.chat.fixTestFailure.enabled
失敗した単体テストの診断を支援する特別なロジックを追加しました。このロジックは、一部のシナリオで/fixスラッシュコマンドによってトリガーされ、/fixTestFailureスラッシュコマンドで直接呼び出すこともできます。このコマンドはデフォルトでチャットで有効になっていますが、設定github.copilot.chat.fixTestFailure.enabledで無効にすることができます。
自動テスト設定(実験段階)
設定: github.copilot.chat.experimental.setupTests.enabled
実験的な/setupTestsスラッシュコマンドを追加しました。これは、ワークスペースのテスト設定を構成するのに役立ちます。このコマンドは、テストフレームワークを推奨し、設定と構成の手順を提供し、VS Codeでのテスト統合を提供するVS Code拡張機能を提案できます。これにより、コードのテストを開始するための時間と労力を節約できます。
/testsコマンドを使用してコードのテストを生成する場合、ワークスペースにそのような統合がまだ設定されていないように見える場合、/setupTestsとテスト拡張機能を推奨できます。
チャットからデバッグを開始(実験段階)
設定: github.copilot.chat.experimental.startDebugging.enabled
このマイルストーンでは、実験的な/startDebuggingスラッシュコマンドを改善しました。このコマンドにより、起動設定を簡単に見つけたり作成したり、アプリケーションのデバッグをシームレスに開始したりできます。Copilot Chatで@vscodeを使用する場合、/startDebuggingがデフォルトで利用できるようになりました。

コマンドセンターでのチャット(実験段階)
設定: chat.commandCenter.enabled
チャットにアクセスするためのコマンドセンターエントリーを実験中です。これにより、さまざまなチャットエクスペリエンスを開始したり、プロンプトにコンテキストを添付したりするなどの、すべての関連するチャットコマンドに素早くアクセスできます。チャットコマンドセンターのエントリーを表示するには、コマンドセンター自体が有効になっている必要があることに注意してください。

一時的なコンテキストの改善(実験段階)
設定: github.copilot.chat.experimental.temporalContext.enabled
一時的なコンテキストを使用すると、インラインチャットに最近開いたファイルまたは編集したファイルをチャットコンテキストの一部として考慮するように指示できます。この機能を改善し、皆様にお試しいただくことをお勧めします。
カスタム指示(実験段階)
設定: github.copilot.chat.experimental.codeGeneration.useInstructionFiles
設定: github.copilot.chat.experimental.testGeneration.instructions
前回のマイルストーンで、カスタムコード生成指示を導入しました。この機能をさらに拡張し、ワークスペースの.github/copilot-instructions.mdファイルでコード生成用の共有指示を定義できるようになりました。これらの共通指示は、独自の個人コード生成指示を補完します。コード生成指示ファイルを有効にするには、github.copilot.chat.experimental.codeGeneration.useInstructionFiles設定を使用します。
さらに、設定でテスト生成の指示を定義したり、ファイルからインポートしたりできるようになりました。たとえば、テストに常に特定の単体テストフレームワークを使用したい場合などです。テスト生成の指示は、github.copilot.chat.experimental.testGeneration.instructions設定で構成します。
アクセシビリティ
はじめに
ヘルプメニューにアクセシビリティ機能で始めるウォークスルーが追加され、アクセシビリティオプションを簡単に探索して利用できるようになりました。このウォークスルーでは、アクセシビリティヘルプダイアログ、アクセシビリティシグナル、キーボードショートカットなどの機能が紹介されます。

コメントのアクセシビリティの改善
コメントスレッドコントロール用のアクセシブルビューを導入しました。このビューには関連するエディターコンテキストが含まれており、エディターとアクセシブルビューを切り替えることなく集中し続けることができます。同様に、コメントパネルのアクセシブルビューにもエディターコンテキストが提供されるようになりました。
また、コメント: 現在行のコメントにフォーカスコマンドも導入しました。これにより、キーボードを使用してエディターからコメントコントロールに素早く移動できます。エディターで次のコメント範囲と前のコメント範囲に移動する新しいアクションもあります: コメント: 次のコメント範囲に移動とコメント: 前のコメント範囲に移動。
Workbench
拡張機能のアカウント設定を変更する
このイテレーションでは、拡張機能の優先アカウントを変更するエクスペリエンスを改善する方法を検討しました。たとえば、複数のGitHubアカウントがあり、誤って間違ったアカウントでGitHub Copilotにサインインしてしまい、別のものを使用する必要がある場合などです。
その設定は、後から複数の方法で変更できるようになりました。
- 
アクティビティバーの「アカウント」メニュー > <あなたのアカウント> > 信頼済み拡張機能の管理 > 拡張機能の歯車アイコンを選択  
- 
拡張機能ビュー > 認証を使用する拡張機能のコンテキストメニュー(または歯車アイコン) > アカウント設定を選択  
- 
拡張機能の詳細ビュー > 歯車アイコン > アカウント設定を選択  
これらのオプションのいずれかを選択すると、Quick Pickが表示され、拡張機能が使用するアカウントを変更できます。

拡張機能のアカウント設定を変更すると、このイベントが拡張機能に送信され、それを適切に処理するかどうかは拡張機能に委ねられます。期待される動作が見られない場合は、その拡張機能に問題として報告してください。そうすれば、アカウント設定のエクスペリエンスが処理されます。
また、このフローについてご意見がございましたらお知らせください。
プロファイルに関連付けられたフォルダーとワークスペースを表示
このマイルストーンでは、プロファイルエディターにフォルダー & ワークスペースセクションを導入しました。このセクションには、特定のプロファイルに関連付けられたすべてのフォルダーとワークスペースが中央の場所から一覧表示されます。このセクションから、フォルダーを追加または変更したり、新しいウィンドウでフォルダーまたはワークスペースを開いたりできます。

すべてのプロファイルの拡張機能を更新
このマイルストーンでは、すべてのプロファイルで拡張機能を更新する機能が導入されました。これは、複数のプロファイルがあり、拡張機能のバージョンを同期させたい場合に便利です。以前は、各プロファイルに切り替えて、そのプロファイルの拡張機能を更新する必要がありました。
拡張機能ビューでの警告
拡張機能ビューでは、無効な拡張機能やバージョン非互換のために無効になっている拡張機能がある場合に、警告バッジと関連情報が表示されるようになりました。

エクスプローラーで検索
エクスプローラービューの検索機能を改善し、大規模なプロジェクトでファイルを検索しやすくしました。ファイルエクスプローラーで検索コントロールを開くには、⌥⌘F (Windows, Linux Ctrl+Alt+F)キーボードショートカットを使用します。検索中、あいまい一致と連続一致を切り替えて、より柔軟な結果を得ることができます。
検索中は一部のコンテキストメニューアクションが一時的に無効になることに注意してください。さらなる改善にご期待ください!
リリースノート
リリースノートでの設定の参照に簡略化された構文(setting.name)を採用しました。これは、リリースノートエディターに表示されると、おなじみの設定歯車アイコンも表示されます。

Editor
インレイヒントの改善
インレイヒントが切り捨てられる文字数を制御するeditor.inlayHints.maximumLength設定を追加しました。
また、インレイヒントの更新戦略を見直し、入力中にインレイヒントがより早く更新されるようになり、カーソルの水平方向の移動も発生しなくなりました。
実験的な編集コンテキスト
このマイルストーンでは、新しい実験的な設定editor.experimentalEditContextEnabledを導入しました。この設定により、EditContext APIがVS Codeの編集エクスペリエンスを強化できるようになります。EditContext APIの採用により、特定のIME合成バグを修正できました。一般的に、長期的に編集エクスペリエンスが向上すると考えており、最終的にはデフォルトで有効になります。
この設定を有効にした後、VS Codeウィンドウを再読み込みして、その恩恵を受けるようにしてください。
ソース管理
ソース管理グラフビューの改善
前回のマイルストーンでは、新しいソース管理グラフビューを追加しました。今回のマイルストーンでは、新しく追加されたビューで利用できる機能を拡張し、ビューのレイアウトを洗練させる作業を行ってきました。
リポジトリピッカー
複数のリポジトリを含むフォルダー/ワークスペースを開くと、ソース管理グラフビューのタイトルにリポジトリピッカーが表示されます。デフォルトでは、ソース管理グラフビューはアクティブなリポジトリを表示し、ステータスバーの情報と一致します。リポジトリピッカーを使用して、ソース管理グラフビューを特定のリポジトリにロックできます。

履歴アイテム参照ピッカー
このマイルストーンでは、ソース管理グラフビューのタイトルに新しい履歴アイテム参照ピッカーを追加しました。この参照ピッカーを使用して、グラフに表示される履歴アイテムを別のブランチにフィルタリングしたり、複数のブランチを表示したりできます。

デフォルトでは、履歴アイテム参照ピッカーはAutoに設定されており、現在の履歴アイテム参照、そのリモート、およびオプションのベースのグラフがレンダリングされます。

履歴アイテムのアクション
このマイルストーンでは、ソース管理履歴アイテムのコンテキストメニューで利用できるアクションのリストを拡張しました。履歴アイテムから新しいブランチ/タグを作成したり、履歴アイテムをチェリーピックしたり、アイテムをチェックアウト(デタッチ)したりするアクションを追加しました。

ソース管理グラフ設定
このマイルストーンでは、グラフをカスタマイズできるように、一連の新しい設定を追加しました。
- scm.graph.badges - ソース管理グラフビューに表示されるバッジを制御します。
- scm.graph.pageOnScroll - ソース管理グラフビューがリストの終わりにスクロールしたときに、次のアイテムのページを読み込むかどうかを制御します。
- scm.graph.pageSize - ソース管理グラフビューに表示されるデフォルトのアイテム数、およびより多くのアイテムを読み込む際のデフォルトのアイテム数。
ノートブック
セル間の複数カーソルサポート(プレビュー)
ノートブックエディターは、設定notebook.multiCursor.enabledにより、セル間の複数カーソル編集をサポートするようになりました。現在、これはショートカットCtrl+Dでのみトリガーでき、限られたエディターコマンドのサブセットとともにコアエディターアクションをサポートしています。
Diffエディターがドキュメントメタデータの変更を表示
ノートブックの差分エディターは、カーネル情報やセル言語などのドキュメントメタデータに加えられた変更も表示するようになりました。

差分ビューで未変更領域を折りたたむ
ノートブックの差分ビューは、設定diffEditor.hideUnchangedRegions.enabledを尊重するようになりました。有効にすると、変更されていないコードブロックはデフォルトで折りたたまれ、大きなノートブックでの変更のレビューが容易になります。

Web Workerでのノートブックのシリアル化(実験的)
このリリースでは、Web Workerでノートブックのシリアル化を可能にする実験的な機能が導入されました。これにより、大規模なノートブックを操作する際に、拡張機能ホストプロセスのメインスレッドのブロック時間を短縮できます。デフォルトではこの機能は無効になっていますが、ipynb.experimental.serializationをtrueに設定することで有効にできます。
デバッグ
データの色付けのサポート
VS Codeは、デバッグアダプタープロトコルからの新しいテキストスタイル設定機能をサポートしています。これにより、変数ビュー、ウォッチビュー、ホバー、デバッグコンソールのデータをANSIエスケープシーケンスを介して色付けできます。
JavaScriptデバッガー
HTML要素の表示改善
JavaScriptデバッガーでのHTML要素の表示方法を改善しました。以前は素朴なオブジェクトとしてレンダリングされており、ナビゲートが困難でした。現在はDOM構造をより正確に反映し、新しい色付け機能を活用して基本的な構文強調表示を提供しています。

起動設定でのNodeコマンドのオートコンプリート
node_modulesにインストールされているコマンドラインアプリケーション用の新しいオートコンプリートヘルパーがlaunch.jsonファイルで利用できるようになりました。これにより、vitestやnestなどのツールのデバッグ設定が容易になります。
すっきりした読み込まれたソースビュー
Node.jsの組み込みモジュール、評価済みスクリプト、WebAssemblyモジュールのソースパスの構造を変更し、読み込まれたソースビューをよりすっきりと見やすく、ブラウズしやすくしました。
言語
TypeScript 5.6
JavaScriptとTypeScriptのサポートにTypeScript 5.6を使用するようになりました。このメジャーアップデートには、多くの言語とツール機能の改善に加え、重要なバグ修正とパフォーマンス最適化が含まれています。
TypeScript 5.6リリースの詳細については、TypeScriptブログをご覧ください。以下のセクションでは、いくつかのツール機能のハイライトもご紹介します。
一般的な「常に真」のプログラミングミスの検出
JavaScriptまたはTypeScriptで正規表現を使用し、次のようなコードを書いたとします。
const str = '...'
if (/\d+(\.\d+)?/) {
  ...
} else {
  ...
}
おや、正規表現に対して.test()を呼び出すのを忘れたようです。つまり、if条件式は常にtrueと評価されます。これは意図したものではありません。
この問題は指摘されれば明らかですが、このような間違いは驚くほど簡単に起こり、VS Codeでさえ実際のバグを引き起こしたことがあります!幸いなことに、TypeScriptはプログラム内で最も一般的な「常に真」のエラーを報告するようになりました。これには、決して値ではない値に対してif条件式をテストすることや、/abc/ ?? /xyz/のように片側が到達不能な条件式などが含まれます。
この機能の動作に関する詳細やその他の例については、TypeScriptリリースノートをご覧ください。
領域優先診断
非常に長いJavaScriptまたはTypeScriptファイルで作業していますか?領域優先診断のおかげで、型エラーの診断が少し早く表示されるようになるはずです。これは、現在の表示コードの診断を最初に取得して表示しようとすることを意味し、ファイルの残りの部分の診断がまだ計算中であっても同様です。
この最適化は、数千行にわたる複雑なファイルに最も関連します。小さなファイルでは、変更に気づかないかもしれません。
JavaScriptとTypeScriptのコミット文字の改善
コミット文字は、入力時に補完を自動的に受け入れることでコーディングを高速化できます。たとえば、JavaScriptやTypeScriptでは、.はよくコミット文字と見なされます。これは、myVariable.property.と入力するには、myv、.、p、.と入力するだけでよく、最初の.がmyVariableの補完を受け入れ、2番目の.がpropertyの補完を受け入れることを意味します。
これらのコミット文字はTypeScriptによって計算されるようになり、プログラムの構造をより適切に考慮できるようになりました。また、時間をかけてそれらに対するサポートを改善し続けることもできます。
コミット文字はデフォルトで有効になっていますが、editor.acceptSuggestionOnCommitCharacterをfalseに設定することで無効にできます。
自動インポートの除外パターン
新しいautoImportSpecifierExcludeRegexesを使用すると、正規表現を使用して特定のパッケージからの自動インポートを除外できます。たとえば、lodashのようなモジュールのサブディレクトリからの自動インポートを除外するには、次のように設定できます。
{
  "typescript.preferences.autoImportSpecifierExcludeRegexes": ["^lodash/.*$"]
}
これは、JavaScriptの場合はjavascript.preferences.autoImportSpecifierExcludeRegexes、TypeScriptの場合はtypescript.preferences.autoImportSpecifierExcludeRegexesを使用して構成できます。詳細については、TypeScript 5.6リリースノートを参照してください。
リモート開発
リモート開発拡張機能を使用すると、開発コンテナー、SSH 経由のリモートマシン、リモートトンネル、またはWindows 用 Linux サブシステム (WSL) をフル機能の開発環境として使用できます。
主なハイライトは次のとおりです。
- SSH/トンネル経由でKubernetesコンテナにアタッチ
- GPUの利用可能性を手動で指定
これらの機能の詳細については、リモート開発リリースノートをご覧ください。
拡張機能への貢献
Python
カバレッジ付きでテストを実行
VS Codeでカバレッジ付きでPythonテストを実行できるようになりました!カバレッジ付きでテストを実行するには、テストエクスプローラーのカバレッジ実行アイコンを選択するか、通常テスト実行をトリガーする任意のメニューから「カバレッジ付きで実行」を選択します。Python拡張機能は、pytestを使用している場合はpytest-covプラグインを、unittestの場合はcoverage.pyを使用してカバレッジを実行します。
カバレッジ実行が完了すると、行レベルのカバレッジについてエディターで線が強調表示されます。これらは、下部にある実行結果パネルの「テストカバレッジを閉じる」または最新のテスト実行の下にある「テストカバレッジを表示」を介して閉じたり再度開いたりできます。さらに、テストエクスプローラーの「テスト」タブの下に、ビーカーアイコンのある「テストカバレッジ」タブが表示されます。これは、コマンドパレット(⇧⌘P (Windows, Linux Ctrl+Shift+P))でテスト: テストカバレッジビューにフォーカスを使用しても移動できます。このパネルでは、ワークスペース内の各ファイルとフォルダーの行およびブランチのカバレッジメトリックを表示できます。
カバレッジ付きでPythonテストを実行する方法の詳細については、Pythonドキュメントをご覧ください。テストカバレッジに関する一般的な情報については、VS Codeのテストカバレッジドキュメントをご覧ください。
Pythonのデフォルト問題マッチャー
Python拡張機能にはデフォルトの問題マッチャーが含まれており、Pythonコードの問題追跡を簡素化し、より状況に応じたフィードバックを提供します。統合するには、task.jsonのタスクに"problemMatcher": "$python"を追加します。問題マッチャーは、タスクの出力をエラーや警告についてスキャンし、それらを「問題」パネルに表示して、開発ワークフローを強化します。
以下は、Pythonのデフォルトの問題マッチャーを使用するtask.jsonファイルの例です。
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Run Python",
      "type": "shell",
      "command": "${command:python.interpreterPath}",
      "args": ["${file}"],
      "problemMatcher": "$python"
    }
  ]
}
PythonターミナルREPLでのシェル統合
Python拡張機能には、pythonと入力する前、またはターミナルでPython REPLを起動する他の方法の前に実行されるPYTHONSTARTUPスクリプトのオプトインおよびオプトアウト設定が含まれるようになりました。オプトインすると、MacまたはLinuxでコマンドデコレーション、コマンドの再実行、最近のコマンドの実行などのターミナルシェル統合の機能を使用できます。これは、設定python.terminal.shellIntegration.enabledを介して有効にできます。
Pylance言語サーバーモード
現在のIntelliSenseエクスペリエンスとパフォーマンスに最適化された軽量エクスペリエンスのどちらかを選択できる新しい設定python.analysis.languageServerModeが追加されました。
IntelliSense機能の全範囲を必要とせず、Pylanceが可能な限りリソースに優しいことを好む場合は、python.analysis.languageServerModeをlightに設定できます。それ以外の場合は、現在のPylanceでのエクスペリエンスを継続するには、defaultに設定できます。
この新機能は、以下の設定のデフォルト値を上書きします。
| 設定 | lightモード | defaultモード | 
|---|---|---|
| "python.analysis.exclude" | ["**"] | [] | 
| "python.analysis.useLibraryCodeForTypes" | false | true | 
| "python.analysis.enablePytestSupport" | false | true | 
| "python.analysis.indexing" | false | true | 
上記の設定は、個別に変更してデフォルト値を上書きできます。
GitHubプルリクエスト
プルリクエストとissueの作業、作成、管理ができるGitHubプルリクエスト拡張機能がさらに進展しました。ハイライトについては、拡張機能の0.98.0リリースの変更履歴をご覧ください。
拡張機能の作成
デスクトップアプリからカスタムアロケーターを削除
このバージョンでは、バージョン1.78でデスクトップアプリケーション拡張機能ホストに追加されたカスタムアロケーターを削除しました。このカスタムアロケーターは、Electronランタイムに対してビルドされたV8サンドボックスと互換性のないNode.jsネイティブアドオンをサポートするためのブリッジとして機能します。追加のコンテキストについては、この追跡課題を参照してください。
この変更によって上位5000個の拡張機能が影響を受けないことを確認しました。ご自身の拡張機能またはその依存関係がこの変更によって影響を受ける場合は、以下の修復策を試してください。
- 拡張機能がn-apiを使用している場合、外部配列バッファを使用するとステータスnapi_no_external_buffers_allowedが返されます。その場合は、APIのコピーバージョンnapi_create_buffer_copyを使用するように切り替えることができます。
- 拡張機能がnode-addon-apiを使用している場合は、代替APIとコンパイル時設定については、このドキュメントを参照してください。
- コピーによるパフォーマンスコストを避けたい場合は、V8アロケーターを使用して、バッファのバッキングストアがV8サンドボックスと互換性があることを確認できます。
また、影響を受ける可能性のある拡張機能やネイティブアドオンを特定するためのテレメトリーも追加しました。これにより、拡張機能の作者に積極的に連絡を取り、可能な限り支援を提供できます。拡張機能が影響を受け、上記の提案のいずれも機能しない場合は、ディスカッションスレッドでコメントを残してください。喜んでお手伝いいたします。
Debug Adapter Protocol
デバッグアダプタープロトコルにおける変数表示と出力におけるテキストの色付けとスタイル設定の方法を正式化しました。色付けはANSIコントロールシーケンスを介して機能し、クライアントとデバッグアダプターの両方が、それぞれの初期化要求と機能でsupportsANSIStylingをサポートする必要があります。
プレビュー機能
複数のGitHubアカウント
VS Codeで複数のGitHubアカウントに同時にログインできるようになりました。
この機能はVS Code Insidersでデフォルトで有効になっています。VS Codeの安定版ビルドでは、github.experimental.multipleAccounts設定で有効にできます。
複数のアカウントが必要になる可能性のあるシナリオをいくつかご紹介します。
- 設定同期にアカウント1を使用し、GitHubプルリクエスト拡張機能にアカウント2を使用する
- GitHub拡張機能(プッシュ用)にアカウント1を使用し、GitHub Copilotにアカウント2を使用する
この機能を使用するには、ログインアクション(設定同期のような組み込み機能または拡張機能を使用)をトリガーするだけで、別のアカウントにログインするオプションが与えられます。この機能は、後でアカウントを変更する必要がある場合に、新しいアカウント設定クイックピックともうまく連携します。
ほとんどのものは既存の拡張機能で機能し続けるはずですが、一部の動作はまだこのマルチアカウントの世界と完全に連携しないかもしれません。改善の余地があると思われる場合は、それらの拡張機能で問題を報告してください。比較的新しいvscode.authentication.getAccounts('github') APIの助けを借りて、拡張機能は複数のアカウントを処理する多くの能力を持っています。
次のイテレーションでは、この機能をすべてのユーザーに対してデフォルトで有効にする予定です。
MSALベースのMicrosoft認証
Microsoft認証スタックをMSAL (Microsoft Authentication Library)を使用するように移行しています。これは大規模な作業でしたが、このイテレーションで大きな進展がありました。この作業はすべてのVS Codeクライアントに及ぶため、VS CodeとWeb版VS Codeが含まれます。
- 
vscode.devでは、すべてのMicrosoft認証要求にブラウザベースの MSAL.jsを有効にしました。つまり、vscode.devは完全にMSALに移行しました。
- 
デスクトップクライアントであるVS Codeでは、この機能はmicrosoft.useMsal設定の背後にあります。これは、VS Codeがオペレーティングシステムの認証状態を使用できるようにするブローカーフローに移行する予定があるため、現時点では設定の背後にあります。したがって、できるだけ中断を避けるために、この作業を広く有効にする前にまずその作業を行います。とはいえ、この新しい認証を試してみたい場合は、ぜひ試してフィードバックをお寄せください。 
このMSALへの移行の詳細な状況は、VS Code全体のIssue #178740で確認できます。
TypeScript 5.7
このリリースには、今後のTypeScript 5.7リリースに対する初期サポートが含まれています。詳細はTypeScript 5.7プランをご覧ください。
TypeScript 5.7のプレビュービルドの使用を開始するには、TypeScript Nightly拡張機能をインストールしてください。
提案されたAPI
言語モデル用ツール
LanguageModelTool APIのイテレーションを続けています。このAPIには主に2つの部分があります。
- 
拡張機能がツールを登録する機能。ツールは、言語モデルが使用することを目的とした機能です。たとえば、ファイルのGit履歴を読み取るなどです。 
- 
言語モデルがツールをサポートするメカニズム。例えば、拡張機能がリクエストを行う際にツールを渡す、言語モデルがツール呼び出しを要求する、拡張機能がツール呼び出しの結果を返すといったものです。 
このマイルストーンでは、ツールが実行前にユーザーの確認を要求する機能を追加しました。これは、何らかの副作用がある可能性のあるツールに役立ちます。
詳細やフィードバックについては、Issue #213274をご覧ください。
注: このAPIはまだ活発に開発中であり、変更される可能性があります。
エンジニアリング
VS CodeでESMが出荷
ついにVS Code安定版リリースでESM作業を出荷します。つまり、VS Codeコアのすべてのレイヤー(electron、node.js、ブラウザ、ワーカー)が、モジュールローディングとエクスポートにJavaScriptでimportとexport構文を使用します。レガシーなAMDローダーのすべての使用は無効化され、10月の負債解消週の一環として削除されます。
ESMへの移行により、起動パフォーマンスが大幅に向上します。AMDのオーバーヘッドが大幅に削減されるだけでなく、メインワークベンチのバンドルサイズも10%以上削減されます。

ESMへの完全な変換が完了したため、VS Codeのエンジニアリングシステムを改善する予定です。ESMを使用することで、多くの最新ツールが私たちに機能するようになり、近い将来、これに関する詳細を共有できることを非常に楽しみにしています。
注: 拡張機能はこの変更の影響を受けず、ESM経由でロードされません。詳細については、https://github.com/microsoft/vscode/issues/130367を参照してください。
NPMをデフォルトのパッケージマネージャーとして使用
2024年9月上旬に、microsoft/vscodeリポジトリでのパッケージ管理をyarnからnpmに切り替える作業を完了しました。この決定は、VS Codeの特定の要件に基づき、以下の基準を中心にしています。
- パフォーマンス: 以前はパフォーマンス上の理由でyarnに移行しましたが、npmも現在では当社の要件を満たすことができます。
- セキュリティ: 露出を制限し、依存するツールの数を減らすことで、サプライチェーンをより安全にします。
注目すべき修正点
- 226401 fileWatcherがCPUを200%+消費し続ける
- 10054 [WSL]: ポートタブが、localhostForwarding = falseの場合でも、WSL内のポートがローカルに転送されていると誤って報告する
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
問題追跡
問題追跡への貢献者
プルリクエスト
vscodeへの貢献者
- @BABA983 (BABA)
- ターミナルタブの選択が正常に機能しない問題を修正 PR #224394
- 折りたたみインポートアクションを登録 PR #227216
 
- @BlackHole1 (Kevin Cui): ci: リトライロジックの一貫性を確保 PR #226038
- @Cecil0o0 (hj): chore: 拡張機能ビルド時の未到達の無視項目を削除。 PR #227906
- @dangerman (Anees Ahee): 画像プレビューの透明度グリッドのスケーリングを修正 PR #226505
- @g-cappai (Gianluca Cappai): マークダウンプレビューでhtmlアンカーリンクが開かない問題を修正 PR #228633
- @gabritto (Gabriela Araujo Britto): [typescript-language-features] 拡張可能なホバー PR #228255
- @gjsjohnmurray (John Murray)
- プレビューエディタータブのホバーにアクションを追加 PR #226023
- ワークスペース拡張機能アクティベーション失敗メッセージのtypoを修正 PR #227348
- ステータスバーのデバッグパネルのツールチップの大文字小文字を修正 (fix #228088) PR #228089
 
- @henricryden: check-requirements-linux.shでのlibc.so.6の追加検索パス PR #227713
- @janssen-tiobe (janssen): 修正: 問題パネルのテーブルビューでのアグレッシブなURIエンコーディング PR #224841
- @jeanp413 (Jean Pierre): リロード後の初期ターミナル寸法が不正確な問題を修正 PR #225554
- @jjaeggli (Jacob Jaeggli): Ctrl+Alt+Spaceで詳細を提案するドキュメントフォーカス PR #190096
- @juliapz (Julia Pozdeeva): AUXウィンドウで検索ウィジェットが切り取られるのを防ぐ PR #229001
- @marrej (Marcus Revaj): # リファクタリングプレビューでファイル作成をレンダリング PR #226950
- @nojaf (Florian Verdonck)
- Workerを使用してノートブックをシリアル化 PR #226632
- ErrorNoTelemetryメッセージにIDを含める PR #226715
 
- @PhantomPower82: Getting Startedページを洗練 (fix #226991) PR #226994
- @rafamerlin (Rafael Merlin): インレイヒントの長さを設定可能にする PR #221276
- @rehmsen (オーレ)
- 順序依存性を避けるためにsetupでテスト変数を初期化する。 PR #226596
- ノートブックセルごとに複数のコメントウィジェットをサポート。 PR #226770
 
- 順序依存性を避けるために
- @remcohaszing (Remco Haszing): .gitignoreにtest-results.xmlを追加 PR #214238
- @repraze (Thomas Dubosc): fix: browser/hover.cssのflex-endの末尾を入れ替える PR #224102
- @segevfiner (Segev Finer): カスタムテキストエディターの拡張ホスト再起動を採用 PR #225985
- @SimonSiefke (Simon Siefke): fix: デバッグビューのメモリリーク PR #225334
- @sunnylost (sunnylost): extensions: テーブルセルコンテンツを段落要素でラップする PR #228365
- @tisilent (xiejialong): エディターGPUレンダリングのフォールバックを追加 PR #228414
- @tmm1 (Aman Karmani): macOSでcreateDirectoryWatcher(~/Library)のtsserverリクエストを無視する PR #227653
vscode-docsへの貢献
- @0dinD (Odin Dahlström): サポートされているJavaバージョンを更新 PR #7561
- @alexwkleung (Alex Leung): JupyterサーバーURL入力のスクリーンショットを更新 PR #7584
- @DiskCrasher (Mike): コード内の「!」の欠落を修正 PR #7595
- @gaganshera (Gaganjot Singh): prompt-crafting.mdを更新 PR #7555
- @harish-s-developer (Harish Srinivasan): 新しい「依存関係の管理」セクションを追加、typoを1つ修正 PR #7617
- @harrydowning (Harry Downing): プレリリースタグに関する誤った記述を削除 PR #7593
- @listsarah (Sarah Listzwan): Issue #7536をクローズ: 「組み込みプログラミング言語」を更新 PR #7539
- @mistymadonna (Misty Hays): Azure Extensionsのホームページを更新、新しいGetting Startedページを作成 PR #7520
- @muzimuzhi (Yukai Chou): Typo、欠落しているインラインコードマークアップを追加 PR #7589
- @partev: URLリダイレクトを修正 PR #7608
- @Sarke (Peter Stalman): 別のFlatpak/KDE5ウォレットの回避策 PR #7606
- @seaniyer (Sean): publishing-extension.mdを更新 PR #7540
- @vinistock (Vinicius Stock): 新しいドキュメントを指すようにRubyリンクを更新 PR #7607
- @wjandrea (William Andrea)
vscode-extension-samplesへの貢献
- @liu3hao (Weihao): アクティベーションイベントの欠落を追加 PR #1057
vscode-js-debugへの貢献者
- @lucacasonato (Luca Casonato): fix: DenoでNODE_OPTIONSを注入しない PR #2080
vscode-jupyterへの貢献者
- @rchiodo (Rich Chiodo): display_nameの変更もカーネル変更イベントを引き起こすようにする PR #15967
vscode-languageserver-nodeへの貢献者
- @StellaHuang95 (Stella): CodeActionでのllmGeneratedプロパティをサポート PR #1557
vscode-pull-request-githubへの貢献者
vscode-python-debuggerへの貢献者
- @rchiodo (Rich Chiodo): debugpy情報を最新の出荷バージョンに更新 PR #462
vscode-vsceへのコントリビューション
- @mlasson (Marc Lasson): オプションヒントのtypoを修正 PR #1046
vscode-wasmへの貢献
- @mlugg (Matthew Lugg): ストリームバグを修正 PR #196
language-server-protocolへの貢献者
- @aschaber1 (Alexander Schaber): chore: kubernetsからkubernetesへのtypoを修正 PR #2013
- @dawedawe (dawe): CompletionParamsのドキュメントのtypoを修正 PR #2019
- @didrikmunther (Didrik Munther): pullDiagnostics.mdのスペルミスを修正 PR #2022
- @InSyncWithFoo (InSync)
- @SamB (Samuel Bronson): servers.mdを更新: vscode-markdown-languageserverが移動しました PR #2012
- @sh-cho (Seonghyeon Cho): fluent-bit言語サーバー実装を追加 PR #2016
- @StellaHuang95 (Stella): CodeActionでのllmGeneratedプロパティをサポート PR #2020