に参加して、VS Code の AI 支援開発について学びましょう。

2024年6月(バージョン 1.91)

アップデート 1.91.1:このアップデートは、以下の問題に対処します。

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


Visual Studio Code の2024年6月リリースへようこそ。このバージョンには多くのアップデートがあり、気に入っていただけることを願っています。主なハイライトの一部を以下にご紹介します。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.comアップデート をご覧ください。インサイダー: 新機能をいち早く試したいですか?夜間の インサイダー ビルドをダウンロードして、最新の更新プログラムが利用可能になり次第すぐに試すことができます。

アクセシビリティ

エディターホバーのアクセシブルビュー

コーディング時のアクセシビリティを向上させるため、アクセシブルビューアクセシビリティヘルプメニューで、エディターのホバー情報を表示できるようになりました。ホバーのフォーカスされている部分に応じて、フォーカスされている部分またはホバーのコンテンツ全体に関する情報が表示されます。

Accessible View showing the contents of the editor hover information.

ワークベンチでリンクを通常のテキストと区別しやすくするために、設定 accessibility.underlineLinks を有効にしてリンクに下線を引くことができます。

The run and debug view showing a mix of regular text and underlined links.

Workbench

ripgrep 検索エンジンが使用するスレッド数を制限できる新しい設定 search.ripgrep.maxThreads を追加しました。この設定は、検索がコア製品によって使用されるか、拡張機能 API を介して使用されるかに関わらず適用されます。

search.ripgrep.maxThreads をゼロ以外の値に設定して、スレッド数を構成します。この設定を特定の値に固定すると ripgrep の速度が低下する可能性があるため、注意してください。

推測のために許可されるエンコーディングを調整

新しい設定 files.candidateGuessEncodings を使用すると、files.autoGuessEncoding が有効になっている場合に考慮すべきエンコーディングのセットを構成できます。構成の順序が優先度を決定します。この機能を使用すると、検出できる可能性のあるエンコーディングをより小さなセットに制限し、あるエンコーディングを別のエンコーディングよりも優先させることができます。

プロファイルエディターのプレビュー

このマイルストーンでは、プロファイルを1か所で管理できる新しいプロファイルエディターを導入しました。このエクスペリエンスには、新しいプロファイルの作成、既存のプロファイルの編集と削除、および他のユーザーと共有するためのプロファイルのインポートとエクスポートが含まれます。新しいプロファイルを作成する際には、プロファイルを保存する前にプレビューし、必要に応じてカスタマイズできます。プロファイルエディターでは、特定のプロファイルで新しいウィンドウを開いたり、新しいウィンドウのデフォルトプロファイルとしてプロファイルをセットアップしたりすることもできます。

Profiles Editor showing all user profiles and their settings.

プロファイルエディターは、workbench.experimental.enableNewProfilesUI 設定の背後にある実験的機能として利用できます。有効にすると、ウィンドウの左下隅にある設定ギアアイコンからプロファイルエディターにアクセスできます。

Settings menu showing the Profiles menu item to open the Profiles Editor.

ぜひ試してみて、このエクスペリエンスをさらに改善するためのフィードバックをお寄せください。

「プロファイル付き新規ウィンドウ」メニュー項目

プロファイルエディターに加えて、「ファイル」メニューに特定のプロファイルで新しいウィンドウを開くアクションを追加しました。「ファイル」>「プロファイル付き新規ウィンドウ」メニューを使用して、特定のプロファイルで新しいウィンドウを開きます。

Screenshot of the File menu showing the New Window with Profile menu items.

拡張機能のインストールオプション

拡張機能をインストールする際の柔軟性を高めるために、さらにオプションを追加しました。

  • 拡張機能を同期せずにインストールします。
  • 特定のバージョンの拡張機能をインストールします。以前は、特定のバージョンを選択する前に、まず最新バージョンの拡張機能をインストールする必要がありました。

これらのアクションは、拡張機能ビューの拡張機能のコンテキストメニューから利用できます。

Context menu for the Extensions view, showing the additional install actions.

カスタムラベルでファイル拡張子にアクセス

カスタムラベルを定義する際に、${extname(N)} 構文を使用して個々のファイル拡張子にアクセスできる柔軟性が増しました。さらに、${extname(N)} は逆順でファイル拡張子をキャプチャするための負のインデックスもサポートしています。ファイル拡張子全体を取得するには、${extname} を使用します。

例:ファイル tests/editor.test.ts の場合

  • ${filename} => editor
  • ${extname} => test.ts
  • ${extname(0)} => ts
  • ${extname(1)} => test
  • ${extname(-1)} => test
  • ${extname(-2)} => ts

複数の拡張機能からのカスタムラベルパターンをマージ

2つの拡張機能が、それぞれの configurationDefaults で設定 workbench.editor.customLabels.patterns のデフォルト設定を提供する場合、提供されたパターンは結合されます。

"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout"
}
"workbench.editor.customLabels.patterns" : {
  "**/components/**/index.tsx": "${dirname} - Component"
}
拡張機能1によるデフォルトの貢献 拡張機能2によるデフォルトの貢献
"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout",
  "**/components/**/index.tsx": "${dirname} - Component"
}
結果のカスタムラベルパターン

テーマの色を解除

テーマが気に入らない色や境界線を設定している場合、default を使用して元の値に戻すことができるようになりました。

  "workbench.colorCustomizations": {
      "diffEditor.removedTextBorder": "default"
  }

折りたたみプレースホルダーの色の変更

折りたたみプレースホルダー(省略記号)に、editor.foldPlaceholderForeground の色でテーマを設定できるようになりました。

Editor

保存時のコードアクション

editor.codeActionsOnSave 設定を使用すると、ファイルを保存するときに自動的に適用される一連のコードアクション(インポートの整理など)を構成できます。ワークスペースファイルとアクティブな拡張機能に基づいて利用可能なコードアクションのリストを提供することで、この設定を構成するための IntelliSense を改善しました。

:現時点では truefalse も有効な設定ですが、これらは explicitalwaysnever に置き換えられて非推奨となる予定であることに注意してください。例については、保存時のコードアクションドキュメントを参照してください。

読み取り専用ファイルステータスを素早くオフに

files.readonlyInclude 設定を介してファイルを読み取り専用として構成した場合、読み取り専用エディターメッセージからファイルの読み取り専用ステータスを素早く切り替えることができるようになりました。

Read-only editor message enabling you to toggle the read-only status.

ソース管理

受信/送信変更グラフのプレビュー

受信および送信の変更を代替的に視覚化することを検討してきました。このマイルストーンには、グラフを使用して受信および送信の変更を視覚化する実験的な機能が含まれています。グラフには、現在のブランチ、現在のブランチのアップストリームブランチ、およびオプションのベースブランチが含まれます。グラフのルートは、これらのブランチの共通の祖先です。

scm.experimental.showHistoryGraph 設定を使用すると、この新しい視覚化を有効にできます。この視覚化で利用可能な機能を改善および拡張し続けているので、ぜひ試してみて、ご意見をお聞かせください。

Source control view showing a graph visualization of the incoming and outgoing changes.

ノートブック

テキスト選択範囲内で検索

ノートブックの検索コントロールに、テキスト選択およびセル選択のための「選択範囲内で検索」機能が追加されました。この動作はデフォルトで有効になっており、コントロール内のボタンで制御できます。選択範囲のコンテキストに基づいて、このボタンを切り替えることで、検索クエリが1つまたは複数の選択されたセル、またはセル内の行にスコープされます。

コンテキストメニューからテキスト出力をコピーまたは開く

ノートブックでテキスト出力を操作する際に、テキスト出力のコンテキストメニューを使用して、出力値をコピーしたり、新しいエディターで出力を開いたりできるようになりました。この機能により、大規模なストリーミング出力を簡単に確認できます。

ターミナル

コピー&ペーストエスケープシーケンス (OSC 52) のサポート

OSC (Operating System Command) 52 エスケープシーケンスがサポートされました。これはターミナルで実行されているあらゆるものに使用できますが、主なユースケースは tmux のクリップボードアクセスです。

新しいカスタムグリフ

ターミナルは、ブランチ、行番号、およびロックの Powerline シンボルのカスタムグリフをサポートするようになりました。GPU アクセラレーションが有効になっている場合、他のカスタムグリフと同様に、これらのシンボルはフォントを設定する必要なく機能します。

Characters 0xe0a0, 0xe0a1 and 0xe0a2 render with their Powerline symbols.

これらのシンボルは、フォントサイズ、行の高さ、または文字間隔が調整された場合でも、セルと完璧にスケーリングします。

The new symbols scale vertically and horizontally when a custom font size, line height or letter spacing is used.

デバッグ

JavaScriptデバッガー

JavaScript デバッガーは、プログラムのスコープに基づいて、シャドウされた変数をホバー時およびインライン値(debug.inlineValues 設定で有効)で正しい値で表示するようになりました。

JavaScript code snippet that shows an overlay with the value of shadowed variables.

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

言語

TypeScript 5.5

TypeScript 5.5 を含むようになりました。このメジャーアップデートには、多くの新しい言語機能とツール改善が含まれています。このリリースに関する詳細は、TypeScript 5.5 ブログ記事をご覧ください。

正規表現の構文チェック

TypeScript 5.5 のおかげで、JavaScript と TypeScript の正規表現リテラルにおける多くの構文エラーが報告されるようになりました。これには、未閉じのグループ、誤った逆参照、無効なエスケープなどのエラーが含まれます。

Editor showing a regex error for an invalid group caused by an extra parenthesis.

Editor showing a regex error for an invalid escape sequence

詳細については、TypeScript 5.5 ブログ記事をご覧ください。

拡張機能への貢献

GitHub Copilot

コンパクトなインラインチャット

インラインチャットのレンダリングがよりコンパクトになり、提案を読みやすく理解しやすくなりました。inlineChat.experimental.textButtons を介して有効にできる、より物語的なスタイルのボタンテキストも試しています。

Sample of more compact inline chat in the editor.

ターミナルの初期ヒント

インラインチャットの発見を助けるための新しいヒントがターミナルに表示されます。

The terminal will say "Press Ctrl+I to ask GitHub Copilot to do something. Start typing to dismiss"

このヒントは、Copilot 拡張機能がインストールされており、インタラクションのない単一のターミナルがある場合にのみ表示されます。メッセージを右クリックするだけで、メッセージを永続的に閉じることができます。また、ターミナルのインラインチャットを初めて使用すると、メッセージは閉じられます。

コードブロックを適用

チャットビューのコードブロックにある「エディターに適用」コマンドは、言語モデルを使用して、現在のエディターに変更を適用するための最適なアプローチを決定します。

Chat view showing the Apply In Editor command for a code block in a chat response.

Python

python-environment-tools を使用した Python 環境検出

グローバルな Python インストールと Python 仮想環境の検出速度を大幅に向上させるために設計された新しいツール、python-environment-tools をご紹介できることを嬉しく思います。このツールは Rust を使用して、迅速かつ正確な検出プロセスを保証します。

現在、Python 拡張機能における新しい検出パフォーマンスを評価するため、既存のサポートと並行してこの新機能をテストしています。そのため、この新しいツールを使用した検出時間を示す Python Locator という新しいログチャネルが表示されます。

この機能強化は、VS Code での Python サポートのパフォーマンスと効率を最適化するための継続的な取り組みの一部です。この機能、進行中の作業、およびフィードバックの提供に関する詳細については、python-environment-tools リポジトリをご覧ください。

ネイティブ REPL でのスマート送信

Python 拡張機能で、VS Code ネイティブ REPL でのスマート送信が有効になりました。

以前は、Python コードの行にカーソルを置いて Shift+Enter を押すと、Python 拡張機能は、たとえそれが複数行コマンドの一部であるために失敗する場合でも、正確な行の内容をネイティブ REPL に送信していました。

現在、Shift+Enter は、非ネスト化シナリオでは最小限の実行可能コードを送信し、ネスト化シナリオでは最上位のコードブロックを送信します。これにより、ユーザーはファイルを素早く Shift+Enter することで、最小限の労力で最大限の実行可能コードを実行できます。

reStructuredText ドキュメント文字列のサポート

Pylance は、ホバー時に reStructuredText ドキュメント文字列(docstrings)をレンダリングする機能をサポートするようになりました!

この機能は初期段階であり、さまざまな Sphinx、GoogleDoc、および Epytext のシナリオを効果的に処理することを保証するために取り組んでいる間、現在はフラグの背後にあります。試すには、実験的な設定 python.analysis.supportRestructuredText を有効にすることができます。

Docstring displayed when hovering over the panel module.

この変更を試して、Pylance GitHub リポジトリで問題やフィードバックを報告してください。

:この設定は実験的なものであり、この新機能が安定し、デフォルトで有効になるにつれて、将来的に削除される可能性があります。

GitHub Pull Requests and Issues

GitHub Pull Requests 拡張機能は、プルリクエストや課題の作業、作成、管理を可能にし、さらなる進歩を遂げました。新しい機能には以下が含まれます。

  • チェックアウトされた PR のコミットサブツリーにコミット日付が表示されます。
  • 多数のバグ修正。

その他のハイライトについては、拡張機能の 0.92.0 リリースの変更ログを参照してください。

ESLint

ESLint 拡張機能は、フラット設定ファイル形式をサポートするようになりました。この拡張機能は引き続き eslintrc ファイルをサポートしており、eslint.useFlatConfig 設定を使用して、どの設定ファイル形式を使用するかを制御できます。

eslintrc ファイル形式の非推奨化と削除に関する ESLint の計画を理解するには、ESLint フラット設定ロールアウト計画を参照してください。

拡張機能作成

チャットと言語モデル API

先月、拡張機能がチャットに参加し、言語モデルにアクセスできるようにする API を完成させましたが、これらは VS Code Insiders でのみ利用可能でした。このリリースでは、これらの API は VS Code Stable で完全に利用可能になりました。

これらの API の詳細と、初期採用者がどのように使用しているかについては、発表ブログ記事をご覧ください。

開始するには、拡張機能サンプルチャット拡張機能ドキュメントにアクセスしてください。

オブジェクト設定のデフォルト値の処理

複数の拡張機能が同じオブジェクト設定にデフォルト値を提供する場合、これらのデフォルト値は結合されるようになりました。これにより、拡張機能間の競合が防止されます。

DebugSessionOptions.testRun API の完成

テスト実行からデバッグセッションを開始する拡張機能は、vscode.debug.startDebugging を呼び出すときに、その実行を DebugSessionOptions に渡すことができるようになりました。渡されると、デバッグセッションの再起動などのライフサイクルアクションも新しいテスト実行を作成します。

Debug Adapter Protocol

Debug Adapter Protocol にいくつか注目すべき変更が加えられました。

  • 新しい Scope.presentationHint = returnValue オプションによる戻り値の表記。
  • evaluate リクエストへのソースロケーションの追加。VS Code はこれを実装し、ホバーやインライン値を評価するときにロケーションを渡します。

提案されたAPI

言語モデルのツールと関数

ツールまたは関数の呼び出しを可能にする API 提案を追加しました。この API には2つの主要な部分があります。

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

  2. 言語モデルがツールをサポートするための仕組み。たとえば、リクエストを行うときに拡張機能がツールを渡し、言語モデルがツールの呼び出しを要求し、拡張機能がツールの呼び出しの結果を返すなどです。

提案は vscode.proposed.lmTools.d.ts として見つけることができます。

: この API はまだ活発に開発中であり、変更される可能性があります。また、VS Code には適切なデフォルトツールが付属する予定です。

認証 getSessionsgetAccounts に変更

私たちは複数のアカウント認証プロバイダーをサポートしていますが、常に欠けていたのは、すべてのセッションを取得し、特定のセッションに対してアクションを実行する機能でした。以前は、これを解決しようとする getSessions API の提案がありましたが、実験と人気のある認証ライブラリからのインスピレーションを受けて、問題を解決するために異なるアプローチを取っています。

以前提案されていた getSessions API から、「アカウント」と「セッション」の概念を分離するアプローチに変更しました。

認証セッションを使用しようとする拡張機能の作成者は、次のコードを実行して、ユーザーがログインしているアカウントの AuthenticationSessionAccountInformation を取得できます。

const accounts = vscode.authentication.getAccounts('microsoft');

そこから、これらのアカウントを使用して、それらのアカウントに特化したセッションを発行できます。

const session = vscode.authentication.getSession('microsoft', scopes, {
  account: accounts[0]
});

:これを機能させるには、認証プロバイダーが新しいパラメーターを処理する必要があります。これについては、以下の API 提案で読むことができます。

これにより、複数の認証セッションをはるかに明確に処理できるようになり、以前はサポートできなかったさまざまなシナリオを処理できるようになると考えています。

提案は、この提案の以前の名前を使用した vscode.proposed.authGetSessions.d.ts として見つけることができます。これは、この提案に依存する既存のコードを壊さないためです。

コメントスレッドの表示

コメントを提供する拡張機能が、エディターで自身のコメントスレッドを表示できるようにする API 提案を追加しました。この API は、スレッドを表示するときにフォーカスを維持するか、スレッドの返信ボックスにフォーカスするかを選択するオプションを提供します。

提案は vscode.proposed.commentReveal.d.ts で利用できます。

属性付きテストカバレッジ

テストごとにテストカバレッジを関連付けることを可能にするAPIに取り組んでいます。これにより、ユーザーはどのテストがどのコードを実行したかを確認でき、エディターに表示されるカバレッジとテストカバレッジビューに表示されるカバレッジの両方をフィルタリングできます。

詳細と更新については、vscode#212196 を確認してください。

エンジニアリング

NLSとAMDローダーの分離

このマイルストーンでは、VS Code のコアネイティブ言語サポート (NLS) と、出荷している非同期モジュール定義 (AMD) ローダーとの依存関係を削除し始めました。将来の目標は、ECMAScript モジュール (ESM) ローディングを使用し、AMD を完全に廃止することです。この方向で進むために、AMD ローダープラグインの依存関係を削除します。動作に違いは気づかないはずで、私たちがサポートしていたすべての翻訳は、ウェブとデスクトップの両方で引き続きサポートされます。

注目すべき修正点

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-css-languageserviceへの貢献者

vscode-extension-samplesへの貢献

vscode-html-languageserviceへの貢献

vscode-languageserver-nodeへの貢献者

vscode-python-tools-extension-template への貢献

node-jsonc-parserへの貢献

  • @Vbbab: ビジターがコールバックを停止できるようにする PR #88

© . This site is unofficial and not affiliated with Microsoft.