2021年8月 (バージョン 1.60)
更新 1.60.1: この更新プログラムでは、これらの問題に対処しています。
更新 1.60.2: この更新プログラムでは、これらの問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Code の 2021 年 8 月リリースへようこそ。このバージョンには、気に入っていただけるであろう多くの更新が含まれています。主なハイライトの一部は次のとおりです。
- 自動言語検出 - VS Code に貼り付けたときにプログラミング言語を検出します。
- 組み込みの高速な括弧のカラー化 - 大規模なファイルに対して高速な括弧のマッチングとカラー化を行います。
- 設定エディターの構文ハイライト - 設定の説明コードブロックに対するリッチな構文ハイライト。
- カスタム端末グリフレンダリング - ボックス描画およびブロック要素文字のより良い表示。
- ウォッチビューでデバッグウォッチ値を設定 - デバッグセッション中にウォッチ値を変更します。
- ノートブックの改善 - Markdown リンクナビゲーション、大規模出力の高速レンダリング。
- JavaScript/TypeScript のインレイヒント - パラメーター名と型などのインラインヒント。
- ロックされたエディターグループのプレビュー - エディターグループをロックして、好みのエディターレイアウトを維持します。
- Python 拡張機能のテスト更新 - テストの検出、ナビゲーション、ステータスのサポートの改善。
- Web 拡張機能作成者ガイド - ブラウザーで VS Code 用に拡張機能を更新する方法を学びます。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
太平洋時間 9月2日木曜日の午前8時 (ロンドン時間午後4時) に開催される VS Code チームのライブストリームにご参加ください。このリリースの新機能のデモをご覧いただき、ライブで質問できます。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
Workbench
自動言語検出
前回のリリースでは、未保存ファイルに対して、その内容に基づいてファイルの言語モードを自動的に設定する実験的な機能を導入しました。自動言語検出機能は機械学習を使用して言語を推測し、機械学習モデルはマシン上で完全にローカルに実行されます。このモデルは、オープンソースの ML ライブラリである Tensorflow.js と、GitHub ユーザー @yoeo による Guesslang の ML モデルによって動作しています。
今回のリリースでは、自動言語検出を既定で有効にし、ファイル拡張子のないファイルも検出対象に含めるように拡張しています。ノートブックでは、言語ピッカーを使用して言語検出を簡単に要求する方法を提供しています。
この機能を追加したのは、VS Code の新規ユーザーの一部が言語モードの設定方法を知らず、VS Code の豊富な機能セット (言語のカラー化や拡張機能の推奨など) を利用するためにこれが必要であることを知らなかったためです。新規ユーザーが VS Code で利用できる言語機能や拡張機能をすばやく確認できるようにすることで、エディターに慣れるのに役立ちます。
さらに、無題のテキストエディターをスクラッチパッドとして使用するパワーユーザーは、明示的に言語モードを設定する必要がなくなり、ワークフローが合理化されることを願っています。
以下は、自動言語検出によって実現されるいくつかの楽しいシナリオです。
オンラインから例を取得し、無題のエディターに貼り付ける
テーマ: Panda Theme
"コードへのパイプ" 言語検出 (拡張子のないファイルの検出を示しています)
テーマ: Panda Theme
ノートブックの言語ピッカーの自動検出オプション
テーマ: Panda Theme
ターミナルエディターの確認ダイアログ
子プロセスが実行されているターミナルエディターを閉じるときに表示されるダイアログが、ターミナルエディター専用になり、ターミナルを「保存」する方法は提供されなくなりました。

復元に失敗してもエディターを閉じずに開いたままにする
以前は、ウィンドウの再読み込みまたはアプリケーションの再起動後にエディターの復元に失敗すると、正常に読み込まれるエディターが見つかるまでエディターが自動的に閉じられました。この動作により、エディターが閉じることによって注意深く作成されたエディターレイアウトが失われるという、不満の残る結果が生じていました。
今回のリリースでは、一度正常に開いたエディターは、復元に失敗しても閉じません。エディターは問題を示し、操作を再試行するオプションを提供します。

設定エディターのコードブロックの構文ハイライト
設定の説明にあるフェンス付きコードブロックが、構文ハイライトされるようになりました。

設定エディターを横に開く
openToSide 引数を使用してキーバインディングを設定することで、設定エディターをサイドグループで開くことができるようになりました。
{
  "key": "cmd+,",
  "command": "workbench.action.openSettings",
  "args": {
    "openToSide": true
  }
}
これは workbench.action.openSettingsJson コマンドでも機能します。
Editor
高性能の括弧ペアのカラー化
エディターがネイティブの括弧ペアのカラー化をサポートするようになりました

括弧ペアのカラー化は、"editor.bracketPairColorization.enabled": true を設定することで有効にできます。すべての色はテーマ設定可能で、最大 6 色を設定できます。
私たちは、CoenraadS による有名な Bracket Pair Colorizer 拡張機能のパフォーマンス問題に対処するために、この機能を実装しました。
これで、巨大なドキュメントの変更も即座に反映されるようになりました。
オートコンプリートのインライン提案
オートコンプリートウィジェットが表示されているとき、インライン提案は提案プレビューを拡張できるようになりました。オートコンプリートウィジェットで選択された提案がインライン補完プロバイダーによって拡張できる場合、その拡張は斜体で表示されます。Tab を 1 回押すと、オートコンプリート提案のみが受け入れられます。2 回目に Tab を押すと、インライン提案が受け入れられます。
この機能を使用するには、提案プレビューが有効になっている必要があります ("editor.suggest.preview": true)。
Peek ビューの更新
Peek ビューを視覚的に刷新し、他のエディタービューと統一しました。




ターミナル
ボックス描画文字とブロック要素文字のカスタムレンダリング
GPU アクセラレーションがオンの場合 (terminal.integrated.gpuAcceleration)、ボックス描画文字とブロック要素文字はフォントを使用する代わりに、ピクセルパーフェクトなカスタムグリフを使用するようになりました。これは、たとえば、ターミナルで行の高さや文字間隔を設定しても、ボックスがギャップなしで描画されることを意味します。
 

以下は、セクションの周囲のボックス描画文字と、グラフのブロック要素を示すターミナルアプリ Zenith の例です。

これは、"terminal.integrated.customGlyphs": false を設定することで無効にできます。
特定のフォントでのアンダースコアのレンダリングの改善
これまでターミナルでのアンダースコアのレンダリングにはいくつかの問題があり、そのほとんどは WebGL レンダラー (デフォルト) に切り替えることで解決されました。ただし、Linux の一部のフォントでは、アンダースコア文字がセルの境界より下に予期せず描画されるという例外が 1 つありました。
下の行のアンダースコアがセルより下にレンダリングされている点に注目してください。

これはほとんどの場合問題なく機能しますが、一番下の行ではキャンバスの境界外に描画されるため失敗します。
この問題は、このようなフォントを検出し、アンダースコアのテクスチャをセルの境界内に収まるまで上にシフトさせることで回避しています。この解決策はキャンバスレンダラーにも適用されます。以前は、行の重複を避けるために行をクリップする方法のため、どの行でもアンダースコアが表示されませんでした。

ウィンドウのリロード後の再接続が高速化
以前は、ウィンドウをリロードする際、ターミナルのバッファの状態を解析するのに最大 300 ミリ秒かかる可能性があり、破損の可能性もありました。複数のビジーなターミナルでは、これがすぐに累積してしまう可能性がありました。これを解決するために、バッファを復元する方法が変更され、pty ホストで多数の最近の生ターミナルイベントを記録するのではなく、pty ホストでヘッドレスターミナルフロントエンドを維持し、すべてのデータをそこに書き込むようになりました。
このアプローチにはいくつかの利点があります。
- 復元するスクロールバックの量を細かく調整できます。デフォルトは 100 になり、速度とデータ量のバランスが良好です。スクロールバックの量は terminal.integrated.persistentSessionScrollback設定で変更できます。
- xterm.js の高速パーサーのおかげで、CPU 使用率への影響は最小限に抑えられ、pty ホスト全体のメモリ使用量も削減されるはずです。
- 以前は見逃される可能性があり、バッファ破損の原因となっていたターミナルモードが明示的に復元されるようになりました。
- ターミナルのバッファは常にそのサイズと同期しているため、コストのかかるリサイズイベントを再生する必要がなくなりました。
- 復元は比較的迅速に行われるため、すべてが単一のフレーム内で処理されます。これにより、部分的に復元されたターミナルをレンダリングして速度をさらに低下させるために、貴重な CPU 時間が無駄になることはありません。
この新しい実装が提供する速度向上は、ターミナルの数、ハードウェア、ターミナルバッファサイズ、ターミナルで何が起こっていたかなど、多くの要因に依存します。完全なターミナルバッファを復元する場合の概算速度向上は、約 5〜10 倍になるはずです。
新しい xterm-headless パッケージも npm で公開しましたので、ご自身のプロジェクトでこの作業を使用できます。
デバッグ
ウォッチビューでの値の設定
ウォッチビューでウォッチ式の値を設定できるようになりました。コンテキストメニューの値の設定アクションを使用します。

値の設定を有効にするには、デバッグ拡張機能がこの機能にオプトインする必要があります。今のところ、JS-debug、C#、および C++ 拡張機能がこれをサポートしていますが、他のデバッグ拡張機能もすぐに追随する予定です。
マイナーな UI の改善
- 
VS Code は、変数ビュー、ウォッチビュー、デバッグホバーでも値のリンクを検出するようになりました。変数の値がリンクの場合、クリックするだけでそのリンクをたどりやすくなります。 
- 
すでに実行中のデバッグセッションの別のインスタンスを開始する場合、誤って2つのセッションが開始されるのを防ぐために、モーダルの確認ダイアログが表示されるようになりました。 
- 
エディターのブレークポイントガターで無効になっているブレークポイントをクリックすると、ブレークポイントが削除される代わりに有効になります。 
- 
デバッグセッションがアクティブな場合、エディターのブレークポイントガターのコンテキストメニューで行まで実行アクションが利用可能になりました。 
新しい設定
- 
デバッグセッション中に誤ってウィンドウを閉じないようにしたい場合は、新しい設定 debug.confirmOnExitを有効にできます。これをalwaysに設定すると、ウィンドウを閉じるときにデバッグセッションを停止することを確認するプロンプトが表示されます。 
- 
新しい設定 debug.console.acceptSuggestionOnEnterは、デバッグコンソールでEnterキーを押したときに提案を受け入れるかどうかを制御します。Enterキーはデバッグコンソールに入力された内容を評価するためにも使用されるため、このオプションはユーザーがEnterキーを押したときに何が起こるかをより詳細に制御できるようにします。
JavaScriptデバッグ
レガシー Node.js デバッガーが廃止されました
VS Code には、長年組み込みの Node.js デバッガーが含まれており、個別の Chrome デバッガーも公開されていました。昨年、Node.js と Chrome 用の新しいデバッガーを導入し、VS Code 1.47 (2020 年 7 月) 以降、それがデフォルトとなり、「オプトアウト」オプションが提供されていました。
今回のリリースで、古いデバッガーは製品から削除され、マーケットプレイスで非推奨としてマークされました。新しい JavaScript デバッガーをオプトアウトしなかった VS Code ユーザーの大多数の方には、何も変更はありません。
Node.js 6 プログラムをデバッグするなど、古いデバッガーが必要な場合は、[非推奨] Node Debug または [非推奨] Debugger for Chrome 拡張機能をインストールし、それぞれ legacy-node または legacy-chrome 起動タイプを使用できます。
非同期関数および Node.js 内部でのステップ実行の改善
デバッガーの skipFiles を設定することで、非同期関数のステップ実行中によくヒットする Node.js 内部コードなど、特定のコードへのステップインを回避できます。
ただし、Node.js は「ブラックボックス化された」スクリプトを扱う際に常に正しい動作を示すわけではないため、今回のイテレーションではデバッガーに「合成ブラックボックス化」を導入しました。これにより、Node.js プログラム、特に非同期関数にステップインする際の信頼性が大幅に向上するはずです。
次回のリリースでは、デバッガーが Node.js の内部をデフォルトでスキップするようにする予定です。
インストーラー
サポートされているファイルタイプに VS Code を既定で登録
Windows 11では、プログラムから開くがメニューの最上位に、開くと一緒にグループ化される新しいファイルエクスプローラーのコンテキストメニューが導入されました。この更新により、利用可能なすべてのエディターを簡単に見つけ、デフォルトを変更できるようになります。
新しいベストプラクティスに従い、Windows のインストール中に VS Code のチェックボックス VS Code を関連付けられたファイルタイプの既定のエディターとして登録 がデフォルトでチェックされるようになりました。また、関連付けられたファイルタイプのリストを見直し、頻繁に開かれるファイルタイプをさらに含めるように拡張しました。
Windows 11 の Microsoft Store
間もなく登場する Windows 11 では、新しい Microsoft Store がより伝統的なアプリケーションタイプとインストーラーをサポートできるようになります。Windows Insider プログラムを通じてすでに Windows 11 をテストしている場合は、Store で検索することで、最新リリースの VS Code を今すぐインストールできます。インストールすると、当社の Web サイトからユーザーインストールとして利用できるのと同じ VS Code が利用でき、更新は現在と同じようにアプリ内で行われます。
ノートブック
Markdown セル間のリンク
ノートブックが Markdown セル間のリンクをサポートするようになりました。
Markdown セルのヘッダーへのリンクは、次のように作成できます。
[Link text](#_header-slug)
header-slug は、ヘッダーの小文字のテキストで、スペースや特殊文字は - に置き換えられます。上記の例のリンクは、ヘッダー # Header Slug に移動します。
大規模な出力処理におけるパフォーマンスの向上
ノートブックでの大規模な出力の処理方法を最適化し、パフォーマンスを大幅に向上させました。
舞台裏では、VS Code はノートブックの出力を Uint8Arrays を使用してバイナリデータとして保存します。以前は、拡張機能ホストプロセスとレンダラープロセス間で出力データを転送する際、データはまず数値の配列に変換され、その後 JSON にシリアル化されていました。
これがパフォーマンスに悪い理由を理解するために、Hello Code! というテキストを出力するノートブックを考えてみましょう。これは内部的には Uint8Array として保存されます。
new Uint8Array([72, 101, 108, 108, 111, 32, 67, 111, 100, 101, 33]);
このデータの長さは 11 バイトです。古い実装では、バイナリデータを JSON 文字列に変換していました。
'[72,101,108,108,111,32,67,111,100,101,33]';
この文字列は 41 バイト長で、元のデータの 3.5 倍以上のサイズです!これは転送する余分なバイトが非常に多く、受信側は現在、その文字列を JSON として解析して Uint8Array に戻す必要があります。この解析は、数十 MB のサイズのノートブック出力にとって重大なボトルネックになる可能性があります。
新しい実装では、ノートブックの出力は転送中にバイナリデータとして保持されます。この実装の詳細については、プルリクエストで詳しく読むことができます。
この修正により、大規模な出力が保存されたノートブックの読み込みが大幅に改善されるだけでなく、実行中にノートブックが大規模な出力を生成する際のパフォーマンスも向上します。
onNotebook アクティベーションイベントの改善
VS Code は、ワークスペースでノートブックが開かれたときに onNotebook:{type} および onNotebook:* イベントを発行するため、これらのイベントをリッスンしているノートブック拡張機能がアクティブ化できます。以前は、VS Code はこれらの 2 つのイベントをリッスンしているすべての拡張機能がファイルを開く前に待機していましたが、現在は特定のノートブックのシリアライザーが登録されるのを待機するだけです。たとえば、ユーザーが新しいワークスペースで ipynb ファイルを開くと、組み込みの ipynb シリアライザー拡張機能がアクティブ化され、ファイルがすぐに開かれます。同時に、VS Code は Jupyter、.NET Interactive、Julia などの他のすべての拡張機能にアクティベーションイベントを発行します。他の拡張機能のアクティベーションは、高速なノートブックの起動を保証するためにファイル操作を遅らせることはありません。
ノートブックレイアウトのカスタマイズ
エディターのツールバーから直接ノートブックのレイアウト設定をカスタマイズできるようになりました。

言語機能
TypeScript 4.4
VS Code には TypeScript 4.4 が含まれるようになりました。この更新により、静的ブロックや新しい厳密性オプションなど、多くの新しい言語機能と改善がサポートされます。また、新しいツール機能の改善と、いくつかの重要なバグの修正も行われています。
TypeScript 4.4 の詳細については、TypeScript ブログをご覧ください。
JavaScript および TypeScript のインレイヒント
TypeScript 4.4 の最も重要な新しいツール機能は、インレイヒントのサポートです。インレイヒントは、ソースコードに追加のインライン情報を追加して、コードの動作を理解するのに役立ちます。
たとえば、パラメータ名インレイヒントは、関数呼び出しのパラメータ名を表示します。

これにより、各引数の意味を一目で理解でき、ブール値のフラグを取る関数や、混同しやすいパラメーターを持つ関数に特に役立ちます。
パラメーター名のヒントを有効にするには、javascript.inlayHints.parameterNames.enabled または typescript.inlayHints.parameterNames.enabled の設定を行います。選択できる値は次の 3 つです。
- none- パラメーターインレイヒントを無効にします。
- literals- リテラル (文字列、数値、ブール値) のインレイヒントのみを表示します。
- all- すべての引数にインレイヒントを表示します。
さらに、VS Code は、JavaScript および TypeScript コード内の暗黙的な型情報を表示するインレイヒントも提供します。
変数型のインレイ ヒント は、明示的な型アノテーションを持たない変数の型を表示します。
設定 - javascript.inlayHints.variableTypes.enabled および typescript.inlayHints.variableTypes.enabled

プロパティ型のインレイ ヒント は、明示的な型アノテーションを持たないクラス プロパティの型を表示します。
設定 - javascript.inlayHints.propertyDeclarationTypes.enabled および typescript.inlayHints.propertyDeclarationTypes.enabled

パラメーター型のヒント は、暗黙的に型付けされたパラメーターの型を表示します。
設定 - javascript.inlayHints.parameterTypes.enabled および typescript.inlayHints.parameterTypes.enabled

戻り値の型インレイ ヒント は、明示的な型アノテーションを持たない関数の戻り値の型を表示します。
設定 - javascript.inlayHints.functionLikeReturnTypes.enabled および typescript.inlayHints.functionLikeReturnTypes.enabled

インレイヒントは今後も改善していく予定ですので、新しい機能についてご意見があればぜひフィードバックをお寄せください!
JavaScript ファイルのスペル提案
VS Code が JavaScript ファイルの単純なスペルミスを検出するようになりました。

スペル提案は、それが実際の誤りであるとかなり高い確信がある場合にのみ表示され、IntelliSense エンジンが理解できないコードパターンだけではありません。この詳細については、この機能を追加した PR で読むことができます。
これらの提案は、次の設定で無効にすることもできます。
"javascript.suggestionActions.enabled": false
より包括的なチェックを行うには、JavaScript コードで完全なセマンティックチェックを有効にすることを試してください。これはより多くのエラーを検出するのに役立つだけでなく、いくつかの便利なクイックフィックスも有効にします。
typescript.tsserver.useSyntaxServer
新しい typescript.tsserver.useSyntaxServer 設定を使用すると、コードの折りたたみなど、構文関連の操作を高速に処理するための専用サーバーを TypeScript が起動するかどうかを制御できます。これは、現在非推奨となっている typescript.tsserver.useSeparateSyntaxServer 設定に代わるものです。
可能な値は次のとおりです。
- auto- 完全なサーバーと、構文操作専用の軽量なサーバーの両方を起動します。構文サーバーは、コードの折りたたみなどの構文操作を高速化し、プロジェクトの読み込み中に IntelliSense を提供するために使用されます。(デフォルト)
- always- すべての IntelliSense 操作を処理するために、軽量な構文サーバーを使用します。この構文サーバーは、開いているファイルに対してのみ IntelliSense を提供できます。
- never- 専用の構文サーバーを使用しません。すべての IntelliSense 操作を処理するために単一のサーバーを使用します。
プレビュー機能
ロックされたエディターグループ
エディター領域でのターミナルの導入により、ターミナルエディターがファイルエディターに簡単に、または誤って置き換えられることに不満を感じているユーザーからの報告がありました。デフォルトでは、ファイルは常にアクティブなエディターグループで開かれるため、ターミナルがアクティブであっても、ファイルが開かれてターミナルが隠されていました。
ロックされたエディターグループは、この問題に対処する新しい方法を提供します。ターミナルだけでなく、任意のエディターにも適用できます。複数のエディターグループが開いている場合、新しいコマンドを使用するか、「...」オーバーフローメニューからロックできるようになりました。

ロックされたグループは、ロックされていないグループとは異なる動作をします。
- ユーザーが明示的に移動しない限り (たとえば、ドラッグ & ドロップによる)、新しいエディターはロックされたグループでは開きません。
- エディターがロックされたグループを開くのをスキップした場合、最も最近使用されたロックされていないグループで開かれるか、ロックされたグループの横に新しいグループが作成されます。
- エディターグループのロック状態は、再起動後も保持され、復元されます。
- 空のグループもロックできるため、より安定したエディターレイアウトが可能になります。
- ロックされたグループは、アクションツールバー (右上) のロックアイコンで示されます。

ロックされたエディターグループがどのように動作するかを以下のデモで確認してください。Markdown プレビューがアクティブであっても、新しいファイルは左側のエディターグループで開かれます。
この機能に追加されたコマンドは次のとおりです。
- workbench.action.experimentalLockEditorGroup
- workbench.action.experimentalUnlockEditorGroup
- workbench.action.experimentalToggleEditorGroupLock
新しいコンテキストキー activeEditorGroupLocked を使用すると、グループのロック状態に応じてコマンドを条件付きでバインドできます。
注: 関連する設定とコマンドは、ロックされたエディターグループのデザインが確定するまで実験的なものです。この新機能についてのご意見をお待ちしておりますので、問題の報告をお気軽にお寄せください。
エディターグループの自動ロック
新しいロックされたエディターグループの概念に基づき、新しい workbench.editor.experimentalAutoLockGroups 設定により、エディターが開かれたときにグループを自動的にロックするエディターを選択できます。これは、エディターが空または新しいグループで最初に開かれた場合にのみ適用されます。
ターミナルは、デフォルトで新しいグループを自動的にロックするように設定されています。以下の短いビデオでは、ターミナルがアクティブであっても、ターミナルから選択されたファイルは左側のエディターグループで開かれます。
Markdown プレビューがグループを自動的にロックするようにするには、experimentalAutoLockGroups 設定に mainThreadWebview-markdown.preview: true を追加します。
次のマイルストーンでは、エディターの識別子を知らなくてもエディターを選択できるように、設定の UX の改善に取り組む予定です。関連する設定とコマンドは、ロックされたエディターグループのデザインが確定するまで実験的なものです。繰り返しになりますが、皆様からのフィードバックをお待ちしております。
「ファイル名で検索」クイックピックでの引用符のサポート
今回のイテレーションでは、「ファイル名で検索」クイックピック (⌘P (Windows, Linux Ctrl+P)) で、検索文字列を引用符で囲むことで、あいまい検索結果を除外する機能を追加しました。
この機能が輝くシナリオ
クエリが数文字しかない場合
結果の「ごちゃごちゃ」を減らしたい場合
この引用符による検索体験は、ほとんどの検索エンジンが同様のメカニズムを使用しているため直感的で気に入っていますが、皆様からのフィードバックをお待ちしております。また、issue #131431 で議論されている他のアプローチも検討しています。
拡張機能への貢献
Jupyter
行ごとに実行
VS Code が Jupyter ノートブックで行ごとに実行機能をサポートするようになりました。これは、セルのコードを 1 行ずつ実行できるシンプルなデバッグモードです。試すには、選択したカーネルとして ipykernel v6+ がインストールされていることを確認し、行ごとに実行ボタンを選択します。
デバッグ
VS Code の完全なデバッグ機能を使用して Jupyter ノートブックをデバッグするための実験的なサポートも追加されました。試すには、選択したカーネルとして ipykernel v6+ がインストールされていることを確認し、"jupyter.experimental.debugging": true を設定し、ブレークポイントを設定し、セルをデバッグコマンドを選択します。
Jupyter キーマップ
Jupyter クラシックのキーバインディングは、別の Jupyter キーマップ拡張機能に抽出されました。マーケットプレイスから別のノートブックキーバインディングのセットを使用したい場合は、この拡張機能を無効にできます。
Python
テストインターフェースの刷新
新しいテスト API のおかげで、Python 拡張機能はテスト機能を刷新しました。テストの検出、ナビゲーション、ステータスレンダリングがより安定した体験になり、テストの検索、選択したテストの実行、前回実行したテストの再実行などの新機能も利用できるようになりました!

エディターからターミナルで Python ファイルを実行およびデバッグ
Python 拡張機能を使用して、エディターから直接ターミナルで Python ファイルを実行およびデバッグできるようになりました。
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues 拡張機能で、すべてのコメントを展開・折りたたむという多くの要望が寄せられていた機能が利用可能になりました。すべてのコメントは、GitHub Pull Requests: Expand All Comments および GitHub Pull Requests: Collapse All Comments コマンドで展開・折りたたみできます。また、展開・折りたたみ状態を制御する githubPullRequests.commentExpandState 設定もあります。最後に、コメント UI 内からすべてのコメントを折りたたむこともできます。

すべての新機能と更新については、拡張機能の 0.30.0 の変更ログをご覧ください。
拡張機能作成
Web拡張機能
VS Code がブラウザーで実行されている場合、拡張機能はブラウザーで実行されている拡張機能ホストに読み込まれます。「Web 拡張機能ホスト」はブラウザーによって制約されており、拡張機能はローカルファイルシステムやプラットフォーム機能にアクセスできません。拡張機能の作成者が、Web 用 VS Code での実行をサポートするように拡張機能を更新するのを支援するために、Web 拡張機能作成ガイドが用意されました。ここでは、Web で最も機能する拡張機能の種類、VS Code API へのアクセス方法、仮想ファイルシステムの操作方法を学びます。
Web 拡張機能ガイドに加え、yo code 拡張機能ジェネレーターにWeb 拡張機能をスキャフォールドするオプションが追加され、コマンドラインから Web 拡張機能をテストするための @vscode/test-web モジュールもサポートされました。
Web 版 Visual Studio Code の動作をまだご覧になっていない方は、GitHub リポジトリの< > Code タブで「.」(ピリオドキー)を押すと、Web ベース版の VS Code が起動し、ソースコードを閲覧・編集できます。
コマンドの短いタイトル
commands 貢献ポイントにより、拡張機能はコマンドの UI プロパティ (タイトル、カテゴリ、アイコンなど) を定義できます。一方、メニューはコマンドを表示する「場所」であり、コマンドの UI プロパティの一部またはすべてを表示する場合があります。たとえば、一部のメニューはアイコンのみをレンダリングし、その他はタイトルまたはカテゴリとタイトルをレンダリングします。拡張機能の作成者にとって、グローバルメニューとローカルメニューの両方で同様に機能するコマンドタイトルを考案するのは難しい場合があります。たとえば、コマンドパレットはコンテキストメニューよりも多くの単語を表示できます。
異なるタイトルを許可するために、新しい shortTitle プロパティが追加されました。これにより、コマンドは UI に応じてうまく機能する短いタイトルを提供できます。たとえば、コマンドパレットではノートブック: すべてのセル出力をクリアとなり、ノートブックツールバーでは短いすべてクリアとなります。
アプリケーションホストが環境名前空間に追加されました
.env 名前空間にアプリケーションホスト appHost プロパティが追加されました。appHost により、拡張機能開発者は VS Code がホストされている環境を判断できます。例としては、デスクトップ、GitHub Codespaces、github.dev、vscode.dev などがあります。
ノートブックレンダラーの RendererContext.workspace.isTrusted
ノートブックレンダラーに渡されるコンテキストオブジェクトの新しい workspace.isTrusted プロパティにより、拡張機能の作成者は現在のワークスペースが信頼されているかどうかを確認できます。
import type { ActivationFunction } from 'vscode-notebook-renderer';
export const activate: ActivationFunction<void> = (ctx) => {
  return {
    renderOutputItem: (outputInfo, element) => {
      if (ctx.workspace.isTrusted) {
        // Render normally. Still take precautions to avoid script injection and
        // only enable as much functionality as your renderer needs.
      } else {
        // Only render safe content. Always make sure it has been properly sanitized.
      }
    }
  }
};
プラットフォーム固有の拡張機能
プラットフォーム固有の拡張機能について進捗がありました。これにより、拡張機能の作成者は異なるプラットフォーム (Windows、macOS、Linux) 用に個別の拡張機能バージョンを作成できます。この機能についてマーケットプレイスチームと協力し、ソリューションを最終決定しました。このマイルストーンで実装を開始し、間もなく拡張機能の作成者に提供する予定です。issue #23251 で最新情報を確認し、フィードバックを提供できます。
更新された codicon
次の新しいアイコンがcodicon ライブラリに追加されました。

- folder-library
- run-errors
ウォークスルーへの貢献の更新
テーマ設定可能な SVG をウォークスルーのステップメディアとして使用
ウォークスルーのステップで、media オブジェクト内に svg プロパティを指定できるようになりました。これにより、スケーリングサポートが向上するだけでなく、SVG はテーマトークンへのアクセスを提供し、メディアがワークベンチの他の部分と視覚的に調和することができます。詳細については、webview コンテンツのテーマ設定に関するガイドを参照してください。
ウォークスルーの対象となるファイルの宣言
ウォークスルーがオプションの featuredFor パラメーターをサポートするようになりました。これは、特定のウォークスルーが適用されるファイルタイプをリストアップします。これらのファイルがワークスペースフォルダーで見つかった場合、ウォークスルーはより高い視覚的優先度でレンダリングされます。
タスクのデフォルトグループ API
TaskGroup の isDefault プロパティが確定しました。拡張機能はタスクを取得し、タスクの group の isDefault プロパティを読み取って、タスクがそのグループのデフォルトであるかどうかを判断できるようになりました。
デバッガー拡張機能の作成
「DebugSessionOptions」の新しい「managedByParent」プロパティ
新しいフラグ managedByParent が DebugSessionOptions 型に追加されました。startDebugging API に渡されると、disconnect や restart などのライフサイクル要求が新しく作成されたセッションに送信されるか、その親セッションに送信されるかを制御します。
Debug Adapter Protocol の「showUser」プロパティ
launch リクエストが失敗した場合、VS Code はデバッグアダプターからのレスポンスで送信された showUser プロパティを尊重するようになりました。showUser プロパティが提供されており、それが false の場合、VS Code はエラーを含むモーダルダイアログを表示しません。showUser プロパティが欠落しているか true の場合、VS Code は以前と同様に動作し、エラーダイアログを表示します。
他の Debug Adapter Protocol (DAP) リクエストについては、変更はありません。showUser が true の場合、エラーは通知を使用して表示されます。それ以外の場合は、ユーザーには何も表示されません。
VS Code は、「noDebug」デバッグセッションのブレークポイントを登録しなくなりました。
DAP の launch リクエストの noDebug プロパティが true に設定されている場合、VS Code はブレークポイント登録 DAP リクエスト (setBreakpoints、setExceptionBreakpoints、setDataBreakpoints、setFunctionBreakpoints、setInstructionBreakpoints) を呼び出しません。
VS Code が DAP の「setExpression」リクエストをサポート
デバッグアダプターが setExpression リクエスト (supportsSetExpression 機能が true) を実装している場合、VS Code は次の 2 つの状況で setExpression を使用します。
- VARIABLES および WATCH ビューで、変数の値を変更する場合、デバッグアダプターが setVariableリクエスト (supportsSetVariable機能が欠落しているかfalse) をサポートしておらず、変数がevaluateNameプロパティを持ち、編集可能である場合 (VariablePresentationHintのreadOnly属性がtrueではない場合)。
- WATCH ビューで、代入可能な式の値を変更する場合、ウォッチ式が編集可能である場合 (VariablePresentationHintのreadOnly属性がtrueではない場合)。
DAP エラーメッセージでの「launch.json を開く」ボタンの抑制
Debug Adapter Protocol では、ErrorResponse の Message が url (メッセージに関する追加情報が記述されている場所) と urlLabel (URL を開くための UI としてユーザーに提示されるラベル) を返すことができます。VS Code がモーダルダイアログでユーザーにメッセージを表示すると、urlLabel をキャプションとするボタンが表示されます。このリリース以前は、VS Code は「launch.json を開く」とキャプションされたボタンも追加していました。メッセージの url が 'command' スキーム (例: command:myExtension.fixError) を使用している場合、そのボタンは追加されなくなりました。
Debug Adapter Protocol
新しい「memory」イベントがリリースされました。
memory イベントは完成し、Debug Adapter Protocol のバージョン 1.49 および対応する npm モジュールで利用可能になりました。デバッグアダプターが initialize リクエストの supportsMemoryEvent 機能で true の値を受け取った場合、デバッグアダプターは memory イベントを発行して、特定のメモリ範囲が更新されたことを示すことができます。
提案された拡張API
各マイルストーンには新しい提案された API があり、拡張機能の作成者はそれらを試すことができます。いつものように、皆様のフィードバックをお待ちしております。提案された API を試すには、次の手順を実行する必要があります。
- 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
- 拡張機能のpackage.jsonファイルに次の行が必要です:"enableProposedApi": true。
- 最新バージョンのvscode.proposed.d.tsファイルをプロジェクトのソース場所にコピーします。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。
型階層のサポート
拡張機能がシンボルのスーパークラスとサブクラスを提供できるようにする TypeHierarchyProvider の API 提案があります。API は試用可能であり、問題を見つけたり提案がある場合は、VS Code リポジトリに入力してください。
どこでもターミナルを作成
提案されているターミナルロケーション API を使用すると、パネルとエディター領域の両方にターミナル分割を作成できます。
ターミナルが「操作された」かどうかのクエリとイベント
Terminal.state および window.onDidChangeTerminalState の新しい提案された API は、ターミナルが「操作された」かどうかをクエリすることを可能にします。操作とは、データがプロセスに送信されたことを意味し、さまざまな理由で発生する可能性がありますが、主なものはキーボード入力です。
QuickPickItem のボタン
QuickPickItem にボタンを追加して処理するための提案された API があります。これにより、拡張機能が Quick Pick でより豊富なユーザーインタラクションを提供できるようになることを期待しています。

ぜひお試しいただき、ご意見をお聞かせください。ただし、Quick Pick のスクロール位置に関する既知の問題が現在あり、この新しい提案された API によってそれが増幅される可能性があることに注意してください。この問題に対処するための適切な API セットに取り組んでいます。この問題にご参加いただき、ご意見をお聞かせください。
テストタグ
テストタグは、テストを整理する方法と、どのテストが実行可能であるかを示す方法の両方を提供する提案された API です。
非エラーのテスト出力
テスト API はテスト失敗メッセージをサポートしていますが、以前は特定のテストケースと関連付ける非エラー出力を関連付ける方法がありませんでした。オプションの TestItem と location を TestRun.appendOutput メソッドに渡すことで、これを実現する方法を評価しています。ご意見があれば、issue #129201 にフィードバックをお願いします!
インライン補完プロバイダー: オートコンプリートウィジェットとのインタラクション
InlineCompletionContext には、オートコンプリートウィジェットで現在選択されている提案の詳細を含む新しいフィールド selectedCompletionInfo があります。また、ユーザーがオートコンプリートウィジェットで選択された項目を変更するたびに、InlineCompletionItemProvider がインライン提案を要求します。インライン提案が選択された提案項目を拡張する場合、拡張は斜体で表示されます。
エンジニアリング
RHEL7 および Centos7 ディストリビューションのサポートの修正
VS Code バージョン 1.53 では、新しい Electron バージョンを使用するようにビルドイメージを更新したため、ネイティブモジュールの CXXABI 要件が変更され、一部のディストリビューションで rpm パッケージが破損しました (issue #115784)。Electron v13 への更新により、ネイティブモジュールをランタイムと同じコンパイラツールチェーンでビルドできるようになりました。具体的には、Clang を使用し、ランタイムから libcxx を静的にリンクするようになりました。これにより、バイナリサイズが約 10 MB 増加するだけで CXXABI 要件を回避し、これらのディストリビューションのサポートを復活させることができます。Insiders でのテストにご協力いただき、ご辛抱いただきありがとうございました。
ドキュメント
VS Code の Julia
新しい「Visual Studio Code の Julia」トピックでは、Julia 拡張機能を使用して VS Code でJulia プログラミング言語をサポートする方法を説明しています。Julia 拡張機能には、コード補完、コードナビゲーション、デバッグなどの豊富な言語機能に加えて、統合された REPL とプロットナビゲーターが含まれています。

Azure Machine Learning
VS Code の Azure Machine Learning の概要を読むと、Azure Machine Learning 拡張機能を使用して、VS Code から直接 Azure Machine Learning のクラウドベースの機械学習モデルを操作する方法を学ぶことができます。
注目すべき修正点
- 82489: AltGr キー使用時のキーボード入力の誤り
- 115945: ツールバーがドックされているときにデバッグツールバーが提供するコマンドが不足している
- 118196: デバッグセッション再開時に引数リストの要素が更新されない
- 121201: iPad でメニューの選択が正しくレンダリングされない
- 124128: デバッグ停止時に拡張機能開発ウィンドウが閉じられない
- 125259: デバッグが開始前に launch.json を保存しない
- 126102: SkipFiles はスキップするファイルを一時的に開き、遅延を引き起こす
- 126911: 拡張機能デバッグ: デバッグセッション停止時にウィンドウが閉じない
- 128484: debug: 起動失敗時のモーダルダイアログを無効にするオプション
- 129019: 閉じた状態で開始されたツリービューは、内容を表示するために別の更新 (または再オープン) が必要
- 129469: 設定エディターの入力ボックスを大きくできる
- 129645: 設定 UI でコードブロック構文ハイライトを有効にする
- 129844: markdownEnumDescriptions が設定 UI で markdown <backtick>##<backtick> を削除せず、settings.json で ## を削除しない
- 130265: Node デバッガーが未処理のプロミス拒否で停止しない
ありがとうございます
最後に、今月 VS Code に貢献してくださった以下の皆様に、心からの感謝を申し上げます。
問題追跡への貢献者
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- CodeCrazy-ywt (@CodeCrazy-ywt)
- Sandeep Rajakrishnan (@san-coding)
- ArturoDent (@ArturoDent)
vscodeへの貢献者
- @afonsomatos (Afonso Matos): シャドウ DOM でドラッグ&ドロップが機能しない問題を修正 PR #131392
- @akosyakov (Anton Kosyakov): 開いているタブに別のイベントループを使用 PR #126341
- @AkatQuas (Akat)
- コメントのいくつかのtypoを修正し、いくつかのメソッド名を変更 PR #130470
- fix(storage): メソッドのスペルミスを修正 PR #131051
 
- @chrisyeh96 (Christopher Yeh): KaTeX マクロをレンダリング呼び出し全体で永続化 PR #129747
- @Chigusa0w0 (Chigusa0w0): トラックパッドで低速で下方向にスクロールするときの奇妙な動作を修正 PR #131231
- @erha19 (Dan): fix: デバッグコンソール変数出力の問題 PR #127132
- @Eskibear (Yan Zhang): ピーク型階層 PR #130922
- @gjsjohnmurray (John Murray)
- fix #126842: リフレッシュ成功時にエクスプローラーのルートフォルダのエラーインジケーターをクリア PR #126843
- fix #129296: シンプルなファイルダイアログをナビゲートするときに権限、クエリ、フラグメントを維持 PR #129310
- エラーダイアログで DA がコマンド (#_124020) を提供した場合に「launch.json を開く」コマンドを抑制 PR #130754
- workbench.editor.experimentalAutoLockGroups テキストを改善 PR #131157
- fix #131743: 「行まで実行」を追加する場合のみメニューセパレータを追加 PR #131744
 
- @jeanp413 (Jean Pierre)
- リロード後に最初のターミナルを分割すると、非常に狭くなる問題を修正 PR #129668
- Markdown で無効なリンクを cmd+クリックして新しいファイルを作成する機能が動作しない問題を修正 PR #130815
- ノートブック UI がターミナル上に表示される問題を修正 PR #130854
- パラメーターヒントがリンクホバー色を使用するように修正 PR #130963
- 提案の詳細がリンクホバー色を使用するように修正 PR #130966
 
- @jihoon-ernesto: macOS Terminal と一致するように、cmd+. → ctrl+c のターミナルキーバインディングを追加 PR #131025
- @jsjoeio (Joe Previte): feat: 名前にポートを含む asWebviewUri テストを追加 PR #131447
- @Kingwl (Wenlu Wang): インレイヒントによる折りたたみ範囲の修正 PR #130399
- @lezgomatt (Matthew Go): カスタムセレクトボックスのホバースタイルを修正 PR #129970
- @nickofolas: ステータスバーの文法問題を修正 PR #131271
- @nrayburn-tech (Nicholas Rayburn): Fix #124276 Markdown ファイルリクエストのバッチ処理 PR #124545
- @remcohaszing (Remco Haszing): window.MonacoEnvironment を定義 PR #128949
- @sdissegna-maystreet: [#131407] ブラウザでサービスワーカーのバージョンチェックを修正 PR #131408
- @spahnke (Sebastian Pahnke): [スタンドアロンエディター] CodeActionProviderを登録する際に提供されたコードアクションの種類をリストするサポートを追加 PR #131254
- @spasche (Sylvain Pasche): ターミナルを分割する際にベースから URI 認証情報をコピーし、#127811 を修正 PR #130291
- @ssigwart (Stephen Sigwart): 一致する括弧の方向への選択を更新 PR #128931
- @suzmue (Suzy Mueller): スレッドを応答順にソート PR #128686
- @threeal (Alfi Maulana): feat: .tpp と .txx を C++ 拡張子として追加 PR #130101
- @tony-xia (Tony Xia)
- メソッド名を更新 PR #129224
- 変数名を更新 PR #129226
 
- @vagusX (vagusX): fix: vscode.FileDecoration API の不要な優先度フィールドを削除 PR #129501
- @xgdgsc: 無効なブレークポイントをクリックすると、削除するのではなく有効にする #125904 PR #125931
- @xisui-MSFT
- 逆アセンブリビューでフォーカスされたスタックフレームの色を修正 PR #129721
- 逆アセンブリビューでイベントリスナーを renderTemplate に移動 PR #129734
- 逆アセンブリビューのアクセシビリティを向上 PR #129788
- 逆アセンブリが利用できない場合に特別なエントリを追加 PR #129797
 
- @yannickowow (Yanis HAMITI): [debugService #113742] デバッグセッション終了時の変数表示 PR #131016
- @yash112-lang (Yash Singhal): 垂直方向の配置を修正 PR #130327
vscode-generator-codeへの貢献者
- @octref (Pine): ローカル開発のヒントを追加 PR #296
vscode-js-debugへの貢献者
- @Manish-Giri (Manish Giri): userDataDir オプションのドキュメントを更新 PR #1078
vscode-pull-request-githubへの貢献者
- @joshuaobrien (Joshua O'Brien)
- @RishabhKothaari (Rishab): PR のレビュー状況をビューに通知 PR #1833
debug-adapter-protocolへの貢献者
- @robertoaloi (Roberto Aloi): Erlang アダプターを追加 PR #202
language-server-protocolへの貢献者
- @okuramasafumi (OKURA Masafumi): 最新バージョンは 3.16 です PR #1321
- @OliverKovacs (Oliver Kovacs): スペルミスを修正 PR #1332
- @vintagedave (David Millington): 言語によるアルファベット順ソートを調整 PR #1323
- @Wilfred (Wilfred Hughes): honorsChangeAnnotations の説明の誤字を修正 PR #1322
monaco-editorへのコントリビューション
- @SpaceComet: ウェブサイトのプレイグラウンドを少し更新 PR #2616
- @thien-do (Thien Do): ESM Integrate doc に Vite との使用法を追加 PR #2632
monaco-html への貢献
- @Pranomvignesh (Pranom Vignesh): fix(workerManager.js) : ワーカーの存在チェックを追加 PR #15
monaco-languages への貢献
- @ladyrick (LadyRick): fix(cpp): cpp 言語の整数サフィックスを修正 PR #156