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月リリースへようこそ。今回のバージョンでは、多くのアップデートが含まれており、気に入っていただけると幸いです。主なハイライトは以下の通りです。
- エクスプローラーでの検索 - 改善された検索コントロールで、エクスプローラービュー内のファイルを素早く検索できます。
- ソース管理グラフ - ソース管理グラフでのより多くのフィルタリングオプションとインタラクティブ性。
- Python テストカバレッジ - カバレッジ付きでPythonテストを実行し、エディターで詳細な結果を取得できます。
- ESM - ESMへの移行により、VS Codeの起動が高速化されました。
- アカウント設定 - 拡張機能で使用するアカウントを指定します。
- ネイティブREPLでのCopilot - ネイティブREPLでコード補完とインラインチャットを利用できます。
- チャットコンテキストの改善 - ファイルのドラッグ&ドロップまたはIntelliSenseを使用して、より関連性の高いチャットコンテキストを提供できます。
- テスト環境のセットアップ - ワークスペースのテストフレームワークのセットアップを支援します。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com のUpdatesをご覧ください。Insiders: 新機能をできるだけ早く試したいですか?毎晩リリースされるInsidersビルドをダウンロードして、最新のアップデートをすぐに試すことができます。
GitHub Copilot
チャットで言語モデルを切り替える
以前、OpenAI o1 モデルの早期アクセスにサインアップできることを発表しました。アクセス権を取得すると、VS Code の Copilot Chat に Copilot Chat モデルピッカーコントロールが表示され、チャット会話で使用するモデルバージョンを選択できます。
インラインチャットのGPT-4o
Copilot インラインチャットを GPT-4o にアップグレードし、エディターでチャットを使用する際に、より速く、より正確で、より高品質なコードと説明を提供できるようになりました。
チャットでの公開コードの一致
GitHub Copilot が GitHub.com で公開されているコードと一致するコードを返すことを許可できます。この機能が組織のサブスクリプションまたは個人サブスクリプションで有効になっている場合、Copilot のコード補完はすでに検出された一致に関する詳細を提供していました。今回、Copilot Chat でも公開コードの一致を表示するようになりました。
これが組織またはサブスクリプションで有効になっている場合、応答の最後に「View matches」リンクを含むメッセージが表示されることがあります。リンクを選択すると、一致するコード参照の詳細が表示されるエディターが開きます。
GitHub Blog で 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に間違ったアカウントでサインインしてしまい、別のアカウントを使用する必要がある場合などです。
これで、後から複数の方法でその設定を変更できるようになりました。
-
アクティビティバーのアカウントメニュー > <ご自身のアカウント> > 信頼された拡張機能を管理 > 拡張機能のギアアイコンを選択
-
拡張機能ビュー > 認証を使用する拡張機能のコンテキストメニュー (またはギアアイコン) > アカウント設定を選択
-
拡張機能の詳細ビュー > ギアアイコン > アカウント設定を選択
これらのいずれかのオプションを選択すると、拡張機能が使用するアカウントを変更できるクイックピックが表示されます。
拡張機能のアカウント設定を変更すると、イベントが拡張機能に送信され、拡張機能がそれを適切に処理するかどうかは拡張機能次第です。期待される動作が見られない場合は、その拡張機能の問題を報告してください。そうすることで、アカウント設定エクスペリエンスが適切に処理されるようになります。
また、このフローについてご意見があればお知らせください。
プロファイルに関連付けられたフォルダーとワークスペースを表示
このマイルストーンでは、プロファイルエディターにフォルダーとワークスペースセクションを導入しました。このセクションには、特定のプロファイルに関連付けられたすべてのフォルダーとワークスペースが中央の場所から一覧表示されます。このセクションから、フォルダーの追加または変更、または新しいウィンドウでフォルダーまたはワークスペースを開くことができます。
すべてのプロファイルで拡張機能を更新
このマイルストーンでは、すべてのプロファイルで拡張機能を更新する機能が導入されました。これは、複数のプロファイルを持っていて、拡張機能のバージョンを同期させたい場合に便利です。以前は、各プロファイルに切り替えて、そのプロファイルの拡張機能を更新する必要がありました。
拡張機能ビューでの警告
拡張機能ビューに、無効な拡張機能やバージョン非互換性により無効化されている拡張機能がある場合に、警告バッジと関連情報が表示されるようになりました。
エクスプローラーでの検索
エクスプローラービューの検索機能を改善し、大規模なプロジェクトでファイルを検索しやすくしました。⌥⌘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 は、Debug Adapter Protocol の新しいテキストスタイル設定機能をサポートしています。これにより、変数ビュー、ウォッチビュー、ホバー、およびデバッグコンソール内のデータを 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 ブログをご覧ください。以下のセクションでは、ツールのハイライトもいくつかご紹介します。
いくつかの一般的な「常に真」のプログラミングミスの検出
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 リリースノートをご覧ください。
リモート開発
リモート開発拡張機能を使用すると、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.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 サンドボックスと互換性があることを確認できます。
影響を受ける可能性のある拡張機能やネイティブアドオンを特定するためのテレメトリも追加しました。これにより、拡張機能の作者に積極的に連絡を取り、可能な限り支援を提供できます。拡張機能が影響を受け、上記の提案がどれも機能しない場合は、ディスカッションスレッドにコメントを残してください。喜んでお手伝いさせていただきます。
デバッグアダプタープロトコル
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つの部分があります。
-
拡張機能がツールを登録する機能。ツールとは、言語モデルが使用することを意図した機能の一部です。例えば、ファイルの 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): Markdown プレビューで 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 を使用して Notebook をシリアル化 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): test-results.xml を .gitignore に追加 PR #214238
- @repraze (Thomas Dubosc): fix: browser/hover.css で flex-end のために 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 をクローズ: "Embedded Programming Languages" を更新 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): debugpy 情報を最新の出荷バージョンに更新 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