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 の更新情報にアクセスしてください。Insiders: 新機能をいち早く試したいですか?夜間のInsidersビルドをダウンロードして、利用可能になり次第最新の更新を試すことができます。
GitHub Copilot
チャットでの言語モデルの切り替え
以前、OpenAI o1 モデルへの早期アクセスにサインアップできることをお知らせしました。アクセス権を取得すると、VS CodeのCopilot ChatにCopilot Chatモデルピッカーコントロールが表示され、チャットの会話で使用するモデルバージョンを選択できます。
インラインチャットのGPT-4o
Copilot Inline ChatをGPT-4oにアップグレードしました。これにより、エディターでチャットを使用する際に、より高速で正確な、高品質のコードと説明が得られます。
チャットでの公開コードマッチング
GitHub CopilotがGitHub.comで公開されているコードに一致するコードを返すことを許可できるようになりました。この機能が組織のサブスクリプションまたは個人サブスクリプションで有効になっている場合、Copilotのコード補完は、検出された一致に関する詳細をすでに提供していました。今回、Copilot Chatでも公開コードの一致が表示されるようになりました。
組織またはサブスクリプションでこれが有効になっている場合、レスポンスの最後に一致を表示リンクを含むメッセージが表示されることがあります。このリンクを選択すると、一致するコード参照の詳細が表示されるエディターが開きます。
GitHub BlogでGitHub Copilotでのコード参照に関する詳細情報を入手してください。
チャットでのファイル提案
チャット入力フィールドで、#<filename>
と入力するとファイル名の提案が表示され、プロンプトにコンテキストとして素早く添付できるようになりました。これは、チャットビュー、クイックチャット、インラインチャット、ノートブックチャットなど、ファイル添付をサポートするチャットの場所で機能します。
チャット応答でのファイルリンクの改善
Copilotの応答で言及されているワークスペースファイルパスのレンダリングを改善しました。これらのパスは、@workspace
の質問をする際によく使用されます。
まず気づくのは、ワークスペースファイルへのパスにファイルアイコンが含まれるようになったことです。これにより、チャット応答内で簡単に区別できるようになります。ファイルアイコンは、現在のファイルアイコンテーマに基づいています。
これらのパスはインタラクティブなリンクなので、選択するだけで対応するファイルを開くことができます。新しいエディターグループでファイルを開くためにドラッグ&ドロップを使用したり、Shiftキーを押しながらドロップすることでテキストエディターに挿入することも可能です。
デフォルトでは、これらのリンクはファイル名のみを表示しますが、ホバーするとフルパスが表示されます。
これらのパスのいずれかを右クリックして、リソースへの相対パスのコピーや、オペレーティングシステムのファイルエクスプローラーでのファイルの表示など、追加コマンドを含むコンテキストメニューを開くこともできます。
今後のイテレーションでは、ワークスペースパスのレンダリングをさらに改善し、応答内のシンボル名にも同様の改善を加える予定です。
チャットコンテキストを追加するためのファイルのドラッグアンドドロップ
ワークベンチからファイルやエディタのタブをチャットに直接ドラッグすることで、チャットプロンプトのコンテキストとして追加ファイルを簡単に添付できるようになりました。インラインチャットの場合、Shiftキーを押しながらファイルをドロップすると、エディタで開く代わりにコンテキストとして追加されます。
履歴に含まれるファイル添付
チャットリクエストにファイルやエディターの選択を関連するコンテキストとして添付する方法は複数あります。以前は、このコンテキストは現在のリクエストのみに追加され、その後のリクエストの履歴には含まれませんでした。今回、これらの添付ファイルは履歴に保持されるため、再添付することなく参照し続けることができます。
Python Native REPLにおけるインラインチャットと補完
Python拡張機能で使用されるNative REPLエディターは、入力ボックス内でCopilot Inline Chatとコード補完を直接サポートするようになりました。
ノートブックで生成されたコードを受け入れて実行する
Copilot Inline Chatを使用してノートブックでコードを生成する場合、生成されたコードをInline Chatから直接受け入れて実行できるようになりました。
ノートブックチャットで変数を添付する
ノートブックで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設定でテスト生成の指示を構成します。
アクセシビリティ
はじめに
ヘルプメニューに「アクセシビリティ機能を使ってみる」ウォークスルーが追加され、アクセシビリティオプションの探索と活用が簡単になりました。このウォークスルーでは、アクセシビリティヘルプダイアログ、アクセシビリティシグナル、キーボードショートカットなどの機能が紹介されています。
コメントのアクセシビリティ改善
コメントスレッドコントロールのアクセシブルビューを導入しました。このビューには関連するエディターコンテキストが含まれており、エディターとアクセシブルビューを切り替えることなく集中できます。同様に、コメントパネルのアクセシブルビューでもエディターコンテキストが提供されるようになりました。
また、キーボードを使用してエディターからコメントコントロールに素早く移動できるコメント: 現在の行のコメントにフォーカスコマンドも導入しました。エディターで次と前のコメント範囲に移動するための新しいアクションも追加されました: コメント: 次のコメント範囲へ移動とコメント: 前のコメント範囲へ移動です。
ワークベンチ
拡張機能のアカウント設定の変更
このイテレーションでは、拡張機能の優先アカウントを変更するエクスペリエンスを改善する方法を検討しました。たとえば、複数のGitHubアカウントがあり、誤って間違ったアカウントでGitHub Copilotにサインインしてしまい、別のアカウントを使用する必要がある場合などです。
その設定を後で複数の方法で変更できるようになりました。
-
アクティビティバーの「アカウント」メニュー > <あなたのGitHubアカウント名> > 信頼された拡張機能を管理 > 拡張機能の歯車アイコンを選択
-
拡張機能ビュー > 認証を使用する拡張機能のコンテキストメニュー(または歯車アイコン) > アカウント設定を選択
-
拡張機能の詳細ビュー > 歯車アイコン > アカウント設定を選択
これらのオプションのいずれかを選択すると、クイックピックが表示され、拡張機能が使用するアカウントを変更できます。
拡張機能のアカウント設定を変更すると、そのイベントが拡張機能に送信され、拡張機能が適切に処理する責任があります。期待される動作が見られない場合は、その拡張機能のGitHubリポジトリで問題を報告してください。そうすれば、アカウント設定のエクスペリエンスが適切に処理されます。
また、このフローに関するフィードバックがあればお知らせください。
プロファイルに関連付けられたフォルダーとワークスペースの表示
このマイルストーンでは、プロファイルエディターにフォルダーとワークスペースセクションを導入しました。このセクションでは、特定のプロファイルに関連付けられているすべてのフォルダーとワークスペースを一元的に表示します。このセクションから、フォルダーの追加または変更、あるいは新しいウィンドウでフォルダーまたはワークスペースを開くことができます。
すべてのプロファイルで拡張機能を更新
このマイルストーンでは、すべてのプロファイルで拡張機能を更新する機能が導入されました。これは、複数のプロファイルを持っていて、拡張機能のバージョンを同期させたい場合に便利です。以前は、各プロファイルに切り替えて、そのプロファイルの拡張機能を更新する必要がありました。
拡張機能ビューの警告
拡張機能ビューでは、無効な拡張機能やバージョン非互換性により無効になった拡張機能がある場合に、警告バッジと関連情報が表示されるようになりました。
エクスプローラーで検索
エクスプローラービューの検索機能を改善し、大規模なプロジェクトでファイルを検索しやすくしました。ファイルエクスプローラーで検索コントロールを開くには、⌥⌘F (Windows、Linux Ctrl+Alt+F)のキーボードショートカットを使用します。検索中は、より柔軟な結果を得るために、あいまい一致と連続一致を切り替えることができます。
検索中は、一部のコンテキストメニューアクションが一時的に無効になることに注意してください。近日中のさらなる改善にご期待ください!
リリースノート
リリースノートで設定を参照するための簡略化された構文(setting.name)が追加され、リリースノートエディターに表示される際に、おなじみの設定ギアアイコンも表示されるようになりました。
エディター
インレイヒントの改善
インレイヒントが何文字で切り詰められるかを制御するeditor.inlayHints.maximumLength設定を追加しました。
また、インレイヒントの更新戦略を見直し、入力中に早く更新されるようになりましたが、カーソルの水平移動は発生しないはずです。
実験的な編集コンテキスト
このマイルストーンでは、新しい実験的な設定editor.experimentalEditContextEnabledを導入しました。この設定により、VS Codeの編集エクスペリエンスを強化するためにEditContext APIが有効になります。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ワーカーでのノートブックシリアル化(実験段階)
このリリースでは、Webワーカーでのノートブックシリアル化を可能にする実験的な機能が導入されました。これにより、大規模なノートブックを扱う際に、拡張ホストプロセスにおけるメインスレッドのブロック時間を短縮できます。デフォルトではこの機能は無効ですが、ipynb.experimental.serializationをtrue
に設定することで有効にできます。
デバッグ
データのカラーリングのサポート
VS Codeは、デバッグアダプタープロトコルからの新しいテキストスタイル設定機能をサポートしています。これにより、変数ビュー、ウォッチビュー、ホバー、デバッグコンソール内のデータがANSIエスケープシーケンスを介してカラーリングできるようになります。
JavaScriptデバッガー
HTML要素の表示の改善
JavaScriptデバッガーでのHTML要素の表示方法を改善しました。以前は素朴なオブジェクトとしてレンダリングされており、ナビゲートが困難でした。現在はDOM構造をより密接に反映し、新しいカラー化機能を活用して基本的な構文ハイライトを提供しています。
起動設定におけるNodeコマンドのオートコンプリート
launch.json
ファイルにおいて、node_modules
にインストールされているコマンドラインアプリケーションの新しいオートコンプリートヘルパーが利用可能になりました。これにより、vitest
やnest
のようなツールのデバッグ設定が容易になります。
よりクリーンな読み込み済みソースビュー
Node.js組み込みモジュール、評価済みスクリプト、WebAssemblyモジュールのソースパス構造を変更し、読み込み済みソースビューをよりノイズが少なく、閲覧しやすくしました。
言語
TypeScript 5.6
JavaScriptおよびTypeScriptのサポートは、TypeScript 5.6を使用するようになりました。このメジャーアップデートには、多くの言語およびツール改善に加え、重要なバグ修正とパフォーマンス最適化が含まれています。
TypeScript 5.6リリースに関するすべての情報については、TypeScriptブログで確認できます。以下のセクションでは、いくつかのツールに関するハイライトも紹介しています。
一般的な「常にtrue」のプログラミングミスの検出
JavaScriptまたはTypeScriptで正規表現を使用しており、次のようなコードを書いたとします。
const str = '...'
if (/\d+(\.\d+)?/) {
...
} else {
...
}
おっと!正規表現で.test()
を呼び出すのを忘れているようです。つまり、if
条件は常にtrueと評価されます。これは意図したものではありません。
この問題は指摘されれば明らかですが、このような間違いは驚くほど簡単に起こり、VS Codeで実際のバグを引き起こしたことさえあります!幸いなことに、TypeScriptはプログラム内の最も一般的な「常にtrue」のエラーを報告するようになりました。これには、決して値ではない値に対して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リリースノートを参照してください。
リモート開発
リモート開発拡張機能を使用すると、Dev Container、SSH経由のリモートマシン、またはリモートトンネル、あるいはWindows Subsystem for 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拡張機能に、PYTHONSTARTUP
スクリプトのオプトイン/オプトアウト設定が追加されました。これは、ターミナルでpython
やその他の方法でPython REPLを起動する前に実行されます。オプトインすると、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プルリクエスト
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サンドボックスと互換性があることを確認できます。
影響を受ける可能性のある拡張機能やネイティブアドオンを特定するためのテレメトリーも追加しました。これにより、拡張機能の作者に積極的に連絡を取り、可能な限り支援を提供できます。もしお使いの拡張機能が影響を受け、上記の提案がいずれも役に立たない場合は、当社のディスカッションスレッドにコメントを残してください。喜んでお手伝いします。
デバッグアダプタープロトコル
デバッグアダプタープロトコルにおける変数表示と出力におけるテキストのカラーリングとスタイル設定方法を正式化しました。カラーリングはANSI制御シーケンスを介して機能し、クライアントとデバッグアダプターの両方がそれぞれの初期化リクエストと機能でsupportsANSIStyling
をサポートしている必要があります。
プレビュー機能
複数のGitHubアカウント
VS Codeで複数のGitHubアカウントに同時にログインできるようになりました。
この機能はVS Code Insidersでデフォルトで有効になっています。VS Codeの安定版ビルドでは、github.experimental.multipleAccounts設定で有効にすることができます。
複数のアカウントが必要になるシナリオがいくつかあります。
- 設定同期にはアカウント1を使用し、GitHubプルリクエスト拡張機能にはアカウント2を使用する
- GitHub拡張機能(プッシュ用)にはアカウント1を使用し、GitHub Copilotにはアカウント2を使用する
この機能を使用するには、ログインアクション(Settings Syncのような組み込み機能または拡張機能を使用)をトリガーするだけで、別のアカウントにログインするオプションが表示されます。この機能は、後でアカウントを変更する必要がある場合に、新しいアカウント設定クイックピックともうまく連携します。
ほとんどの機能は既存の拡張機能でも引き続き動作するはずですが、一部の動作はまだこのマルチアカウントの世界と完全に互換性がない場合があります。改善の余地があると思われる場合は、それらの拡張機能で問題を報告してください。比較的新しい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への移行の詳細な状況は、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 (ケビン・キュイ): ci: リトライロジックの一貫性を保証 PR #226038
- @Cecil0o0 (hj): chore: 拡張機能のビルド時に到達不能な無視項目を削除。 PR #227906
- @dangerman (アニーズ・アヒー): 画像プレビューの透明グリッドスケーリングを修正 PR #226505
- @g-cappai (ジャンルカ・カッパイ): Markdownプレビューでhtmlアンカーリンクが開かない問題を修正 PR #228633
- @gabritto (ガブリエラ・アラウジョ・ブリット): [typescript-language-features] 展開可能なホバー PR #228255
- @gjsjohnmurray (ジョン・マレー)
- プレビューエディタータブのホバーにアクションを追加 PR #226023
- ワークスペース拡張機能アクティベーション失敗メッセージのtypoを修正 PR #227348
- ステータスバーのデバッグパネルのツールチップのキャピタライズを修正(fix #228088) PR #228089
- @henricryden: check-requirements-linux.shでのlibc.so.6の追加検索パス PR #227713
- @janssen-tiobe (ヤンセン): 修正: 問題パネルのテーブルビューでのアグレッシブなURIエンコーディング PR #224841
- @jeanp413 (ジャン・ピエール): リロード後の初期ターミナル寸法が正しくない問題を修正 PR #225554
- @jjaeggli (ジェイコブ・ジェグリ): ctrl+alt+spaceで詳細を提案するドキュメントフォーカス PR #190096
- @juliapz (ジュリア・ポズデーエバ): AUXウィンドウで検索ウィジェットが切り取られるのを防ぐ PR #229001
- @marrej (マーカス・レヴァイ): # リファクタリングプレビューでファイル作成をレンダリング PR #226950
- @nojaf (フロリアン・ヴェルドンク)
- Workerを使ってノートブックをシリアル化する PR #226632
- ErrorNoTelemetryメッセージにIDを含める PR #226715
- @PhantomPower82: Getting Startedページを洗練する(fix #226991) PR #226994
- @rafamerlin (ラファエル・マーリン): インレイヒントの長さを設定可能にする PR #221276
- @rehmsen (オーレ)
- 順序依存を避けるため、
setup
でテスト変数を初期化する。 PR #226596 - ノートブックセルごとに複数のコメントウィジェットをサポート。 PR #226770
- 順序依存を避けるため、
- @remcohaszing (レムコ・ハスジング): test-results.xmlを.gitignoreに追加 PR #214238
- @repraze (トーマス・デュボスク): fix: browser/hover.cssでendをflex-endにスワップ PR #224102
- @segevfiner (セゲフ・ファイナー): カスタムテキストエディタに拡張ホスト再起動を適用 PR #225985
- @SimonSiefke (シモン・シーフケ): fix: デバッグビューでのメモリリーク PR #225334
- @sunnylost (sunnylost): 拡張機能: テーブルセルコンテンツを段落要素で囲む PR #228365
- @tisilent (xiejialong): エディターGPUレンダリングフォールバックを追加 PR #228414
- @tmm1 (アマン・カルマニ): macOSでcreateDirectoryWatcher(~/Library)に対するtsserverリクエストを無視する PR #227653
vscode-docs
への貢献
- @0dinD (オーディン・ダールストローム): サポートされているJavaバージョンを更新 PR #7561
- @alexwkleung (アレックス・リョン): JupyterサーバーURLの入力スクリーンショットを更新 PR #7584
- @DiskCrasher (マイク): コード内の「!」の欠落を修正 PR #7595
- @gaganshera (ガガンジョット・シン): prompt-crafting.mdを更新 PR #7555
- @harish-s-developer (ハリシュ・スリニヴァサン): 新しい「依存関係の管理」セクションを追加し、typoを修正 PR #7617
- @harrydowning (ハリー・ダウニング): プレリリース・タグに関する誤った記述を削除 PR #7593
- @listsarah (サラ・リッツワン): Issue #7536をクローズするため: 「組み込みプログラミング言語」を更新 PR #7539
- @mistymadonna (ミスティ・ヘイズ): Azure Extensionsホームページを更新、新しいGetting Startedページを作成 PR #7520
- @muzimuzhi (周 渝凱): Typo、欠落しているインラインコードマークアップを追加 PR #7589
- @partev: URLリダイレクトを修正 PR #7608
- @Sarke (ピーター・スタールマン): 別のFlatpak/KDE5ウォレットの回避策 PR #7606
- @seaniyer (ショーン): publishing-extension.md を更新 PR #7540
- @vinistock (ヴィニシウス・ストック): Rubyリンクを新しいドキュメントに更新 PR #7607
- @wjandrea (ウィリアム・アンドレア)
vscode-extension-samples
への貢献
- @liu3hao (ウェイハオ): 欠落しているアクティベーションイベントを追加 PR #1057
vscode-js-debug
への貢献者
- @lucacasonato (ルカ・カソナート): fix: DenoでNODE_OPTIONSを注入しない PR #2080
vscode-jupyter
への貢献者
- @rchiodo (リッチ・キオド): display_nameの変更がカーネル変更イベントを引き起こすようにする PR #15967
vscode-languageserver-node
への貢献者
- @StellaHuang95 (ステラ):
CodeAction
のllmGenerated
プロパティをサポート PR #1557
vscode-pull-request-github
への貢献者
vscode-python-debugger
への貢献者
- @rchiodo (リッチ・キオド): debugpy情報を最新の出荷バージョンに更新 PR #462
vscode-vsce
へのコントリビューション
- @mlasson (マルク・ラッソン): オプションヒントのタイポを修正 PR #1046
vscode-wasm
への貢献
- @mlugg (マシュー・ラッグ): ストリームバグを修正 PR #196
language-server-protocol
への貢献者
- @aschaber1 (アレクサンダー・シャバー): chore:
kubernets
からkubernetes
へのタイポ修正 PR #2013 - @dawedawe (dawe): CompletionParamsのドキュメントのタイプミスを修正 PR #2019
- @didrikmunther (ディドリック・マンサー): pullDiagnostics.mdのスペルミスを修正 PR #2022
- @InSyncWithFoo (インシンク)
- @SamB (サミュエル・ブロンソン): servers.mdを更新: vscode-markdown-languageserverが移動 PR #2012
- @sh-cho (チョ・ソンヒョン): fluent-bit言語サーバー実装を追加 PR #2016
- @StellaHuang95 (ステラ):
CodeAction
のllmGenerated
プロパティをサポート PR #2020