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

2024年5月 (バージョン 1.90)

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

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

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


Visual Studio Code 2024年5月リリースへようこそ。このバージョンには、気に入っていただけるであろう多くの更新が含まれています。主なハイライトは以下の通りです。

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

アクセシビリティ

アクセシビリティヘルプダイアログからキーバインディングを設定

アクセシビリティヘルプダイアログでは、機能またはビューの重要なコマンドの概要が表示されます。コマンドにキーバインディングが割り当てられていない場合、アクセシビリティヘルプダイアログ内から ⌥K (Windows, Linux Alt+K) で構成できるようになりました。

実験的機能: 信号遅延設定

Debounce position changes の設定が有効になっている場合、Signal options delays の設定を使用して、さまざまなアクセシビリティ信号のデバウンス時間をカスタマイズできます。

Workbench

エディタータブの複数選択

複数のタブを同時に選択できるようになり、一度に複数のエディターにアクションを適用できるようになりました。この新機能により、1つのアクションで複数のタブを移動、固定、または閉じることができます。選択範囲に別のタブを追加するには、Ctrl + Click (macOS では Cmd + Click) を使用します。タブの範囲を選択するには、Shift + Click を使用します。

エディターアクションを常に表示

Always Show Editor Actions 設定を導入しました。この設定を有効にすると、エディターがアクティブであるかどうかにかかわらず、各エディターグループのエディタータイトルアクションが常に表示されます。

この設定が有効になっていない場合(デフォルト値)、エディターアクションはエディターがアクティブな場合にのみ表示されます。

Editor Actions of each group when the setting is disabled

この設定を有効にすると、エディターがアクティブでなくても、エディターアクションは常に利用可能になります。

Editor Actions of each group when the setting is enabled

disable-lcd-text をランタイム引数として設定

disable-lcd-text を使用すると、Windows で RGB サブピクセルレンダリングを無効にできます。disable-lcd-text 設定は、argv.json ファイルでランタイム引数としてサポートされるようになりました。以前は、文書化されていない CLI フラグとしてのみ利用可能でした。ランタイム引数を構成するには、Preferences: Configure Runtime Arguments コマンドを使用します。

以下の画像では、disable-lcd-texttrue の左側と、false の右側の比較が並んで表示されています。

Comparison showing that disable-lcd-text disables RGB subpixel rendering

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

新しいウィンドウのカスタムプロファイルを設定

以前は、新しい VS Code ウィンドウを開くと、アクティブなウィンドウのプロファイル、またはアクティブなウィンドウがない場合はデフォルトのプロファイルが使用されていました。window.newWindowProfile 設定を構成することで、新しいウィンドウを開くときに使用するプロファイルを指定できるようになりました。

Configure custom profile for new window

ソース管理

入力/リソースグループコマンドにフォーカス

このマイルストーンで、いくつかのワークベンチコマンドが追加され、それらのキーボードショートカットを作成できるようになりました。

  • 次のまたは前のソースコントロール入力フィールドにフォーカス: workbench.scm.action.focusNextInput, workbench.scm.action.focusPreviousInput
  • リポジトリ内の次のまたは前のリソースグループにフォーカス: workbench.scm.action.focusNextResourceGroup, workbench.scm.action.focusPreviousResourceGroup

ノートブック

セル選択内で検索

ノートブックで、選択したセルの特定の範囲内で検索コントロールを使用して検索できるようになりました。

notebook.experimental.find.scope.enabledtrue に設定すると、検索コントロールにFind in Cell Selection トグルが表示されます。その後、セルの範囲を選択し、検索コントロールを開くか、すでに開いている場合は「Find in Cell Selection」ボタンを選択できます。

ノートブックのフォーマットコードアクション

ノートブックは、notebook.format Code Action Kind プレフィックスで定義された新しい種類の Code Action をサポートするようになりました。これらの Code Action は、明示的なフォーマットリクエスト (Notebook: Format Notebook コマンドを使用) または保存時のフォーマットリクエストを介して自動的にトリガーできます。

これらは、ワークスペース編集とノートブック編集の使用を通じて、より強力なフォーマットを提供するために使用できます。開始するには、vscode-extension-samples リポジトリの拡張機能の例を確認してください。

ターミナル

⚠️ キャンバスレンダラーの削除

キャンバスレンダラーは VS Code 1.89 リリースで非推奨となり、完全に削除されました。これは、WebGL2 をサポートしない少数のマシンでは、ターミナルが DOM ベースのレンダラーを使用することを意味します。GPU アクセラレーションの詳細については、ターミナルのドキュメントを参照してください。

ターミナルでの重複グリフのスケーリング

VS Code 1.88 リリースでプレビュー機能として導入された設定 terminal.integrated.rescaleOverlappingGlyphs は、デフォルトで有効になりました。この機能は、あいまいな幅の文字をカバーすることを意図しており、バックエンドの pty/unicode バージョンが想定しているものとフォントグリフが一致しない可能性がある、重複するグリフをスケーリングします。

たとえば、ほとんどのフォントでは、ローマ数字のユニコード文字 (U+2160+) は通常複数のセルを占めるため、この設定が有効になっている場合、水平方向にスケーリングされます。

スケーリングなし

Before the glyphs for Ⅷ and Ⅻ depending on the font would always overlap the following cells

スケーリングあり

After the glyphs for Ⅷ and Ⅻ depending on the font are rescaled horizontally to fit a single cell

拡張機能への貢献

GitHub Copilot

チャットにコンテキストを添付

チャットのプロンプトをより具体的にするために、チャットメッセージにコンテキストを追加できます。ワークスペースシンボルなど、より多くの種類のコンテキストをチャットメッセージに添付できるようになりました。以前は、ファイルまたは現在の選択を参照するために「#」記号を使用していました。これで、チャットビューの入力フィールドにある📎アイコンを選択するか、⌘/ (Windows、Linux Ctrl+/) と入力することで、チャットメッセージにコンテキストを添付できます。

ヒント: 右矢印キーを使用して、コンテキストピッカーを開いたまま、バックグラウンドでコンテキストをすばやく添付できます。エディターにいる場合は、選択範囲を右クリックしてCopilot > Add Selection to Chatを選択することもできます。

Bing 検索と企業知識ベースを使用して質問する

VS Code の GitHub Copilot Enterprise ユーザーは、Web の結果や企業の 知識ベースからのコンテキストで強化された質問をできるようになりました。この機能を試すには、Copilot Chat の最新のプレリリース版をインストールしてください。

チャットビューで、@github What is the latest LTS of Node.js? #web のような質問をして、Web 検索を利用できます。Copilot が参照する検索結果は、チャット応答の Used References セクションに表示されます。

Web search results in Copilot Chat

また、ドキュメントを含む Markdown リポジトリのコレクションである企業の知識ベースについて、VS Code から直接質問することもできます。@github #kb と入力するだけで、利用可能な知識ベースから選択できます。同様に、Copilot が参照する知識ベースの抜粋は、チャット応答の Used References セクションに表示されます。

これにより、Copilot Enterprise ユーザーは、#file#selection などの既存のチャット変数を使用して、検索結果と内部ドキュメントをエディターコンテキストと組み合わせることができます。ぜひお試しいただき、https://github.com/microsoft/vscode/issues でフィードバックをお寄せください!

チャットコードブロックでの IntelliSense

Copilot が生成するコードブロック内で基本的な IntelliSense をサポートするようになりました。これにより、エディターですでに使用している多くの IntelliSense ツールを使用でき、生成されたコードをよりよく理解するのに役立ちます。

Hover IntelliSense in Copilot chat code block

サポートされている IntelliSense 機能は次のとおりです。

  • Ctrl クリック / Cmd クリック または F12 を使用した定義への移動
  • ホバー
  • 実装への移動
  • 型定義への移動

IntelliSense は @workspace と組み合わせて使用​​することもでき、Copilot の応答で使用されているワークスペースシンボルについて学習できます。

TypeScript、JavaScript、HTML、CSS のコードブロックの IntelliSense はすぐに利用できます。追加の言語サポートについては、その言語の拡張機能をインストールしてみてください。ただし、すべての言語拡張機能がコードブロックの IntelliSense をすでにサポートしているわけではありません。まだこれをサポートしていない言語については、機能リクエストを提出してください。

ファイル名とシンボルのリンクを追加することで、チャット応答を改善しました。これらのリンクを選択すると、エディターで対応するファイルまたはシンボルに移動できます。

Clickable links for symbols used with /explain

Clickable file and symbol links for an @workspace question

インラインチャットとチャットビュー間のアクティブなチャットを移動

完了した、またはまだアクティブなチャットリクエストをインラインチャットからチャットビューに移動できるようになりました。この機能を使用して、インラインチャットをクリーンアップし、会話をより永続的な場所に移動できます。リクエストを移動するには、チャット入力ボックスの横にあるチャットアイコンを選択します。

Move a chat conversation from inline chat to the Chat view

自動名前変更の提案

Copilot Chat 拡張機能を使用している場合、シンボルを名前変更すると、Copilot が提供する名前変更の提案が自動的にトリガーされるようになりました。この機能は、github.copilot.renameSuggestions.triggerAutomatically 設定を使用してオフにすることができます。

Python

テストのバグ修正

Python Testing Rewrite を使用した pytest のエクスペリエンスが改善され、pytest の cwd を VS Code ワークスペースルートに隣接して設定する際のサポートが向上し、関数名がクラス間で繰り返される場合のテストエクスプローラーでのパラメータ化されたテストの表示が改善されました。

さらに、システム構成スクリプトパスを PATH に追加してテスト実行用のシェルを有効にすることで、いくつかのテスト検出失敗シナリオを削減しました。

実験的: IntelliSense と構文ハイライトを備えた Python ネイティブ REPL

IntelliSense や構文ハイライトなどの機能を備えたエディターのような REPL 環境で Python コードを実行できるようになり、REPL とのやり取りがより効率的になりました。この機能を有効にするには、settings.json ファイルで "python.REPL.sendToNativeREPL": true を設定します。これにより、Shift+EnterRun Selection/Line で Python ネイティブ REPL でコードが実行されます。

settings.json"python.REPL.sendToNativeREPL": false を設定することで、ターミナル内の Python REPL (>>>) を使用することもできます。さらに、settings.json"interactiveWindow.executeWithShiftEnter": false 設定を追加すると、Python ネイティブ REPL は Python の元のインタラクティブインタプリタと同様に、Enter でスマートに実行されます。

GitHub Pull Requests and Issues

プルリクエストと issue の作業、作成、管理を可能にする GitHub Pull Requests 拡張機能にさらに進展がありました。拡張機能の 0.90.0 リリースの 変更ログ を確認して、その他のハイライトについて学びましょう。

VS Code Speech

VS Code Speech 拡張機能にテキスト読み上げ機能のサポートを追加しました。新しい設定 accessibility.voice.autoSynthesize を有効にすると、音声入力も使用された場合に Copilot Chat の応答を自動的に読み上げることができます。

入力フィールドのマイクアイコンが変化し、テキストが読み上げられていることを示していることに注目してください。読み上げを中断するには、アイコンを選択するか Escape を押します。

各チャット応答には新しいスピーカーアイコンも表示され、応答を選択的に読み上げることができます。

Text to Speech for a Chat Response

テキスト読み上げに使用される言語は、既存の accessibility.voice.speechLanguage 設定で変更できます。

プレビュー機能

PowerShell 用の VS Code ネイティブ IntelliSense

いくつかの信頼性向上に加えて、ターミナルの PowerShell IntelliSense に以下の変更を加えました。

  • terminal.integrated.shellIntegration.suggestEnabledterminal.integrated.suggest.enabled に変更されました。
  • 新しい terminal.integrated.suggest.quickSuggestions は、空白の後に入力したときに候補を表示するかどうかを制御します。
  • 新しい terminal.integrated.suggest.suggestOnTriggerCharacters は、/\、または - を入力したときに候補を表示するかどうかを制御します。

TypeScript 5.5

間もなくリリースされる TypeScript 5.5 のサポートを引き続き改善しました。このリリースの詳細については、TypeScript 5.5 ベータ版のブログ投稿イテレーション計画をご覧ください。

TypeScript 5.5 ベータ版の使用を開始するには、TypeScript Nightly 拡張機能をインストールしてください。TypeScript 5.5 でバグが発生した場合は、フィードバックをお寄せください。

Web 用 Issue Reporter

VS Code for Web の Issue 報告フローが改善され、デスクトップユーザーが現在利用しているものと一致するようになりました。Help: Report Issue を選択すると、新しいウィンドウで Issue Reporter ページが開き、必要に応じてバグの種類、ソース、拡張機能を選択できます。拡張機能情報、システム情報などは、GitHub で作成された Issue に自動的に添付されます。

この機能は現在、このリリースではデフォルトで無効になっていますが、issueReporter.experimental.webReporter 設定をオンにしてフィードバックをお寄せください。

拡張機能作成

拡張機能に esbuild を使用

TypeScript および Web 用の yo code 拡張機能ジェネレーターに、バンドラーとして esbuild を使用するオプションが追加されました。esbuild を選択すると、esbuild.js ビルドスクリプトが作成され、package.json にスクリプトエントリが、.vscode/tasks.json にビルドタスクが追加されます。

既存の拡張機能で esbuild を使用するには、拡張機能のバンドルWeb 拡張機能のガイドを参照してください。

サンプルプロジェクトはvscode-extension-samples/esbuild-sampleにあります。

Chat および Language Model API

拡張機能がチャットに参加したり、言語モデルにアクセスしたりできるようにする API を完成させました。詳細については、拡張機能のサンプルチャット拡張機能のドキュメントページを参照するか、Microsoft Build カンファレンスで発表したGitHub Copilot で VS Code 拡張機能を強化する講演をご覧ください。

重要: これらの API は最終化されていますが、現在 VS Code Insiders でのみ利用可能です。

チャット参加者

Chat Participants API を使用すると、拡張機能はチャット入力フィールドで @ で呼び出すことができるチャット参加者で GitHub Copilot Chat を拡張できます。参加者は、マークダウン、ファイルツリー、VS Code コマンドを実行するボタン、またはその他の種類のコンテンツでユーザーのリクエストに返信できます。

Chat Participant example in the Chat view

言語モデル

Language Model API は、gpt-3.5 や gpt-4 などの Copilot のチャットモデルへのアクセスを可能にします。この API はチャット参加者だけでなく、他の機能を強化するためにも使用できます。API は、チャットリクエストとトークンのカウントに使用される LanguageModelChat オブジェクトを中心に構築されています。

チャットオブジェクトにアクセスする唯一の方法は vscode.lm.selectChatModels 関数です。この関数は、ベンダー、ファミリー、バージョン、識別子などのチャットモデルのさまざまなプロパティを絞り込むセレクターを受け入れます。値は比較的自由形式であり、それらを提供する拡張機能のドキュメントで検索する必要があります。現在、Copilot Chat 拡張機能のみがチャットモデルを提供しています。copilot ベンダーを使用し、現在のファミリーは gpt-3.5-turbogpt-4 ですが、変更される可能性があります。

このスニペットは、copilot ベンダーからすべてのチャットモデルを選択する方法を示しています。

const models = await vscode.lm.selectChatModels({
  vendor: 'copilot'
});

if (models.length === 0) {
  // no models available
  return;
}

selectChatModels を呼び出す際に 2 つの非常に重要な点があります。

  1. モデルが利用できない場合、関数は空の配列を返します。拡張機能はこのケースを処理する必要があります。
  2. Copilot のチャットモデルは、拡張機能がそれらを使用する前にユーザーの同意を必要とします。同意は認証ダイアログとして実装されます。そのため、selectChatModels はコマンドなどのユーザーが開始したアクションの一部として呼び出す必要があり、「突然」呼び出すべきではありません。

チャットオブジェクトを手に入れたら、拡張機能はそれを使用してチャットリクエストを送信できます。次のスニペットは、チャットリクエストを送信し、応答ストリームを処理する方法を示しています。

// take the first model and say "Hello"
const [chat] = models;
const messages = [vscode.LanguageModelChatMessage.User('Hello')];
const response = await chat.sendRequest(messages);

// the response is always an async iterable that can be consumed with for-await
for await (const part of response.text) {
  console.log(part);
}

これが言語モデル API の要点です。より完全な例については、拡張機能のサンプルを参照してください。今後、より多くのサンプル、ドキュメント、および API のさらなる拡張にご期待ください。

VS Code 用の Java 拡張機能は、Language Model API を既に活用して、Java コードの Copilot ベースの書き換え機能を提供しています。これらの更新の詳細については、Visual Studio Code の Java 2024年5月ブログ投稿をご覧ください。

@vscode/prompt-tsx ライブラリ

VS Code 用の GitHub Copilot 拡張機能の開発を支援するために、複雑なプロンプトを宣言し、それらを LLM のコンテキストウィンドウの制限に従ってチャットメッセージに変換するための TSX ベースのライブラリを開発し、公開しました。この開発にあたり、Anysphere の priompt ライブラリからインスピレーションを得ました。チャットと言語モデル API の使用を計画している拡張機能の作成者の方は、このライブラリの最新のアルファリリースである @vscode/prompt-tsx を試すことを検討してください。

GitHub Apps を介した GitHub Copilot の拡張

GitHub App を提供することによっても、GitHub Copilot を拡張できます。この GitHub App は、チャットビューで @ で呼び出すことができるチャット参加者を提供できます。GitHub App はサービスによってサポートされており、github.com、Visual Studio、VS Code などのすべての GitHub Copilot サーフェスで動作します。GitHub App は VS Code API への完全なアクセス権を持っていません。GitHub App を介して GitHub Copilot を拡張するには、Copilot Partner Program に参加する必要があります。詳細については、Microsoft Build カンファレンスで発表したGitHub Copilot の拡張講演をご覧ください。

デバッグスタックフォーカス API

VS Code は、Debug ビューでどのスタックフレームとスレッドにフォーカスがあるかを新しい API を介して公開するようになりました。vscode.debug.activeStackItem は現在フォーカスされているスタック項目 (スレッドまたはスタックフレーム) を取得し、vscode.debug.onDidChangeActiveStackItem はそれが変更されたときに発生するイベントです。

これは、DebugAdapterTracker を使用するものなど、VS Code のデバッグ機能を拡張する API と組み合わせて使用​​すると便利です。デバッガー拡張機能の作成の詳細については、こちらをご覧ください。

TestRunRequest.preserveFocus API

以前は、拡張機能によってトリガーされたテスト実行では、UI が開始した実行と同じように、Test Results ビューにフォーカスが移動することはありませんでした。この動作は、TestRunRequest の作成時に設定できる preserveFocus フラグを介して構成できるようになりました。このフラグは、下位互換性を維持するためにデフォルトで true になります。

提案されたAPI

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

テストカバレッジをテストごとに帰属させる API を開発中です。これにより、ユーザーはどのテストがどのコードを実行したかを確認でき、エディターに表示されるカバレッジとTest Coverageビューに表示されるカバレッジの両方をフィルタリングできます。詳細と更新については、vscode#212196 を参照してください。

ホバーの詳細レベル

前回のマイルストーンで、詳細度を増減できるホバーを提供する新しい API が提案されました。このマイルストーンで、API が変更され、HoverVerbosityRequestverbosityDelta を使用して、ホバーの詳細レベルの相対的な増減を示すようになりました。以前は、HoverVerbosityRequest は列挙型 HoverVerbosityAction を使用して、詳細度を増やすか減らすかを示していました。

エンジニアリング

起動時のメモリ効率の追跡

Windows、macOS、Linux で毎日 VS Code insiders の起動パフォーマンスを測定しています。私たちの主な関心事は、テキストファイルが開かれるまでの起動速度です。

今月、さらに高速な起動を目指して改善を計画している別の指標を追加しました。それは、どれだけのメモリを消費し、そのうちどれだけが V8 によってガベージコレクションされるかです。この数値を減らすことができれば、起動時間は V8 ガベージコレクション実行の影響を少なくすることができます。

Memory consumption statistics for VS Code

Electron 29 更新

このマイルストーンでは、安定版リリースのユーザーに Electron 29 の更新を促進しています。この更新には Chromium 122.0.6261.156 および Node.js 20.9.0 が含まれています。Insiders ビルドで自己ホストし、早期のフィードバックを提供してくださった皆様に感謝いたします。

注目すべき修正点

  • 212386 ローカル履歴: 以前に削除されたファイルのエントリが保持されない
  • 213645 Aux ウィンドウが Firefox で動作しない
  • vscode-js-debug#2000/2002 JavaScript デバッガーが高速化され、特にソースマップのリネーム処理が改善

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-eslintへの貢献者

vscode-extension-samplesへの貢献

vscode-generator-codeへの貢献者

vscode-hexeditorへの貢献

vscode-languageserver-nodeへの貢献者

vscode-mypyへの貢献

vscode-remote-try-dotnet への貢献

language-server-protocolへの貢献者

monaco-editorへのコントリビューション

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