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

2024年9月 (バージョン 1.94)

アップデート 1.94.1: このアップデートは、このセキュリティ問題に対処しています。

アップデート 1.94.2: このアップデートは、これらの問題に対処しています。

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


Visual Studio Code の2024年9月リリースへようこそ。今回のバージョンでは、多くのアップデートが含まれており、気に入っていただけると幸いです。主なハイライトは以下の通りです。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.comUpdatesをご覧ください。Insiders: 新機能をできるだけ早く試したいですか?毎晩リリースされるInsidersビルドをダウンロードして、最新のアップデートをすぐに試すことができます。

GitHub Copilot

チャットで言語モデルを切り替える

以前、OpenAI o1 モデルの早期アクセスにサインアップできることを発表しました。アクセス権を取得すると、VS Code の Copilot Chat に Copilot Chat モデルピッカーコントロールが表示され、チャット会話で使用するモデルバージョンを選択できます。

Copilot model picker control in the Chat view enables switching to another language model.

インラインチャットのGPT-4o

Copilot インラインチャットを GPT-4o にアップグレードし、エディターでチャットを使用する際に、より速く、より正確で、より高品質なコードと説明を提供できるようになりました。

チャットでの公開コードの一致

GitHub Copilot が GitHub.com で公開されているコードと一致するコードを返すことを許可できます。この機能が組織のサブスクリプションまたは個人サブスクリプションで有効になっている場合、Copilot のコード補完はすでに検出された一致に関する詳細を提供していました。今回、Copilot Chat でも公開コードの一致を表示するようになりました。

これが組織またはサブスクリプションで有効になっている場合、応答の最後に「View matches」リンクを含むメッセージが表示されることがあります。リンクを選択すると、一致するコード参照の詳細が表示されるエディターが開きます。

Chat code referencing example.

GitHub Blog で GitHub Copilot のコード参照に関する詳細情報を入手してください。

チャットでのファイルの提案

チャット入力フィールドで、#<filename> と入力すると、ファイル名の提案が表示され、コンテキストとしてプロンプトに素早く添付できるようになりました。これは、チャットビュー、クイックチャット、インラインチャット、ノートブックチャットなど、ファイル添付をサポートするチャット場所で機能します。

Copilot の応答で言及されるワークスペースファイルパスのレンダリングを改善しました。これらのパスは、@workspace の質問をすると非常によく表示されます。

まず注目すべきは、ワークスペースファイルへのパスにファイルアイコンが含まれるようになったことです。これにより、チャット応答内で簡単に区別できます。ファイルアイコンは現在のファイルアイコンテーマに基づいています。

Paths to workspace files in the response now render using file icons.

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

デフォルトでは、これらのリンクはファイル名のみを表示しますが、ホバーすると完全なファイルパスを表示できます。

Hovering over a workspace path to see the full workspace path.

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

The context menu for a workspace path in chat provides options to open the file or copy its path.

今後もワークスペースパスのレンダリングをさらに改善し、応答内のシンボル名についても同様の改善を行う予定です。

ファイルをドラッグアンドドロップしてチャットコンテキストを追加

ワークベンチからファイルやエディタータブをチャットに直接ドラッグすることで、チャットプロンプトのコンテキストとして追加ファイルを簡単に添付できるようになりました。インラインチャットの場合、Shift を押しながらファイルをドロップすると、エディターで開く代わりにコンテキストとして追加されます。

添付ファイルが履歴に含まれるようになりました

チャットリクエストにファイルやエディターの選択を関連コンテキストとして添付する方法は複数あります。以前は、このコンテキストは現在のリクエストにのみ追加され、以降のリクエストの履歴には含まれませんでした。今回、これらの添付ファイルは履歴に保持されるようになったため、再添付することなく参照し続けることができます。

Chat conversation shows that Copilot keeps track of attached files across multiple prompts.

Python ネイティブREPLでのインラインチャットと補完

Python 拡張機能で使用されるネイティブREPLエディターが、入力ボックス内で Copilot インラインチャットとコード補完を直接サポートするようになりました。

ノートブックで生成されたコードを受け入れて実行

ノートブックで Copilot インラインチャットを使用してコードを生成する際に、生成されたコードをインラインチャットから直接受け入れて実行できるようになりました。

ノートブックチャットで変数をアタッチ

ノートブックで Copilot を使用する際に、Jupyter カーネルから変数をリクエストにアタッチできるようになりました。変数を追加することで、チャットリクエストのコンテキストをより正確に制御できるため、Copilot からより関連性の高い応答を得ることができます。

# の後に変数名を入力するか、インラインチャットの📎コントロール (⌘/ (Windows, Linux Ctrl+/)) を使用して、コンテキスト変数を追加します。

刷新されたチャットユーザーエクスペリエンス

チャットビューをクリーンな新しいウェルカムエクスペリエンスで刷新し、チャット入力エリアのレイアウトを更新しました。@ ボタンを使用して、利用可能なチャット参加者とスラッシュコマンドのリストを簡単に見つけられるようになりました。これには、組み込みのコマンドと、インストールした拡張機能からのチャット参加者の両方が含まれます。チャット入力ボックスに / または @ と入力して、参加者とスラッシュコマンドを見つけることもできます。

Updated Chat view welcome experience.

セマンティック検索結果 (プレビュー)

設定: 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 がデフォルトで利用できるようになりました。

A user types /startDebugging flask app port 3000 in the panel chat and is provided with the launch configuration.

コマンドセンターでのチャット (実験段階)

設定: chat.commandCenter.enabled

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

Chat Command Center button and the drop-down menu with relevant chat actions.

時間的コンテキストの改善 (実験段階)

設定: 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 設定で構成します。

アクセシビリティ

はじめに

ヘルプメニューにアクセシビリティ機能の概要ウォークスルーが追加され、アクセシビリティオプションを簡単に探索し、活用できるようになりました。このウォークスルーでは、アクセシビリティヘルプダイアログ、アクセシビリティシグナル、キーボードショートカットなどの機能が紹介されています。

Get Started with Accessibility Features product walkthrough.

コメントのアクセシビリティの改善

コメントスレッドコントロール用のアクセシブルビューを導入しました。このビューには関連するエディターコンテキストが含まれており、エディターとアクセシブルビューを切り替える必要なく集中し続けることができます。同様に、コメントパネルのアクセシブルビューにもエディターコンテキストが提供されるようになりました。

また、コメント: 現在の行のコメントにフォーカスコマンドも導入しました。これにより、キーボードを使用してエディターからコメントコントロールに素早く移動できます。エディターで次と前のコメント範囲に移動するための新しいアクションも追加されました: コメント: 次のコメント範囲へ移動 および コメント: 前のコメント範囲へ移動

Workbench

拡張機能のアカウント設定を変更する

このイテレーションでは、拡張機能の優先アカウントを変更するエクスペリエンスを改善する方法を検討しました。たとえば、複数のGitHubアカウントを持っていて、誤ってGitHub Copilotに間違ったアカウントでサインインしてしまい、別のアカウントを使用する必要がある場合などです。

これで、後から複数の方法でその設定を変更できるようになりました。

  • アクティビティバーのアカウントメニュー > <ご自身のアカウント> > 信頼された拡張機能を管理 > 拡張機能のギアアイコンを選択

    Manage trusted extensions Quick Pick, with gear button highlighted.

  • 拡張機能ビュー > 認証を使用する拡張機能のコンテキストメニュー (またはギアアイコン) > アカウント設定を選択

    Account preferences option in the context menu of an extension.

  • 拡張機能の詳細ビュー > ギアアイコン > アカウント設定を選択

    Account preferences option in the gear menu of an extension.

これらのいずれかのオプションを選択すると、拡張機能が使用するアカウントを変更できるクイックピックが表示されます。

The account preference Quick Pick that enables you to select extensions for a given account.

拡張機能のアカウント設定を変更すると、イベントが拡張機能に送信され、拡張機能がそれを適切に処理するかどうかは拡張機能次第です。期待される動作が見られない場合は、その拡張機能の問題を報告してください。そうすることで、アカウント設定エクスペリエンスが適切に処理されるようになります。

また、このフローについてご意見があればお知らせください。

プロファイルに関連付けられたフォルダーとワークスペースを表示

このマイルストーンでは、プロファイルエディターにフォルダーとワークスペースセクションを導入しました。このセクションには、特定のプロファイルに関連付けられたすべてのフォルダーとワークスペースが中央の場所から一覧表示されます。このセクションから、フォルダーの追加または変更、または新しいウィンドウでフォルダーまたはワークスペースを開くことができます。

Folders & Workspaces section in the Profile editor.

すべてのプロファイルで拡張機能を更新

このマイルストーンでは、すべてのプロファイルで拡張機能を更新する機能が導入されました。これは、複数のプロファイルを持っていて、拡張機能のバージョンを同期させたい場合に便利です。以前は、各プロファイルに切り替えて、そのプロファイルの拡張機能を更新する必要がありました。

拡張機能ビューでの警告

拡張機能ビューに、無効な拡張機能やバージョン非互換性により無効化されている拡張機能がある場合に、警告バッジと関連情報が表示されるようになりました。

Extensions view shows a warning badge and description about the warning.

エクスプローラーでの検索

エクスプローラービューの検索機能を改善し、大規模なプロジェクトでファイルを検索しやすくしました。⌥⌘F (Windows, Linux Ctrl+Alt+F) キーボードショートカットを使用して、ファイルエクスプローラーで検索コントロールを開くことができます。検索中に、より柔軟な結果を得るために、あいまい一致と連続一致を切り替えることができます。

検索中は一部のコンテキストメニューアクションが一時的に無効になることに注意してください。さらなる改善にご期待ください!

リリースノート

リリースノートでの設定の参照に簡略化された構文 (setting.name) を採用しました。これにより、リリースノートエディターに表示される際に、おなじみの設定ギアのレンダリングも表示されます。

Setting URL in release notes enables navigating to the Settings editor directly.

エディター

インレイヒントの改善

インレイヒントが切り詰められる文字数を制御する editor.inlayHints.maximumLength 設定を追加しました。

また、インレイヒントの更新戦略を見直し、入力中にインレイヒントがより早く更新されるようになり、カーソルの水平方向の動きを引き起こさないようになりました。

実験的な編集コンテキスト

このマイルストーンでは、新しい実験的な設定 editor.experimentalEditContextEnabled を導入しました。この設定により、VS Code の編集エクスペリエンスを強化するためにEditContext API が有効になります。EditContext API の採用により、特定の IME 変換のバグを修正できるようになりました。一般的に、これにより長期的に編集エクスペリエンスが改善され、最終的にはデフォルトで有効になるものと考えています。

この設定を有効にした後、VS Code ウィンドウをリロードして、そのメリットを享受してください。

ソース管理

ソース管理グラフビューの改善

前回のマイルストーンでは、新しいソース管理グラフビューを追加しました。今回のマイルストーンでは、新しく追加されたビューで利用可能な機能を拡張し、ビューのレイアウトを洗練することに取り組んできました。

リポジトリピッカー

複数のリポジトリを含むフォルダー/ワークスペースを開くと、ソース管理グラフビューのタイトルにリポジトリピッカーが表示されます。デフォルトでは、ソース管理グラフビューはアクティブなリポジトリを表示し、ステータスバーの情報と一致します。リポジトリピッカーを使用して、ソース管理グラフビューを特定のリポジトリにロックすることができます。

Repository picker control in the title of the Source Control Graph view.

履歴項目参照ピッカー

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

History item reference Quick Pick control to choose one or more items.

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

History item reference picker control in the title of the Source Control Graph view.

履歴項目のアクション

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

Context menu for items in the Source Control Graph view.

ソース管理グラフの設定

このマイルストーンでは、グラフをカスタマイズできるようにするための一連の新しい設定を追加しました。

  • scm.graph.badges - ソース管理グラフビューに表示されるバッジを制御します。
  • scm.graph.pageOnScroll - リストの終わりにスクロールしたときに、ソース管理グラフビューが次のアイテムページをロードするかどうかを制御します。
  • scm.graph.pageSize - ソース管理グラフビューに表示されるアイテムのデフォルト数、およびより多くのアイテムをロードする際の数です。

ノートブック

セル間の複数カーソルサポート (プレビュー)

ノートブックエディターは、設定 notebook.multiCursor.enabled により、セル間の複数カーソル編集をサポートするようになりました。現在、これはショートカット Ctrl+D でのみトリガーでき、限定されたエディターコマンドのサブセットとともにコアエディターアクションをサポートしています。

Diff エディターがドキュメントのメタデータの変更を表示する

ノートブックの差分エディターが、カーネル情報やセル言語など、ドキュメントのメタデータに加えられた変更も表示するようになりました。

Notebook dif editor showing side-by-side changes to the document metadata.

差分ビューで未変更領域を折りたたむ

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

Diff editor shows unchanged code blocks as collapsed.

Web ワーカーでのノートブックのシリアル化 (実験段階)

このリリースでは、Web ワーカーでノートブックのシリアル化を可能にする実験的な機能が導入されました。これにより、大規模なノートブックで作業する際に、拡張ホストプロセスでのメインスレッドブロック時間を削減できます。デフォルトではこの機能は無効ですが、ipynb.experimental.serializationtrue に設定することで有効にできます。

デバッグ

データの色付けのサポート

VS Code は、Debug Adapter Protocol の新しいテキストスタイル設定機能をサポートしています。これにより、変数ビュー、ウォッチビュー、ホバー、およびデバッグコンソール内のデータを ANSI エスケープシーケンスを介して色付けできます。

JavaScriptデバッガー

HTML 要素の表示の改善

JavaScript デバッガーで HTML 要素が表示される方法を改善しました。以前は、素朴なオブジェクトとしてレンダリングされ、ナビゲートが困難でした。現在では、DOM 構造をより正確に反映し、新しい色付け機能を活用して基本的な構文ハイライトを提供しています。

HTML elements are colorized in the JavaScript Debug Console.

起動構成での Node コマンドのオートコンプリート

launch.json ファイルで、node_modules にインストールされているコマンドラインアプリケーション用の新しいオートコンプリートヘルパーが利用可能になりました。これにより、vitestnest などのツールのデバッグ設定が簡単になります。

よりクリーンな読み込み済みソースビュー

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.acceptSuggestionOnCommitCharacterfalse に設定することで無効にできます。

自動インポートの除外パターン

新しい autoImportSpecifierExcludeRegexes を使用すると、正規表現を使用して特定のパッケージからの自動インポートを除外できます。たとえば、lodash のようなモジュールのサブディレクトリからの自動インポートを除外するには、次のように設定します。

{
  "typescript.preferences.autoImportSpecifierExcludeRegexes": ["^lodash/.*$"]
}

これは、JavaScript の場合は javascript.preferences.autoImportSpecifierExcludeRegexes、TypeScript の場合は typescript.preferences.autoImportSpecifierExcludeRegexes を使用して設定できます。詳細については、TypeScript 5.6 リリースノートをご覧ください。

リモート開発

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

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

  • SSH/トンネル経由でKubernetesコンテナーにアタッチ
  • GPUの利用可能性を手動で指定する

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

拡張機能への貢献

Python

カバレッジ付きでテストを実行

VS Code で Python テストをカバレッジ付きで実行できるようになりました!カバレッジ付きでテストを実行するには、テストエクスプローラーのカバレッジ実行アイコンを選択するか、通常テストを実行するどのメニューからでも「Run with coverage」を選択します。Python 拡張機能は、pytest を使用している場合は pytest-cov プラグインを使用して、unittest の場合は coverage.py を使用してカバレッジを実行します。

カバレッジ実行が完了すると、行レベルのカバレッジのためにエディターで線がハイライトされます。これらは下部の「Run Results」パネルから閉じたり再度開いたりできます。そこには、最新のテスト実行の下に「Close Test Coverage」または「View Test Coverage」と表示されます。さらに、テストエクスプローラーの「Testing」タブの下に「Test Coverage」タブが表示され、これもビーカーアイコン付きです。これは、コマンドパレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) でTesting: Focus on Test Coverage View を使用してナビゲートすることもできます。このパネルでは、ワークスペース内の各ファイルとフォルダーの行およびブランチカバレッジメトリクスを表示できます。

カバレッジ付きで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 拡張機能に PYTHONSTARTUP スクリプトのオプトイン/オプトアウト設定が追加されました。これは、ターミナルで python と入力するか、Python REPL を起動する他の方法を使用する前に実行されます。オプトインすると、Mac または Linux であれば、コマンド装飾、コマンドの再実行、最近のコマンドの実行など、ターミナルシェル統合の機能を使用できます。これは設定 python.terminal.shellIntegration.enabled を介して有効にできます。

Pylance 言語サーバーモード

現在の IntelliSense エクスペリエンスと、パフォーマンスに最適化された軽量なエクスペリエンスを選択できる新しい設定 python.analysis.languageServerMode が追加されました。

IntelliSense のすべての機能が必要なく、Pylance ができるだけリソースに優しい方が良い場合は、python.analysis.languageServerModelight に設定できます。そうでない場合は、現在の Pylance のエクスペリエンスを継続するには、default に設定してください。

この新しい機能は、以下の設定のデフォルト値を上書きします。

設定 light モード default モード
"python.analysis.exclude" ["**"] []
"python.analysis.useLibraryCodeForTypes" false true
"python.analysis.enablePytestSupport" false true
"python.analysis.indexing" false true

上記の設定は、デフォルト値を上書きするために個別に変更することもできます。

GitHubプルリクエスト

GitHub Pull Requests 拡張機能は、プルリクエストやイシューの作業、作成、管理を可能にするもので、さらなる進歩がありました。ハイライトについては、拡張機能の 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を設定同期に使用し、アカウント2をGitHubプルリクエスト拡張機能に使用する
  • アカウント1をGitHub拡張機能(プッシュ用)に使用し、アカウント2をGitHub Copilotに使用する

この機能を使用するには、ログインアクション (設定同期のような組み込み機能または拡張機能のいずれか) をトリガーするだけで、別のアカウントにログインするオプションが提供されます。この機能は、後でアカウントを変更する必要がある場合に、新しいアカウント設定クイックピックともうまく連携します。

ほとんどの機能は既存の拡張機能で引き続き動作するはずですが、一部の動作はまだこのマルチアカウントの世界とうまく連携しない可能性があります。改善の余地があると思われる場合は、それらの拡張機能に関する問題を報告してください。比較的新しい 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 がオペレーティングシステムの認証状態を使用できるようにするブローカーフローへの移行を計画しているため、今のところ設定の背後にあります。したがって、できるだけ中断を避けるために、この機能を広く有効にする前にその作業を最初に行います。とはいえ、この新しい認証を試してフィードバックを提供したい場合は、ぜひお試しください。

VS Code 全体での MSAL への移行の詳細なステータスについては、Issue #178740 を参照してください。

TypeScript 5.7

このリリースには、次期 TypeScript 5.7 リリースの初期サポートが含まれています。詳細はTypeScript 5.7 プランをご覧ください。

TypeScript 5.7 のプレビュービルドの使用を開始するには、TypeScript Nightly 拡張機能をインストールしてください。

提案されたAPI

言語モデル用ツール

当社は引き続き LanguageModelTool API のイテレーションを行っています。この API には主に2つの部分があります。

  1. 拡張機能がツールを登録する機能。ツールとは、言語モデルが使用することを意図した機能の一部です。例えば、ファイルの Git 履歴を読み取るなどです。

  2. 言語モデルがツールをサポートするメカニズム。例えば、拡張機能がリクエストを行う際にツールを渡す、言語モデルがツール呼び出しを要求する、拡張機能がツール呼び出しの結果を返すといったものです。

このマイルストーンでは、ツールが実行前にユーザーの確認を要求する機能を追加しました。これは、何らかの副作用があるツールにとって役立ちます。

詳細またはフィードバックについては、issue #213274 をご覧ください。

注意: この API はまだ活発に開発中であり、変更される可能性があります。

エンジニアリング

VS Code での ESM の出荷

ついに VS Code の安定版リリースで ESM 作業が出荷されます。これは、VS Code コアのすべてのレイヤー (Electron、Node.js、ブラウザ、ワーカー) がモジュールの読み込みとエクスポートに JavaScript の import および export 構文を使用することを意味します。従来の AMD ローダーの使用はすべて無効になり、10月のデットウィークの一環として削除されます。

ESM への移行により、起動パフォーマンスが大幅に向上しました。まず、多くの AMD のオーバーヘッドが削除されただけでなく、メインのワークベンチバンドルサイズも10%以上削減されました。

Graph showing the trend of the main bundle load time, showing a large drop after introducing ESM.

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

vscode-docsへの貢献

vscode-extension-samplesへの貢献

vscode-js-debugへの貢献者

vscode-jupyterへの貢献者

vscode-languageserver-nodeへの貢献者

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

vscode-python-debuggerへの貢献者

vscode-vsceへのコントリビューション

vscode-wasm への貢献

language-server-protocolへの貢献者