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

2022年11月 (バージョン 1.74)

更新 1.74.1: この更新では、これらの問題に対処しています。

更新 1.74.2: この更新では、これらの問題に対処しています。

更新 1.74.3: この更新では、このセキュリティ上の問題に対処しています。

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


Visual Studio Code の2022年11月リリースへようこそ。このバージョンには多くの更新があり、皆様に気に入っていただけることを願っています。主なハイライトは以下のとおりです。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新 にアクセスしてください。

Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。

アクセシビリティ

ノートブック実行時の音声キュー

ノートブックセルの実行が完了したときに、音声キューが再生されるようになりました。キューは、セルが正常に実行されたか、失敗したかを示すために異なります。

差分レビューモードの音声キュー

差分エディターで次の差分へ移動がトリガーされると、カーソルが挿入された行にあるか削除された行にあるかを示す特定の音声キューが再生されます。

利用可能な音声キューに興味がある場合は、ヘルプ: 音声キューの一覧表示ドロップダウンから聞くことができます。

List Audio Cues dropdown

設定エディターのインジケーター、ホバー、リンクがキーボードで操作できるようになりました。設定エディター全体での一貫性を高めるため、一部のリンクのスタイルも調整されています。

設定エディターのインジケーターホバーは、タブストップとキーボードフォーカスの維持に関して、はるかに優れた動作をするようになりました。この改善された動作はまだ試験的であり、現在は VS Code 全体のすべてのホバーではなく、設定エディターのインジケーターホバーのみで有効になっています。

Navigating settings and a Modified elsewhere indicator in the Settings editor using the keyboard

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

ワークベンチ

カスタムエクスプローラーの自動表示ロジック

多くの投票があったissue #87956 (「explorer.autoReveal を特定のフォルダーごとに設定できるようにする」) は、新しい設定 explorer.autoRevealExclude の導入によって修正されました。この設定により、自動表示が有効になっている場合 (explorer.autoReveal、デフォルト true) に、エクスプローラーで自動表示されるファイルを構成できます。autoRevealExclude 設定は、ファイルの除外にグロブパターンを使用し、files.exclude と同様に、when 句による兄弟マッチングもサポートしています。

デフォルト値は node と bower モジュールを除外します。

{
  "explorer.autoRevealExclude": {
    "**/node_modules": true,
    "**/bower_components": true
  }
}

ビューコンテナーごとのバッジを非表示にする

ビューコンテナーを右クリックしてビューコンテナーを非表示にできたのと同様に、コンテナーのバッジ (アクティビティバー、パネル、セカンダリサイドバーに表示される) を非表示にできるようになりました。バッジは多くの場合、特定のビューコンテナーの数値、アイコン、または進行状況インジケーターを表示します。たとえば、ソース管理ビューの保留中の変更の数などです。

A context menu is triggered on the Source Control view showing a Hide Badge entry. This is then selected and the blue number one badge disappears. Triggering the context menu again shows a Show Badge entry which brings the blue badge number one badge back.

マージエディター

このリリースでは、マージエディターに関するいくつかの改善とバグ修正が含まれています。主なハイライトは次のとおりです。

  • 元に戻す/やり直しは、競合の処理状態を追跡するようになりました。
  • 入力ビューの無視アクションを使用して、結果ビューの処理済みとしてマークアクションの代わりに、ベースバージョンを受け入れることができます。
  • 両側で同じ変更は自動的に解決されるようになりました。
  • git blame 機能を提供する拡張機能は、incoming、current、および base エディターで機能するようになりました。

ディスク上の拡張機能をインストールする

開発者: 場所から拡張機能をインストール... コマンドを使用して、ローカルディスクドライブ上にある拡張機能をインストールできるようになりました。このコマンドは、拡張機能の .vsix ファイルの場所を選択するためのプラットフォームフォルダーダイアログを開きます。

エディター

CJK 文字の新しい改行オプション

editor.wordBreak という設定を使用して、CJK 文字の後に折り返し点を挿入しないようにできるようになりました。keepAll に設定すると、折り返しアルゴリズムは CJK 文字の後のテキストを同じ行に保持しようとします。この設定は、他のスクリプトの文字には影響しません。

OpenType フォントの新しいフォント設定

OpenType フォントバリエーションをサポートする一部の新しいフォントは、font-weight CSS プロパティでは設定できないフォントウェイトを実現するために、フォントウェイト軸などの特定の軸を調整することをサポートしています。CSS では、これは font-variation-settings プロパティで実現されます。このようなフォントを使用している場合、editor.fontVariationstrue に設定できるようになり、VS Code はフォントウェイトを設定するために "wght" 表示軸を使用します。フォントが他の軸をサポートしている場合は、それらを直接設定することも可能です。たとえば、"editor.fontVariations": "'ital' 0.5" と設定します。

新しいインデントサイズ設定

editor.indentSize という新しい設定があり、インデントサイズ (インデントを構成するスペースの数) をタブサイズ (Tab 文字のレンダリングに使用されるスペースの数) から分離できます。これは、タブとスペースが混在するインデントを使用するファイルを扱う場合に便利で、手動インデント設定を使用する場合にのみ実行できます。

以下は設定例です。

"editor.detectIndentation": false,
"editor.insertSpaces": true,
"editor.tabSize": 8,
"editor.indentSize": 2

インライン補完を部分的に受け入れるコマンド

インライン提案の次の単語を受け入れる (editor.action.inlineSuggest.acceptNextWord) コマンドを使用すると、現在のインライン提案の次の単語/非単語セグメントを受け入れることができます。現在、インライン提案の最初の行の一部のみを受け入れることができます。このコマンドはまだ開発中であり、将来のリリースに向けてキーボードショートカットと代替の分割ルールを検討しています。

ソース管理

安全でない Git リポジトリを管理する

VS Code はすべての Git 操作を実行するために git.exe を使用します。Git 2.35.2 以降、リポジトリが潜在的に安全でないと見なされるため、ユーザーは現在のユーザー以外のユーザーが所有するフォルダー内のリポジトリで Git 操作を実行することを禁止されます。

このリリースから、そのような潜在的に安全でないリポジトリを開こうとすると、VS Code はソース管理ビューにウェルカムビューとエラー通知を表示します。ウェルカムビューと通知の両方に、潜在的に安全でないリポジトリのリストを確認し、それらを安全としてマークし、開くことができる安全でないリポジトリを管理コマンドが表示されます。安全でないリポジトリを管理コマンドは、コマンドパレットでも利用できます。リポジトリを安全としてマークすると、リポジトリの場所が safe.directory git 設定に追加されます。

楽観的なユーザーインターフェースの更新

Git 操作を実行した後、ソース管理ビューが更新される前に、一連の git コマンド (たとえば、git status) が実行されてデータモデルが更新されます。これらのコマンドの実行に数秒かかるシナリオ (たとえば、大規模なモノレポを扱う場合) があり、ソース管理ビューが更新されるまでに遅延が発生します。

このマイルストーンでは、git status が完了する前に、一部の Git 操作 (ステージ、アンステージ、変更の破棄、コミット) についてソース管理ビューが楽観的に更新されるように変更を加え、よりスナップしやすいソース管理ビューを実現しました。

この新しい機能はデフォルトで有効になっていますが、git.optimisticUpdate: false を使用して無効にすることができます。

コミットアクションボタンの改良

コミットアクションボタンがセカンダリコミットコマンド (たとえば、コミットと同期) を実行している場合、ボタンのラベルが実行中のコマンドを正しく反映するようになりました。コミットボタンには、進行状況を示すアニメーションも表示されます。

ターミナル

ターミナルのクイックフィックスの改善

ターミナルのクイックフィックスが、エディターでのエクスペリエンスに合わせるために、コードアクションコントロールで表示されるようになりました。

A Quick Fix is triggered in the terminal and a menu is presented with a play button to the left of the action's label

ターミナルドロップダウンのタスクアクション

タスクの実行およびタスクの構成コマンドがターミナルドロップダウンに表示され、検出性とアクセスしやすさが向上しました。

The last section of the terminal dropdown menu contains Run Task and Configure Tasks commands

リモート開発

リモートトンネルが、VS Code Stable でプレビュー機能として利用可能になりました。リモートトンネルを使用すると、どこからでも任意のデバイスから VS Code を使用してマシンに安全にアクセスできます。リモートトンネルアクセスを有効にするには、次のいずれかを実行できます。

  • アカウントメニューまたはコマンドパレットからリモートトンネルアクセスをオンにするを選択します。
  • VS Code がインストールされ、PATH に含まれているマシンから code tunnel を実行します。
  • 新しい VS Code CLI をダウンロードして ./code tunnel を実行します。

トンネルアクセスがオンになると、vscode.dev を使用するか、VS Code デスクトップ内からリモート - トンネル拡張機能を使用して、任意のデバイスからマシンに接続できます。

詳細については、機能の発表に関するブログ記事またはリモートトンネルのドキュメントを確認してください。

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

注: スタンドアロンの code-server CLI を使用していた場合は、代わりに VS Code CLI (最新の VS Code デスクトップまたは上記のスタンドアロンダウンロードを介して) を使用してください。

デバッグ

JavaScriptデバッグ

console.profile のサポート

JavaScript デバッガーがconsole.profileをサポートするようになりました。デバッガーで実行すると、console.profile()console.profileEnd() の間のコードに対して CPU プロファイルが収集されます。

console.profile();
doSomeExpensiveWork();
console.profileEnd();

生成された .cpuprofile ファイルはワークスペースフォルダーに保存され、VS Code に組み込まれているプロファイルビューアーを使用して開いて表示できます。

ネストされたソースマップのサポート

特にモノレポのセットアップでは、ソースコードが一度コンパイルされ、その後再度再コンパイルまたはバンドルされることがあります。多くの場合、これにより、結果のバンドルのソースマップが、最初のステップで作成されたコンパイル済みファイルを参照することになります。

JavaScript デバッガーは、ソースマップを再帰的に自動的に解決するようになり、追加の手順なしで元のソースファイルをデバッグできるようになります。

serverReadyAction に killOnServerStop プロパティを追加

serverReadyAction launch.json 機能により、ユーザーは Web サーバーを起動するデバッグセッションを開始し、サーバーが起動すると、そのサーバーの URL にナビゲートされたブラウザーを自動的にデバッグを開始できます。新しいプロパティ killOnServerStop があり、これを true に設定すると、サーバーデバッグセッションが停止したときに、新しいブラウザーデバッグセッションが自動的に停止されます。

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "https://:%s",
    "action": "debugWithEdge",
    "killOnServerStop": true
  }
}

上記の例では、元の Launch Program デバッグセッションが停止すると、自動的に開始された Edge デバッグセッションも停止されます。

フォーカスされたデバッグセッションの例外ブレークポイントを表示

以前は、2 種類の異なるデバッグセッションを実行している場合の例外ブレークポイントの管理がうまくいきませんでした。これで、呼び出し履歴ビューでデバッグセッションにフォーカスが当たると、そのセッションのデバッグタイプに対応する正しいブレークポイントセットが表示されます。

Exception breakpoints correctly shown per call stack frame

コメント

comments.visible

新しい設定 comments.visible を使用して、エディターコメント機能 (コメントバーとエディター内のコメント Peek ビュー) をオフにすることができます。セッション中にエディターコメント機能をオン/オフするには、引き続きコメント: エディターコメント機能を切り替えるコマンドを使用できます。コメントビューでコメントを選択すると、常にコメント機能がオンになります。

コメントビューのバッジ

コメントビューには、未解決のコメントの数のバッジが表示されます。

Comments view badge

タスク

問題マッチャーの「検索」ファイル場所メソッド

以前は、問題マッチャーは fileLocation プロパティを介して、問題のあるファイルをどこで探すかを正確に知る必要がありました。サポートされていたメソッドは absoluterelative、または autoDetect (最初に相対パスをチェックし、失敗した場合は絶対パスを探す) でした。

しかし、ネストされたサブディレクトリに存在するスクリプトを使用するワークスペースでは、異なるスクリプトがファイルパスを統一された方法 (たとえば、ワークスペースのベースディレクトリからの相対パス) で報告することがめったになかったため、タスクを設定するのが困難でした。

この問題を解決するために、search という新しいファイル場所メソッドが導入されました。このメソッドを使用すると、キャプチャされたパスを検索するために再帰的なファイルシステム検索が実行されます。

以下の例は、search ファイル場所メソッドを設定する方法を示しています (ただし、すべてのパラメーターはオプションです)。

"problemMatcher": {
    // ...
    "fileLocation": [
        "search",
        {
            "include": [ // Optional; defaults to ["${workspaceFolder}"]
                "${workspaceFolder}/src",
                "${workspaceFolder}/extensions"
            ],
            "exclude": [ // Optional
                "${workspaceFolder}/extensions/node_modules"
            ]
        }
    ],
    // ...
}

ユーザーは時間のかかるファイルシステム検索 (たとえば、node_modules ディレクトリ内を検索する) を引き起こさないように注意し、exclude プロパティを適切に設定する必要があることに注意してください。

言語

TypeScript 4.9

VS Code は TypeScript 4.9 を搭載するようになりました。このメジャーアップデートには、satisfies オペレーター自動アクセサーなどの新しい TypeScript 言語機能が追加されています。ツール側では、ファイル監視の改善や、その他の多くの修正と改善を行いました。

このアップデートの詳細については、TypeScript 4.9 の発表を確認してください。

return から定義へ移動

JavaScript と TypeScript は、return キーワードに対して定義へ移動を実行して、返されている関数の先頭にすばやくジャンプする機能をサポートするようになりました。これは、長くて複雑な関数や、深くネストされた関数を扱う場合に役立ちます。これには、定義へ移動コマンド/キーバインディング (F12) を使用するか、return キーワードを Cmd/Alt + クリックするだけで実行できます。

ノートブック

カーネルピッカーの実験: 最近使用したカーネル

最も最近使用したカーネルがピッカーの先頭に表示される新しいノートブックカーネルピッカーがあります。これはオプトインの実験であり、notebook.kernelPicker.type 設定を mru に設定することで有効にできます。

使用されていないカーネルは、セカンダリピッカー別のカーネルを選択...に移動されます。このピッカーは、最新のJupyter 拡張機能がインストールされている場合、すべてのカーネルをそのソース (例: Jupyter カーネル、Python 環境など) でグループ化します。

Kernel picker with most recently used kernels

皆様からのフィードバックをお待ちしております。VS Code リポジトリで課題を作成してください。

Web 用 VS Code

ソース管理

VS Code for the Web は、GitHub および Azure Repos リポジトリを編集する際に、以下の設定をサポートするようになりました。

  • "git.branchRandomName.enabled" - VS Code for the Web でブランチを作成する際にランダムなブランチ名を生成します。
  • "git.branchRandomName.dictionary" - VS Code for the Web でブランチを作成する際にランダムなブランチ名を生成するための単語辞書を指定します。
  • "git.closeDiffOnOperation" - コミット、ステージング、変更のアンステージなどのソース管理操作を実行した後、差分エディターを閉じます。

さらに、VS Code for the Web は、VS Code デスクトップでのエクスペリエンスに合わせて、保護されたブランチの場合、ステータスバーとブランチピッカーにロックアイコンを表示します。

Lock icon for protected branches in the Status bar and branch picker

最後に、VS Code for the Web のソース管理アクションボタンを使用して、変更を直接リポジトリリモートにコミットしてプッシュできるようになりました。

Commit & Push using source control action button

コミットする前に変更を検証したい場合は、アクションボタンのドロップダウンにあるセカンダリの作業を続行...アクションを使用して、作業中の変更を別の開発環境に持ち込むこともできます。

作業継続の改善

GitHub または Azure Repos リポジトリにいる場合、作業中の変更を特定の開発環境に持ち込むための便利なワンステップコマンドがコマンドパレットで利用できるようになりました。

  • 新しい Codespace で作業を続ける
  • ローカルクローンで作業を続ける
  • VS Code Desktop のリモートリポジトリで作業を続ける

One step commands to continue working in another development environment

また、作業中の変更をクラウドに保存することを示すために、編集セッションクラウドの変更に改名しました。

拡張機能への貢献

Jupyter

ノートブックセルのデバッグのための「Just My Code」

「Just My Code」デバッグ機能を使用すると、デバッガーが Python ライブラリのコードをステップ実行するか、独自のソースコードのみをステップ実行するかを決定できます。これは、ノートブックセルをデバッグする際にデフォルトで有効になっていますが、"jupyter.debugJustMyCode": false を設定して無効にし、ライブラリコードをステップ実行することもできます。最適なエクスペリエンスを得るには、環境内の debugpy を >=1.6.3 にアップグレードしてください。以前は、debugJustMyCode 設定はインタラクティブウィンドウでのデバッグでのみ尊重されていましたが、ノートブックエディターでも利用できるようになりました。

ノートブックセルデバッグセッションの再起動をサポート

デバッグツールバーの再起動コマンドは、現在のデバッグセッションを再起動します。以前は、これはノートブックデバッグセッションでエラーをスローしていましたが、現在はサポートされています。残念ながら、インタラクティブウィンドウでは適切にサポートできません。

この機能は、セルをデバッグし、セルを編集し、デバッグセッションを再起動して編集を適用した状態で再度セルをデバッグするというワークフローで特に役立ちます。

リモート開発拡張機能

リモート開発拡張機能を使用すると、コンテナー、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。このリリースのハイライトは次のとおりです。

  • Dev Container GPU サポート
  • Dev Container Cygwin / Git Bash ソケット転送
  • リモート - トンネル拡張機能 - SSH を必要とせずにリモートマシンに接続します。

新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。

GitHub のプルリクエストと課題

プルリクエストと課題の作業、作成、管理ができるGitHub のプルリクエストと課題拡張機能の進捗がありました。主なハイライトは次のとおりです。

  • パーマリンクコマンドのノートブックサポート。
  • プルリクエストのチェックステータス (継続的インテグレーション (CI) 進行中、レビューが必要、CI 失敗など) がプルリクエストツリービューに表示されます。
  • PR の vscode.dev リンクはプルリクエスト概要からコピーできます。
  • プルリクエストの次の差分へ移動コマンドは、チェックアウトされた PR の次の差分にファイル間で移動します。

その他のハイライトについては、拡張機能の 0.56.0 リリース用の変更ログをご覧ください。

プレビュー機能

プロファイル

過去数か月間、コミュニティからの最も人気のある要望の1つである VS Code のプロファイルのサポートに取り組んできました。この機能は、workbench.experimental.settingsProfiles.enabled 設定を介してプレビューとして利用できます。ぜひ試して、vscode リポジトリで課題を作成するか、課題 #116740にコメントすることでフィードバックをお寄せください。

プロファイルの共有

プロファイルを GitHub に gist としてエクスポートして共有できるようになりました。VS Code は GitHub アカウントを使用して秘密の gist を作成し、他の人と共有するためのリンクを提供します。そのリンクを開くと、VS Code は共有プロファイルをインストールするかどうかを尋ねます。プロファイルをエクスポートまたはインポートする際に、VS Code はプレビューを表示するため、それぞれエクスポートまたはインポートするデータを確認して選択できます。

プロファイルを GitHub にエクスポートし、リンクをコピーして他の人と共有するビデオです。

Exporting a Profile

このビデオは、共有リンクを開いてプロファイルをインポートする方法を示しています。

Importing a Profile

拡張機能の署名と検証

11月中旬以降、Visual Studio Marketplace にアップロードされるすべての VS Code 拡張機能は、VS Marketplace によって署名されます。このプロセスはリポジトリ署名と呼ばれます。拡張機能のインストールと更新のたびに、VS Code は拡張機能パッケージの署名を検証します。署名と署名検証により、拡張機能パッケージの整合性と信頼性を保証できます。

現在、署名検証は VS Code Insiders でのみ行われています。問題に気づいた場合は、vscode リポジトリで問題を作成してお知らせください。extensions.verifySignaturefalse に設定することで、署名検証をオプトアウトできます。今後数か月以内に VS Code Stable で署名検証を有効にする作業を進めています。

リポジトリ署名とは別に、拡張機能発行元署名の作業も開始しています。

Web での Python 実行

Experimental - Python for the Web 拡張機能にデバッグサポートを追加しました。デバッガーは以下の機能をサポートしています。

  • ブレークポイントの設定
  • 関数のステップインとステップアウト
  • モジュール間のデバッグ
  • デバッグコンソールでの変数の評価
  • 統合ターミナルでのプログラムのデバッグ

以下のスクリーンショットは、Hello World プログラムのデバッグを示しています。

Python debugging in VS Code for the Web

注意: この拡張機能を使用するには、ブラウザの URL に ?vscode-coi= というクエリパラメータを追加する必要があります。

拡張機能作成

宣言された拡張機能の貢献に対する暗黙的なアクティベーションイベント

このマイルストーンでは、拡張機能が package.json で特定の拡張機能の貢献を宣言している場合、アクティベーションイベントを明示的にリストする必要がなくなりました。

以前は、拡張機能が package.json ファイルでコマンド mycommand を提供すると宣言した場合、コマンドが正常に実行されるためには、package.jsonactivationEvents フィールドにそれに対応する onCommand:mycommand アクティベーションイベントもリストする必要がありました。これは面倒でエラーが発生しやすく、大きな package.json ファイルにつながる可能性がありました。

VS Code は、以下の拡張機能の貢献ポイントに対してアクティベーションイベントを自動的に入力するようになりました。

貢献ポイント 推論されるアクティベーションイベント
コマンド onCommand
認証 onAuthenticationRequest
言語 onLanguage
customEditors onCustomEditor
ビュー onView

拡張機能の作成者は、これらの推論されたアクティベーションイベントを拡張機能から安全に削除できるようになりました。そうする場合は、拡張機能が以前のバージョンの VS Code と互換性がないと見なされないように、VS Code エンジン要件を更新してください。

    "engines": {
        "vscode": "^1.74.0"
    },

ログ出力チャンネル

このマイルストーンで、LogOutputChannel API を完成させました。この API を使用して、拡張機能からのメッセージをログに記録するために使用されるログ出力チャネルを作成できるようになりました。

また、アプリケーションの現在のログレベルを示し、アプリケーションのログレベルが変更されたときにイベントを発生させるために、env 名前空間のlogLevel プロパティとonDidChangeLogLevel イベントも完成させました。

すべてのウェブビューで一貫したオリジン

前回のイテレーションでの作業に引き続き、VS Code のすべてのウェブビューはカスタムオリジンを維持しようとします。バージョン 1.74 では、これはカスタムエディターで使用されるウェブビューにも適用されます。

これにより、ウェブビューコンテンツがより多くのケースでキャッシュできるようになり、パフォーマンスが向上します。詳細と拡張機能の作成者として注意すべき点については、以前のリリースノートを参照してください。

拡張機能の README でのビデオタグサポート

拡張機能は、README で <video> タグを使用できるようになりました。ビデオは VS Code Marketplace と VS Code の拡張機能ビューページの両方でサポートされています。.gif と比較して、ビデオファイルは高品質で、多くの場合サイズも小さくなります。音声を含めることもできます!

VS Code 自体でサポートされているビデオおよびオーディオ形式は限られていることに注意してください。現在、相対パスではなく、<video> srcposter にはフルパスを使用する必要があります。

コメントスレッドの追加アクション

新しいメニュー位置 comments/commentThread/additionalActions により、拡張機能はコメントスレッドに常に表示されるボタンを貢献できるようになりました。

Visible button in a comment

vsce から @vscode/vsce への改名

VS Code の拡張機能マネージャーである vsce ツールは、@vscode/vsce に改名されました。これは、このツールをライブラリとして使用している人にとっては破壊的な変更です。CLI ツールは引き続き vsce と呼ばれ、npm install -g @vscode/vsce でインストールできます。

デバッグアダプタープロトコル

デバッグアダプタープロトコルにいくつかの明確化と新しいプロパティが追加されました。

  • DataBreakpointInfo リクエストに新しいオプションの frameId プロパティが追加されました。クライアントはこのフラグを使用して、name 変数を含むスタックフレームを指定できます。
  • readMemory リクエストのファイル終端動作が指定されるようになりました。

エンジニアリング

プロパティとメソッドの名前マングリング

製品ビルドでプロパティとメソッドの名前がマングリングされるようになりました。これにより、メインバンドルのサイズが約13% (-1.5 MB) 削減され、コードの読み込み時間が約5%短縮されました。

GitHub & Microsoft 認証拡張機能のバンドルサイズの改善

これら2つの拡張機能のバンドルサイズは、提供する機能と多くの場合 (vscode.dev など) 起動に不可欠であることを考えると、希望よりも大きすぎました。このマイルストーンでは、これらの拡張機能のサイズを削減することに注力し、その結果は以下のとおりです。

  • GitHub 認証: 93 KB -> 64.9 KB
  • Microsoft 認証: 97 KB -> 57.7 KB

これは次の方法で達成されました。

  • Node.js と Web で容易に利用可能な機能を提供するノードモジュールに依存しなくなりました (たとえば、uuidCrypto.randomUUID()に置き換えました)。
  • Node.js と Web の両方で node-fetch を使用する代わりに、Node.js でのみ使用するようにしました。
  • サイズが大幅に削減された @vscode/extension-telemetry の最新バージョンを採用しました。

このプロセスで機能は失われず、これらの拡張機能はサイズが小さくなったため、より高速に取得され、ロードされるようになりました。

Electron サンドボックスへの道のり

Electron のサンドボックスを有効にするための進捗状況については、最近の「VS Code のプロセスサンドボックスへの移行」ブログ記事で詳しく知ることができます。この詳細な記事では、テクノロジーのタイムラインと、VS Code のサンドボックス化をサポートするために行われた段階的な変更について説明しています。

VS Code のサンドボックスモードを試してみたい場合は、設定で "window.experimental.useSandbox": true を設定できます。機能的な違いは特に感じられないはずですが、問題を発見した場合は、私たちにご報告ください。

Windows でウィンドウコントロールオーバーレイがデフォルトで再有効化

ウィンドウコントロールオーバーレイ (WCO) がデフォルトで再有効化されました。以前は8月に有効化されていましたが、右から左へのシステム言語を使用するユーザーにとって間違った側にレンダリングされファイルおよび編集メニュー項目を覆ってしまうため、再度無効化されていました。

主な問題は、VS Code がアプリケーションのロケールを Electron に渡していなかったため、Electron がシステムロケールを使用して WCO の配置場所を決定していたことでした。しかし、VS Code は Electron の app.getLocale() API を使用してシステム言語を取得し、推奨される言語パックを決定していましたが、アプリケーションのロケールを Electron に渡すと、app.getLocale() がシステム言語ではなく同じロケールを返すという問題が発生しました。

この問題を解決するために、Electron に新しい app.getPreferredSystemLanguages() API を追加しました。これにより、ロケールを Electron に渡した後でも、VS Code の言語パックレコメンダーに使用するシステム言語を取得し、WCO を右側に維持することができます。

VS Code with the custom title bar along with Paint's title bar. The screenshot is taken on Windows 11 with the system language in Arabic, showing that the WCO is on the right for VS Code, which is in English, while it is on the left for Paint, which is in Arabic.

組み込み拡張機能が vscode-nls の代わりに新しい l10n API を使用

先月、新しいローカリゼーション (l10n) API が安定化されました。今月は、Microsoft/vscode リポジトリにあるすべての拡張機能でこの API を採用しました。言語サーバーを vscode-nls の代わりに @vscode/l10n を使用するように移行する必要があるほか、チームが所有する他の拡張機能 (JS Debug、Python、Jupyter Notebooks など) もありますが、すべての拡張機能の単一のローカリゼーションという目標に向かって正しい方向に進んでいます。

注目すべき修正点

  • 166171 拡張機能のヒントモーダルにあるデフォルトのスクロールバーを削除します。
  • microsoft/vscode-jupyter#11745 変数ビューアーが速度低下と不安定性を引き起こす

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-eslintへの貢献者

vscode-js-debugへの貢献者

vscode-json-languageserviceへの貢献

vscode-pull-request-githubへの貢献者

debug-adapter-protocolへの貢献者

devcontainers/cliへの貢献