VSCode1.96のリリースノート(日本語訳)

JavaScriptを有効にしてください

前書き

VSCode1.96のリリースノートをChatGPTで日本語に翻訳しました。
VSCode 1.96 Release Notes

2024年11月 (バージョン 1.96)

Visual Studio Codeの2024年11月版へようこそ。このバージョンには多くのアップデートが含まれており、皆様に気に入っていただけることを願っています。主な注目ポイントは以下の通りです:

  • 上書きモード - エディターで上書きモードと挿入モードを切り替える
  • 貼り付け時にインポートを追加 - コードを貼り付けた際に不足しているTS/JSインポートを自動的に追加
  • テストカバレッジ - 特定のテストによってカバーされているコードを素早くフィルタリング
  • ビューの移動 - プライマリサイドバーとセカンダリサイドバー間でビューを簡単に移動
  • ターミナルのリガチャ - ターミナルでリガチャを使用
  • 拡張機能の許可リスト - 組織内でインストールできる拡張機能を設定
  • Copilotでデバッグ - copilot-debugターミナルコマンドを使用してデバッグセッションを開始
  • チャットコンテキスト - シンボルやフォルダをチャットと編集のコンテキストとして追加
  • チャットからCopilot Editsへの移行 - チャットからCopilot Editsに切り替えてコード提案を適用

GitHub Copilot

GitHub Copilot 無料プラン

GitHub Copilot の全く新しい無料プランを発表します。GitHub Copilot 無料プランに登録するには、GitHub アカウントさえあれば十分です。
毎月一定数のコード補完やチャット機能が利用可能で、これらは毎月リセットされます。

VS Code 内から直接登録することができます。Copilot セットアップガイド の手順に従って進めてください。
他プランとの違いについては下記表をご覧ください。

Copilotプラン比較表(2024年12月現在)

機能 Copilot Free Copilot Pro Copilot Business Copilot Enterprise
料金 無料 月額 $10 USD、または年額 $100 USD 月額 $19 USD(1ユーザーあたり) 月額 $39 USD(1ユーザーあたり)
IDEでのコード補完 [1] 月間2,000回の補完
IDEでのCopilot Chat [2] 月間50メッセージ
GitHub MobileでのCopilot Chat ×
GitHubでのCopilot Chat
Windows TerminalでのCopilot Chat ×
CLIでのCopilot ×
公開コードに一致する提案のブロック
Copilotプルリクエストサマリー ×
IDEでのCopilot Chatスキル [3] ×
特定のファイルをCopilotから除外 × ×
組織全体のポリシー管理 × ×
監査ログ × ×
GitHubモデルのレート制限増加 [4] × ×
Copilot知識ベース × × ×
カスタム大規模言語モデルの微調整 [5] × × ×

注記

  1. IDE内でのコード補完の回数制限
  2. IDE内でのCopilot Chat機能のメッセージ制限
  3. IDEでの高度なCopilot Chatスキルのサポート
  4. GitHub Modelsのレート制限が拡張される
  5. 独自の大規模言語モデルの微調整機能

Copilot Edits

前回のマイルストーンで、自然言語を使って複数のファイルを一度に素早く編集できるCopilot Edits(現在はプレビュー版)を紹介しました。それ以来、私たちはこの体験を改善し続けています。Copilot Editsを試すには、コマンドセンターでCopilotメニューを開き、Open Copilot Editsを選択するか、Ctrl+Shift+Iをトリガーしてください。

進捗とエディターコントロール

Copilot Editsは、異なるファイルに対して複数の変更を加えることができます。
現在、編集がストリームで流れてくる進捗をより明確に確認できるようになっています。
また、エディターオーバーレイのコントロールを使って、すべての変更を簡単にサイクルし、受け入れるか破棄するかを選択できます。

チャットセッションをCopilot Editsに移行

コードの変更アイデアを探索するためにChatビューを使用することがあるかもしれません。個々のコードブロックを適用する代わりに、チャットセッションをCopilot Editsに移行して、そのセッションからすべてのコード提案を適用できるようになりました。

作業セットの提案ファイル

Copilot Editsでは、作業セットがCopilot Editsが変更を提案できるファイルを決定します。Gitリポジトリの場合、Copilot Editsは、すでに追加したファイルに基づいて追加のファイルを提案できるようになりました。たとえば、Copilot Editsは、すでに追加したファイルと一緒に頻繁に変更されるファイルを提案します。

Copilotは、作業セット内で提案されたファイルを「Add Files」ボタンと共に表示します。また、「Add Files」を選択し、「Related Files」を選んで、提案されたファイルのリストから選ぶこともできます。

編集セッションの復元

編集セッションは、VS Codeを再起動した後でも完全に復元されるようになりました。
これには、作業セット、承認状態、過去の編集ステップのファイル状態が含まれます。

Explorer、Search、エディターから作業セットに追加

新しい「Add File to Copilot Edits」コンテキストメニューアクションを使用して、Searchビューの検索結果やExplorerビューのファイルからCopilot Editsの作業セットにファイルを追加できるようになりました。さらに、エディターのコンテキストメニューから、テキスト選択をCopilot Editsに追加することもできます。

Copilotでのデバッグ

デバッグの設定は、特に新しいプロジェクトや言語で作業している場合に難しくなることがあります。
このマイルストーンでは、VS Codeを使用してプログラムをデバッグするための新しいcopilot-debugターミナルコマンドを導入しました。
通常実行するコマンドの前にcopilot-debugをプレフィックスとして追加することで使用できます。
たとえば、通常python foo.pyでプログラムを実行する場合、copilot-debug python foo.pyと実行することでデバッグセッションを開始できます。

プログラムが終了した後、プログラムを再実行する、使用されたVS Codeのデバッグ用の起動構成を表示する、保存する、または再生成するオプションが提供されます。

タスクサポート

Copilotのデバッグ機能(copilot-debug/startDebuggingインテントを含む)は、デバッグ前にコンパイルステップが必要なコードに対して、必要に応じてpreLaunchTasksを生成するようになりました。これは、RustやC++などのコンパイル言語においてよく見られるケースです。

コンテキストの追加

Copilot ChatおよびCopilot Editsにおいて、シンボルやフォルダをコンテキストとして追加する新しい方法を導入しました。
これにより、ワークフロー中に関連情報を参照しやすくなりました。

シンボル

シンボルは、Outline ViewやBreadcrumbsからドラッグ&ドロップすることで、簡単にCopilot ChatやCopilot Editsに追加できるようになりました。

さらに、チャット入力にシンボル補完機能を追加しました。#の後にシンボル名を入力すると、最近作業したファイルからのシンボルの提案が表示されます。

プロジェクト全体でシンボルを参照するには、#symを使用してグローバルシンボルピッカーを開くことができます。

フォルダ

フォルダは、Explorer、Breadcrumbs、またはその他のビューからCopilot Chatにドラッグすることで、コンテキストとして追加できるようになりました。

フォルダをCopilot Editsにドラッグすると、そのフォルダ内のすべてのファイルが作業セットに含まれます。

Copilot使用グラフ

VS Codeの拡張機能は、VS Code APIを使用してCopilotの機能を拡張できます。
現在、拡張機能のCopilot使用状況をRuntime Statusビューでグラフとして確認できるようになりました。
このグラフは、拡張機能が過去30日間に行ったチャットリクエストの数を表示します。

コミットメッセージ生成のカスタムインストラクション

Copilotは、行った変更に基づいてコミットメッセージを生成するのに役立ちます。このマイルストーンでは、コミットメッセージを生成する際にカスタムインストラクションをサポートするようになりました。たとえば、コミットメッセージが特定のフォーマットに従う必要がある場合、そのフォーマットをカスタムインストラクションで指定できます。

github.copilot.chat.commitMessageGeneration.instructions設定を使用して、カスタムインストラクションを指定するか、ワークスペース内のカスタムインストラクションが含まれるファイルを指定できます。これらのインストラクションは、コミットメッセージを生成するために使用されるプロンプトに追加されます。カスタムインストラクションの使用方法についての詳細情報を取得できます。

インラインチャット

このマイルストーンでは、インラインチャットのユーザー体験をさらに改善しました。
進捗報告をより控えめにし、変更がストリームで流れる際に波線が無効化され、検出されたコマンドがよりきれいにレンダリングされるようになりました。

また、擬似コードの検出を改善し、行が主に自然言語である場合、インラインチャットを続けることができるというヒントを表示するようになりました。
この機能により、エディターで擬似コードを入力し、それがインラインチャットのプロンプトとして使用されます。このフローは、Ctrl+Iを押すことでもトリガーできます。

さらに、新しい実験的な設定として、空行にインラインチャットのヒントを表示するオプションが追加されました。
この設定はinlineChat.lineEmptyHintを使用して有効にできます。デフォルトでは、この設定は無効になっています。

ターミナルチャット

ターミナルインラインチャットには新しいデザインが施され、エディターのインラインチャットにさらに近い外観と操作感になりました。

以下は、注目すべき改善点です:

  • ウィジェットのレイアウトと配置が改善され、全体的に動作が安定しました。
  • モデルピッカーが追加されました。
  • 下部のボタンがより一貫性を持つようになりました。

@workspaceのパフォーマンス向上

@workspaceを使用して現在開いているワークスペースについてCopilotに質問する際、まずワークスペースを関連するコードスニペットのセットに絞り込む必要があります。このセットをCopilotにコンテキストとして渡すことができるようにします。もしワークスペースがGitHubリポジトリによってバックアップされている場合、GitHubコード検索を使用することでこれらの関連スニペットを迅速に見つけることができます。しかし、コード検索インデックスはリポジトリのメインブランチを追跡しているため、ローカルの変更やブランチで作業している場合には信頼できませんでした。

このマイルストーンでは、GitHub検索の速度向上をブランチやプルリクエストにも適用できるようにしました。これにより、リポジトリのメインブランチに基づくリモートインデックスと、ローカルで変更されたファイルの両方を検索します。そして、これらの結果を統合し、Copilotに迅速かつ最新のスニペットセットを提供できるようになりました。GitHubコード検索とその有効化方法 についてさらに詳しく読むことができます。

アクセシビリティ

コードアクションのアクセシビリティシグナル

一部のコードアクションは完了までに時間がかかることがあります。例えば、外部サービスを呼び出して画像のaltテキストを生成するクイックフィックスなどです。これらのアクションがいつトリガーされ、いつ完全に適用されたかがわかりにくい場合があります。そこで、コードアクションがトリガーされたことや適用されたことを示すアクセシビリティシグナルを追加しました。

これらのシグナルは、accessibility.signals.codeActionTriggeredaccessibility.signals.codeActionApplied設定で有効にできます。

REPLでの自動フォーカスマネジメント

REPLで作業する際のアクセシビリティを改善するために新しい設定を導入しました。accessibility.replEditor.autoFocusReplExecutionを使用すると、コード実行時にフォーカスが変更されない(none)、入力ボックスに移動する(input)、または最も最近実行されたセルに移動する(lastExecution)かを指定できます。デフォルトでは、フォーカスは入力ボックスに移動します。

ワークベンチ

改善された拡張機能の検索結果

拡張機能ビューで自由形式のテキストを使用して拡張機能を検索すると、インストールされている拡張機能が検索結果のトップに表示されるようになりました。これにより、マーケットプレイスで検索中にインストール済みの拡張機能を簡単に見つけて管理できるようになります。

インストールされている拡張機能が検索結果のトップに表示されます。

拡張機能ビューからの拡張機能のダウンロード

拡張機能ビューで拡張機能のコンテキストメニューからダウンロードアクションを使用して、VS Codeから直接拡張機能をダウンロードできるようになりました。これは、拡張機能をインストールせずにダウンロードしたい場合に便利です。

拡張機能ビューのコンテキストメニューオプションで拡張機能をダウンロード。

拡張機能のディスク使用量

拡張機能エディターで、拡張機能がディスク上で使用しているメモリ量を確認できるようになりました。これにより、拡張機能がどれくらいのディスクスペースを使用しているかを理解するのに役立ちます。

Explorerでの検索機能の改善

9月のリリースで、これまで利用できなかったプロジェクト全体でファイルを検索する機能をExplorerに追加しました。ただし、このアップデートでは一時的にハイライトモードが削除され、いくつかのアクションが制限されていました。

今回のリリースでは、ハイライトモードが再導入されました。この機能により、ワークスペース内でファイルやフォルダを簡単に見つけることができ、結果がハイライト表示されて視認性が向上します。また、折りたたまれたフォルダに一致するアイテムが隠れている場合、その視覚的インジケーターも新たに追加されました。

フィルタートグルは引き続き利用可能で、クエリに一致するファイルやフォルダのみを表示することができます。一致しない項目は非表示にされます。また、前回のリリースで無効にしたコンテキストメニューのアクションもすべて再有効化しました。

さらに、検索コントロールのユーザー体験も改善しました。ファイルエクスプローラーのトップにスクロールした際、上部に追加のスペースが作成され、検索結果がコントロールによって遮られることがありません。

プライマリサイドバーとセカンダリサイドバー間でビューを移動

これまでにも、ビューコンテナをドラッグ&ドロップや「ビューを移動」コマンドを使って別の場所に移動することができましたが、今回からはビューコンテナ上で直接「移動先」コンテキストメニューアクションを使用して、プライマリサイドバー、セカンダリサイドバー、またはパネルエリア間で移動できるようになりました。

タイトルエリアでのナビゲーションコントロールの非表示

一部のユーザーはタイトルエリアをできるだけシンプルに保ちたいと考えています。そのため、workbench.navigationControl.enabledという新しい設定を追加し、タイトルエリアでの戻る/進むボタンを非表示にできるようにしました。

この設定には、タイトルエリアを右クリックして「ナビゲーションコントロール」を選択することでもアクセスできます。

エディター

ペーストとドロップの動作を設定

ファイルをドラッグ&ドロップまたはコピー&ペーストでテキストエディターに挿入する際、VS Codeは複数の方法でファイルを挿入することができます。デフォルトでは、VS Codeはファイルのワークスペース相対パスを挿入しようとしますが、今回はリソースの挿入方法を切り替えるためのドロップ/ペーストコントロールが追加されました。拡張機能もカスタマイズされた編集を提供でき、例えばMarkdownではMarkdownリンクを挿入する編集が行われます。

新しい editor.pasteAs.preferencesおよび editor.dropIntoEditor.preferences設定を使うことで、デフォルトで使用される編集タイプを指定できるようになりました。例えば、コピー&ペーストで常にファイルの絶対パスを挿入したい場合、次のように設定できます:

1
2
3
"editor.pasteAs.preferences": [
    "uri.path.absolute"
]

これらの設定は編集タイプの順序リストとして指定されます。最初に一致する編集タイプがデフォルトで適用されますが、デフォルトの編集が適用された後でも、ドロップ/ペーストコントロールを使って別の編集タイプに変更することができます。

これらの新しい設定は、JavaScriptやTypeScriptでのインポートを含むコピー&ペーストのサポートとも相性が良いです。この機能は、JavaScriptまたはTypeScriptファイル間でコードをコピー&ペーストすると、自動的にインポートを追加します。ワークフローが中断されないように、デフォルトでは、ペーストは通常のテキストとして挿入され、インポート付きペーストはペーストコントロールで選択可能なオプションとして提供されます。しかし、VS Codeが常にインポート付きペーストを試みるようにしたい場合は、次のように設定できます:

1
2
3
"editor.pasteAs.preferences": [
    "text.updateImports"
]

これにより、VS Codeは可能な場合にインポート付きでペーストを試み、インポート付きペースト編集が利用できない場合には通常のテキストペーストにフォールバックします。現時点では、この機能はJavaScriptとTypeScriptのみで動作しますが、今後は追加の言語でもサポートが広がることを期待しています。

最後に、editor.action.pasteAsのキーバインディングを設定する際にも、好みのペーストスタイルを指定できるようになりました。以下のキーバインディングは、常にインポートを更新しながらペーストを試みます:

検索履歴の保持

Findコントロールは、検索履歴をセッション間で保持し、VS Codeの再起動後に履歴を復元できるようになりました。検索履歴はワークスペースごとに保存され、 editor.find.history設定で無効にすることができます。

オーバータイプモード

多くのリクエストに応じて、オーバータイプモードを追加しました。このモードでは、テキストを入力する際に挿入するのではなく、既存のテキストを上書きすることができます。特に、Markdownのテーブルを編集する際に、テーブルセルの境界をきれいに整列させたい場合に便利です。

このモードは、「View: Toggle Overtype/Insert Mode」コマンドで切り替えることができます。オーバータイプモードにいる場合、ステータスバーに「OVR」インジケーターが表示されます。
また、 editor.overtypeOnPaste設定を使うことで、オーバータイプモードでペーストした際に上書きするか挿入するかを設定できます。デフォルトでは、ペーストされたテキストは挿入されます。

オーバータイプモード中にカーソルのスタイルを変更することも可能で、
editor.overtypeCursorStyle設定で変更できます。

ソース管理

Git Blame 情報(実験的機能)

今回のリリースでは、エディタの装飾とステータスバーアイテムを使用してGit blame情報を表示する実験的サポートを追加しました。
この機能は、 git.blame.editorDecoration.enabled git.blame.statusBarItem.enabled 設定を使用して有効にできます。blame情報にカーソルを合わせると、さらに詳細なコミット情報を見ることができます。

エディタとステータスバーに表示されるメッセージのフォーマットは、
git.blame.editorDecoration.template git.blame.statusBarItem.template 設定を使用してカスタマイズできます。最も一般的な情報には変数を使用できます。例えば、以下のテンプレートはコミットの件名、作者の名前、作者の日付を相対的に表示します:

1
2
3
{
  "git.blame.editorDecoration.template": "${subject}, ${authorName} (${authorDateAgo})"
}

エディタ装飾の色を調整したい場合は、git.blame.editorDecorationForeground テーマカラーを使用してください。

この実験的機能を試してみて、フィードバックをお聞かせください。

ソース管理グラフのタイトルアクション

ユーザーからのフィードバックに基づき、ソース管理グラフビューのタイトルバーに「Pull」と「Push」アクションを再追加しました。これらのアクションは、現在の履歴アイテム参照がソース管理グラフに表示されている場合に有効になります。

これらのアクション、またはソース管理グラフビューのタイトルバーにあるその他のアクションを使用したくない場合は、タイトルバーを右クリックして非表示にすることができます。

ノートブック

セル間の選択ハイライト

ノートブック内で、複数のセルにまたがるテキスト選択によるハイライトがサポートされました。これは既存の設定 editor.selectionHighlight で制御できます。

マルチカーソル: 検索結果のすべての一致を選択

ノートブックでは、検索結果のすべての一致を選択するためのキーボードショートカットがサポートされました。このコマンドは notebook.selectAllFindMatches というコマンドIDで見つけることができ、デフォルトでは Ctrl+Shift+L のキー操作で使用できます。

セクション内のセルを実行 (Markdown)

ノートブックでは、Markdown セルのセルツールバーに「セクション内のセルを実行」アクションが追加されました。Markdown セルにヘッダーがある場合、そのセクションおよび子セクションに含まれるすべてのセルが実行されます。ヘッダーがない場合、周囲のセクション内のすべてのセルが実行されます。

セル実行時間の詳細表示

セルのステータスバーに表示される実行時間情報には、詳細表示のオプションが追加されました。このオプションは notebook.cellExecutionTimeVerbosity 設定で有効化でき、実行時間の他に実行のタイムスタンプも表示されるようになります。

ターミナル

ターミナルでのリガチャサポート

ターミナルでは、GPU加速を使用しているかどうかに関係なくリガチャがサポートされるようになりました。この機能は terminal.integrated.fontLigatures 設定で有効化できます。
例えば、->==> のようなリガチャをサポートするフォントを使用することで、これらが単一の文字のように視覚的に表示されます。

この機能を使用するには、リガチャをサポートするフォント( terminal.integrated.fontFamily 設定)を使う必要があります。

ターミナルタブのカスタマイズ用の新しい変数

ターミナルタブに表示されるテキストは、terminal.integrated.tabs.titleterminal.integrated.tabs.description 設定で決まり、これらの設定ではいくつかの変数を使用できます。新たにサポートされた変数は以下の通りです:

  • ${shellType} - ターミナルで使用されているシェルの種類(デフォルト値に似ていますが、gitコマンドを実行中でもgitに変更されません)
  • ${shellCommand} - ターミナルで実行されているコマンド(シェルインテグレーションが必要)
  • ${shellPromptInput} - ターミナルで実行されているコマンドまたは現在検出されたプロンプト入力(シェルインテグレーションが必要)

最近のコマンドの実行に履歴ソースファイルが表示されるように

最近のコマンドを実行する際、シェルインテグレーション機能が強化され、コマンドのソースファイルを示すフルサイズのヘッダーが表示されるようになりました。これにより、コマンドがどの履歴ファイルに関連しているかが簡単にわかり、関連ファイルを開くためのボタンも提供されます。

デフォルトのキーバインディングは Ctrl+Alt+R です。

新しいリンク形式のサポート

ターミナル内で /path/to/file.ext, <line> の形式で書かれたリンクが検出されるようになりました。この形式のリンクはクリック可能となり、対応するファイルや行に簡単にアクセスできます。

テスト

属性別カバレッジ

このマイルストーンでは、拡張機能がテストごとのカバレッジを提供できるAPIを最終化しました。この機能により、各テストが実行したコードを正確に確認できるようになります。

属性別カバレッジが利用可能な場合、テストカバレッジビュー、エディタのアクション、テストカバレッジツールバー(Test: Test Coverage Toolbar コマンドで切り替え可能)にフィルターボタンが表示されます。また、Test: Filter Coverage by Test コマンドを使用して、カバレッジをテストごとにフィルタリングすることもできます。

改良されたインライン失敗メッセージ

テスト失敗メッセージが視覚的に目立つように、かつ煩わしくなくなるよう再設計されました。特に、SCMからの差分やCopilot Editsのような忙しいシナリオで役立ちます。失敗メッセージを選択すると、失敗の詳細を表示するためのプレビューコントロールが開きます。

継続的な実行UIの改善

以前、テストエクスプローラーで「目」アイコンを使って、デフォルトの実行プロファイルセットで継続的なテスト実行のオン・オフを切り替えることができました。

今回、継続的実行のUIが改良され、ドロップダウンメニューを使用して各プロファイルごとに個別に継続的実行をオン・オフできるようになりました。インジケーターを選択すると、最後に使用した実行プロファイルセットをオン・オフすることができます。

言語

TypeScript 5.7

JavaScriptとTypeScriptのサポートは、TypeScript 5.7にアップデートされました。この大規模な更新には、言語およびツールの改善に加え、重要なバグ修正とパフォーマンスの最適化が含まれています。

TypeScript 5.7のリリースについては、TypeScriptのブログ で詳しく紹介されています。以下のセクションでは、一部のツールに関するハイライトも紹介します。

JavaScriptおよびTypeScriptのインポート付きペースト機能

ファイル間でコードを移動する際にインポートを手動で追加するのが面倒ではありませんか?TypeScript 5.7以降では、JavaScriptやTypeScript間でコードをコピー&ペーストすると、自動でインポートが追加される「インポート付きペースト」機能が提供されます。

インポートだけでなく、ペーストされたコードで使用されたローカル変数に対して新たなエクスポートも追加されるのが確認できます。

デフォルトでは、コピー&ペーストはテキストをそのまま挿入する動作になっていますが、インポート付きペーストが可能な場合は、ペースト時に選択肢が表示されます。この選択肢を使用すると、インポート付きペーストを選択できます。

インポート付きペーストを常に使いたい場合は、新しい設定 editor.pasteAs.preferences を使って設定できます。

1
2
3
"editor.pasteAs.preferences": [
    "text.updateImports"
]

これにより、インポートが必要な場合には自動でインポート付きでペーストされます。

また、キーバインディングを設定してインポート付きペーストをショートカットキーで実行することもできます。

1
2
3
4
5
6
7
{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.updateImports"]
  }
}

逆に、インポート付きペーストをデフォルトにし、プレーンテキストのペーストを行いたい場合も設定できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
"editor.pasteAs.preferences": [
    "text.updateImports"
]

{
  "key": "ctrl+shift+v",
  "command": "editor.action.pasteAs",
  "args": {
    "preferences": ["text.plain"]
  }
}

完全にインポート付きペースト機能を無効にしたい場合は、以下の設定で無効化できます。

typescript.updateImportsOnPaste.enabled
javascript.updateImportsOnPaste.enabled

リモート開発

リモート開発拡張機能を使用すると、Devコンテナ、SSH経由のリモートマシン、またはWindows Subsystem for Linux(WSL)を完全な機能を備えた開発環境として使用できます。

主な特徴は以下の通りです:

  • remote-ssh Copilot チャット参加者
  • セッションログの強化

@remote-ssh チャット参加者

Remote - SSH 拡張機能には、Copilot チャット参加者が新たに追加されました。この参加者は、最近のSSH接続に関するコンテキストを持っており、リモート環境の構成やトラブルシューティングを手助けします。また、SSHやリモート開発に関する一般的な質問にも対応できます。

この参加者は、設定 remote.SSH.experimental.chat を有効にすることで使用できます。

接続失敗のダイアログには、「Copilotで診断」ボタンも追加されました。

強化されたセッションログ

接続エラーは診断と修正が難しいことがあります。既知の問題に関して、Remote - SSH 拡張機能は検出された問題の概要と、考えられる解決策を提供します。

トラブルシューティング用のデータベースはリリースごとに成長しており、GitHub Copilotはこの情報を使って問題解決能力を向上させています。

強化されたログは、設定 remote.SSH.experimental.enhancedSessionLogs で有効にできます。

ターミナルには、接続状態、詳細メッセージ、問題解決のための提案が含まれるテーブルが表示されます。

強化されたログとGitHub Copilotを組み合わせることで、強力なトラブルシューティング体験を提供します。

エンタープライズサポート

許可された拡張機能の設定

extensions.allowed 設定を使用して、VS Codeでインストール可能な拡張機能を制御できるようになりました。この設定では、パブリッシャー、特定の拡張機能、バージョンごとに許可またはブロックを指定できます。拡張機能やバージョンがブロックされた場合、すでにインストールされている場合でも無効化されます。

以下の種類の拡張機能セレクターを指定できます:

  • パブリッシャーのすべての拡張機能を許可またはブロック
  • 特定の拡張機能を許可またはブロック
  • 特定の拡張機能のバージョンを許可
  • 特定の拡張機能のバージョンとプラットフォームを許可
  • 安定版の拡張機能のみを許可
  • パブリッシャーの安定版拡張機能のみを許可

以下は、設定値の例を示すJSONスニペットです:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"extensions.allowed": {
    // 'microsoft' パブリッシャーのすべての拡張機能を許可
    "microsoft": true,

    // 'github' パブリッシャーのすべての拡張機能を許可
    "github": true,

    // prettier 拡張機能を許可
    "esbenp.prettier-vscode": true,

    // docker 拡張機能を許可しない
    "ms-azuretools.vscode-docker": false,

    // eslint 拡張機能のバージョン 3.0.0 のみ許可
    "dbaeumer.vscode-eslint": ["3.0.0"],

    // figma 拡張機能の複数バージョンを許可
    "figma.figma-vscode-extension": ["3.0.0", "4.2.3", "4.1.2"],

    // rust 拡張機能のバージョン 5.0.0 を Windows と macOS で許可
    "rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"],

    // GitHub Pull Requests 拡張機能の安定版のみ許可
    "github.vscode-pull-request-github": "stable",

    // redhat パブリッシャーの安定版のみ許可
    "redhat": "stable"
}
  • パブリッシャーIDと拡張機能ID
    キーにピリオド (.) がない場合、それはパブリッシャーIDと見なされます。キーにピリオドがある場合、それは拡張機能IDと見なされます。

  • バージョン範囲とワイルドカード
    バージョン範囲はサポートされていません。複数のバージョンを許可する場合、それぞれのバージョンを個別に指定する必要があります。また、プラットフォームで制限するには、@ 記号を使用してプラットフォームを指定してください(例: "rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"])。

  • Windowsでのグループポリシー設定
    管理者は、この設定をWindowsのグループポリシーを介して構成することもできます。詳細はエンタープライズドキュメントの「Windowsのグループポリシー」セクションを参照してください。

VS Code のセットアップと事前インストールされた拡張機能

VS Code を事前にインストールされた拡張機能のセットでセットアップできます(ブートストラップ)。この機能は、VS Code が事前にインストールされたマシンイメージ、仮想マシン、またはクラウドワークステーションを準備する場合に便利です。この場合、特定の拡張機能がユーザーにすぐに利用可能になります。

注意: 事前インストールされた拡張機能のサポートは現在、Windowsのみで利用可能です。

拡張機能のブートストラップを設定する手順は以下の通りです:

  1. VS Code のインストールディレクトリ内に bootstrap\extensions フォルダを作成します。

  2. 事前インストールしたい拡張機能の VSIX ファイルをダウンロードし、bootstrap\extensions フォルダに配置します。

  3. ユーザーが VS Code を初めて起動すると、bootstrap\extensions フォルダ内のすべての拡張機能がバックグラウンドで静かにインストールされます。

  4. ユーザーは事前インストールされた拡張機能をアンインストールすることができます。拡張機能をアンインストールしても、VS Code を再起動することでその拡張機能は再インストールされません。

拡張機能への貢献

Python

Python Environments 拡張機能

今回のリリースでは、Python Environments 拡張機能が新たにプレビュー版としてマーケットプレイスに登場しました。

この拡張機能は、Python 環境の管理を簡素化し、環境の作成、削除、管理を行うための UI を提供します。また、パッケージのインストールやアンインストールも簡単に行えます。

  • 対応する環境:グローバル Python インタープリター、venv、および Conda に標準で対応。
  • 拡張機能の統合:さまざまな API を通じて、開発者が好みの Python 環境マネージャーをサポートする拡張機能を作成でき、UI と統合できます。

Python Environments 拡張機能はマーケットプレイスでダウンロード可能で、Python 拡張機能のプレリリースバージョンと一緒に使用できます。

Python テストの強化

  • pytest--rootdir 引数が、ワークスペースに設定されている python.testing.cwd 設定に基づいて動的に調整されるようになりました。
  • テストデバッグセッションを再起動すると、指定したテストのみが再実行されます。
  • カバレッジサポートが更新され、NoSource 例外にも対応するようになりました。
  • pytest-describe プラグインが、UI でのテスト検出および実行に対応しました。
  • テストの書き換えでは、プロセス間通信に FIFO を使用するようになり、ユーザーが独自のテスト設計に pytest_socket などの pytest プラグインを活用できるようになりました。
  • 書き換えのデフォルト化が近づく:今回のリリースは、テスト書き換えの最後の既知の問題に対応しています。これにより、問題が発生しなければ、2025年初頭にはテスト書き換えがデフォルト機能に戻ります。

Python REPL 強化

  • スマート送信後のエディターのフォーカス維持smart-send を使って Native REPL にコードを送信した後、エディターにフォーカスが戻るように改善されました。
  • Native REPL のリロード後の改善:Native REPL がリロードされた後の動作が改善されました。
  • Python 3.13 に関するインデントエラーの修正:VS Code のターミナルで Python 3.13 に関するインデントエラーが修正されました。

Pylance の「フル」言語サーバーモード

新しい python.analysis.languageServerMode 設定で「フル」モードがサポートされるようになり、Pylance の機能を完全に活用でき、最も充実した IntelliSense 経験を提供します。ただし、この設定を有効にすると、パフォーマンスが低下する可能性があります。特に大規模なコードベースでは、Pylance がリソースを多く消費することがあります。

  • python.analysis.languageServerMode 設定の変更
    • light モード:最小限の機能で高速な動作を提供します。
    • default モード:標準的なパフォーマンスと機能を提供します。
    • full モード:完全な Pylance 機能が有効になりますが、パフォーマンスに影響を与える可能性があります。

この設定は、コードの規模や必要な機能に応じて選択することが推奨されます。

Setting light default full
python.analysis.exclude ["**"] [] []
python.analysis.useLibraryCodeForTypes false true true
python.analysis.enablePytestSupport false true true
python.analysis.indexing false true true
python.analysis.autoImportCompletions false false true
python.analysis.showOnlyDirectDependenciesInAutoImport false false true
python.analysis.packageIndexDepths [ { “name”: “sklearn”, “depth”: 2 }, { “name”: “matplotlib”, “depth”: 2 }, { “name”: “scipy”, “depth”: 2 }, { “name”: “django”, “depth”: 2 }, { “name”: “flask”, “depth”: 2 }, { “name”: “fastapi”, “depth”: 2 } ] [ { “name”: “sklearn”, “depth”: 2 }, { “name”: “matplotlib”, “depth”: 2 }, { “name”: “scipy”, “depth”: 2 }, { “name”: “django”, “depth”: 2 }, { “name”: “flask”, “depth”: 2 }, { “name”: “fastapi”, “depth”: 2 } ] { “name”: “”, “depth”: 4, “includeAllSymbols”: true }
python.analysis.regenerateStdLibIndices false false true
python.analysis.userFileIndexingLimit 2000 2000 -1
python.analysis.includeAliasesFromUserFiles false false true
python.analysis.functionReturnTypes false false true
python.analysis.pytestParameters false false true
python.analysis.supportRestructuredText false false true
python.analysis.supportDocstringTemplate false false true

TypeScript

TypeScript 拡張可能なホバー(実験的)

このマイルストーンでは、TSサーバーから展開された/縮小された情報を表示できるようになりました。拡張機能は、エディターのホバーで + と - のマーカーを表示し、さらに多くの情報を表示したり、少なくしたりするために、拡張可能ホバー API を使用します。

この実験的な設定は、 typescript.experimental.expandableHover を使用して有効にできます。この設定を機能させるためには、TypeScript のバージョン 5.8 以上である必要があります。TypeScript のバージョンは、TypeScript: Select TypeScript Version... コマンドを使用して変更できます。

Microsoft アカウントは現在 MSAL を使用(Windows で WAM サポート付き)

Microsoft 認証のセキュリティ基準を強化するために、Microsoft アカウント拡張機能では Microsoft Authentication Library(MSAL)を採用しました。

この作業の注目すべき特徴の一つは、WAM(Web Account Manager、別名 Broker)の統合です。簡単に言うと、Microsoft 認証フローのためにブラウザにアクセスするのではなく、OSと直接通信するようになりました。これは、Microsoft 認証セッションを取得する推奨される方法です。また、OSにすでにログインしているアカウントを活用できるため、より高速です。

VS Code 上に表示される OS の認証ポップアップ。

新しいフローに問題がある場合はお知らせください。重大な問題が発生し、古い Microsoft 認証の挙動に戻す必要がある場合は、 microsoft-authentication.implementationclassic に設定して VS Code を再起動することで戻すことができますが、この設定は長くは使用できません。MSAL フローで問題が発生している場合は、問題を報告してください。

拡張機能の作成

@vscode/chat-extension-utils

GitHub Copilot と統合するためのチャットおよび言語モデル拡張 API を数ヶ月前に公開しましたが、ツール呼び出しを活用した高品質なチャット拡張の作成は依然として複雑であることが分かりました。

そこで、拡張機能開発者が簡単にチャット参加者を立ち上げられるように、@vscode/chat-extension-utils という npm パッケージを公開しました。このパッケージは、チャット参加者を実装するために通常自分で行わなければならない作業をいくつか引き受け、わずか数行のコードで実装できるようにします。さらに、@vscode/prompt-tsx と組み合わせて使える高品質の便利な要素も含まれています。

完全なドキュメントは、chat-extension-utils リポジトリ で確認でき、サンプルチャット拡張で実際の動作を確認できます。また、新しい LanguageModelTool API ドキュメント でも使用方法が説明されています。

Attributable Coverage API

テストカバレッジの API では、拡張機能がテストごとのカバレッジ情報を提供できるようになりました。この API を実装するには、FileCoverageincludesTests?: TestItem[] プロパティを使用して、どのテストがそのファイルのコードを実行したかを示し、TestRunProfile.loadDetailedCoverageForTest を実装してステートメントおよび宣言カバレッジを提供します。

ユーザーにどのように表示されるかの例については、上記の「属性別カバレッジ」のセクション を参照してください。

JavaScript デバッグターミナルへの貢献

JavaScript デバッガには、他の拡張機能が JavaScript デバッグターミナルの作成に参加できるメカニズムが追加されました。これにより、Node.js 以外のフレームワークやランタイムも、同じ使い慣れた場所でデバッグを有効にすることができます。詳細については、JavaScript デバッガのドキュメントを参照してください。

Node.js fetch API のプロキシサポート

グローバルな fetch 関数は、プロキシサポート( http.fetchAdditionalSupport)が有効になりました。これは、既にプロキシサポートがあった https モジュールと同様の機能です。

プレビュー機能

チャットコンテキストにコードを貼り付けて添付

以前は、Copilot Chat にファイルをコンテキストとして添付することができましたが、さらに細かい制御を可能にするため、コードの断片を貼り付けてチャットのコンテキストとして添付することができるようになりました。これにより、必要なファイル情報と対応する行番号が追加されます。コードは現在のワークスペース内のファイルからのみ貼り付け可能です。

この機能を試すには、コードをコピーして Inline Chat、Quick Chat、または Chat ビューに貼り付けます。表示される貼り付けコントロールを選択し、「Pasted Code Attachment」を選びます。別の方法として、次の設定を editor.pasteAs.preferences に追加できます:

1
2
3
"editor.pasteAs.preferences": [
    "chat.attach.text"
]

ターミナルの補完機能がさらに多くのシェルに対応

以前のバージョンで、pwsh(PowerShell)向けにターミナル補完機能の実験的サポートを追加しましたが、今回のリリースではこの機能を他のシェルにも拡張し始めました。現時点では bash と zsh を対象にしていますが、この新しいアプローチは拡張ホスト API によって実現されているため、将来的にはほとんどのシェルをサポートする予定です。

現在進行中の作業を試すには、次の設定を有効にしてください:

terminal.integrated.suggest.enabled
terminal.integrated.suggest.enableExtensionCompletions

現在、サポートされているのは cdcodecode-insiders の引数のみです。

提案された API

Quick Pick における値選択 API

InputBox では、プログラム的に入力の一部またはすべてを選択する「値選択」機能を設定できるようになっています。このマイルストーンでは、QuickPick においても値選択を行うための提案された API が追加されました。

以下はその使用例です:

1
2
3
4
5
6
7
8
9
const qp = vscode.window.createQuickPick();
qp.value = '12345678';
qp.valueSelection = [4, 6];  // QuickPickの入力ボックスで4番目と6番目の文字を選択
qp.items = [
  { label: '12345678', description: 'desc 1' },
  { label: '12345678', description: 'desc 2' },
  { label: '12345678', description: 'desc 3' }
];
qp.show();

このコードでは、QuickPick の入力ボックスに表示される文字列「12345678」内で、4番目と6番目の文字が選択されています。

この valueSelectionInQuickPick 提案を試してみて、フィードバックを GitHub issue にてお知らせください!

提案されたネイティブウィンドウハンドル API

このマイルストーンでは、フォーカスされているウィンドウのネイティブウィンドウハンドルを取得するための新しい提案された API を追加しました。ネイティブウィンドウハンドルは、特定のウィンドウへのポインタを提供する OS の概念です。これを使用することで、ネイティブコードと対話している場合に、例えばウィンドウの上にネイティブダイアログを表示することができます。

以下はその使用例です:

1
2
3
4
5
6
7
8
9
declare module 'vscode' {
  export namespace window {
    /**
     * 現在アクティブなウィンドウのネイティブウィンドウハンドルを取得します。
     * アクティブなウィンドウが変更されると、この値も更新されます。
     */
    export const nativeHandle: Uint8Array | undefined;
  }
}

この機能は、Microsoft 認証が MSAL を採用するために特に追加されました。これにより、ネイティブハンドルを OS に渡し、VS Code 上に認証ダイアログを表示できるようにしています。

ネイティブウィンドウハンドルの提案に対する使用例やフィードバックがあれば、GitHub issue にてお知らせください!

技術的な改善

vscode-unpkg サービスによる拡張機能の更新最適化

Marketplace インフラストラクチャの負荷を軽減するため、VS Code は新たに追加された vscode-unpkg サービスのエンドポイントを使用して拡張機能の更新を確認します。このサービスは、10分間の TTL(Time-to-Live)を使用したサーバー側のキャッシュを実装しており、Marketplace への直接リクエストを大幅に削減します。
この最適化は、 extensions.gallery.useUnpkgResourceApi 設定を介して制御され、デフォルトで有効です。

拡張機能の更新に問題が発生した場合は、 extensions.gallery.useUnpkgResourceApi を無効にして、直接 Marketplace のバージョンチェックに戻すことができます。

エディタにおける GPU アクセラレーションの基盤作り

エディタでの GPU アクセラレーションを有効にする作業が始まったことをお知らせします。これは、ターミナルと同様に、入力の遅延を減らし、スクロールのパフォーマンスを向上させることを目的としています。

現在はまだ初期段階であり、テストはできませんが、進行中の詳細について共有します:

  • GPU レンダラーは、背後で WebGPU を使用しています。

  • 現在はパフォーマンスよりも機能の互換性と正確性に焦点を当てています。

  • GPU アクセラレーションが有効な場合、完全にサポートされていない行を DOM レンダリングに「フォールバック」するメカニズムがあります。これにより、早期に自己ホスティングを行い、互換性がない行は DOM アプローチで表示されます。例えば、200文字を超える行、特定のモナコ装飾(例えば、未使用変数のフェード表示)、改行される行などがフォールバックします。

  • Monaco のインライン装飾は、実際の要素にスタイルを適用するため、CSS を使用しているため、この機能の大きな課題となりました。これをサポートするために、装飾に添付されている CSS を検出し、サポートされていないスタイルがあれば、共通の CSS プロパティのサブセットをサポートする方法を採用しています。

  • GPU レンダリングは、現在のところ DOM レンダリングとほぼ同じに見えますが、DOM を使用してレンダリングされた行には黄色い線が表示されます。

この作業を追跡しているイシューナンバーは #221145 で、進捗があるたびに更新と詳細が追加されます。

macOS 10.15 の EOL 警告

VS Code デスクトップは、次のいくつかのマイルストーンで Electron 33 にアップデートされます。この Electron 33 のアップデートにより、VS Code デスクトップは macOS Catalina では動作しなくなります。このマイルストーンでは、影響を受けるプラットフォームのユーザーに向けて、移行準備のための非推奨通知を追加しました。もし、上記の OS バージョンを使用している場合は、FAQ を確認して追加情報をご覧ください。

注目すべき修正

  • 233915 拡張機能ビューの拡張機能のコンテキストメニューで「リンクをコピー」アクションを使用して他の人と拡張機能を共有できるようになった。
  • 231542 ファイルを保存できない、またはファイルデータが EBUSY エラーで消える問題が頻発。
  • 233304 onDidChangeCheckboxState が 1.95 で動作しなくなる問題を修正。
  • 232263 クロスプロセス呼び出しをバッチ処理することによってツリービューを最適化。
  • 156723 Wayland で実行しているときにドラッグアンドドロップのサポートが修正。

スポンサーリンク

共有

もふもふ
著者
もふもふ
プログラマ。汎用系→ゲームエンジニア→Webエンジニア→QAエンジニア