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

2024年2月 (バージョン 1.87)

Update 1.87.1: このアップデートでは、これらの問題に対処しています。

Update 1.87.2: このアップデートでは、このセキュリティ問題に対処しています。

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

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

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

アクセシビリティ

エディターでのディクテーションの使用

VS Code Speech拡張機能をインストールしていれば、音声を使ってエディターに直接ディクテーションできるようになりました。

エディターディクテーションを開始および停止するための新しいコマンドが追加されました: 音声: エディターでディクテーションを開始 (⌥⌘V (Windows、Linux Ctrl+Alt+V)) と 音声: エディターでディクテーションを停止 (Escape)。

開始コマンド (⌥⌘V (Windows、Linux Ctrl+Alt+V)) のキーバインディングを押し続けると、キーを離すとすぐに音声認識が停止するウォーキートーキーモードを有効にできます。

注: ディクテーションは、SCMコミット入力ボックスやプルリクエストレビュー時のコメント入力フィールドなど、リッチエディターが使用される他の場所でも機能します。

音声認識の多言語サポート

VS Code Speech拡張機能を使用する場合、accessibility.voice.speechLanguage設定を使用して、サポートされている26言語の中から選択できるようになりました。

音声拡張機能の各言語は、独自の拡張機能として提供されます。初めて音声認識を開始すると、選択した言語ごとに拡張機能のインストールが表示されます。

アクセシビリティシグナル

アクセシビリティシグナルには、以前はオーディオキューと呼ばれていたサウンドと、以前はアラートと呼ばれていたアナウンスの両方が含まれます。

コマンド ヘルプ: シグナルサウンドを一覧表示ヘルプ: シグナルアナウンスを一覧表示 により、利用可能なシグナルを表示して設定できます。この新しい設定への移行は自動的に行われます。

以前

"audioCues.clear": "on | auto | off"
"accessibility.alert.clear": true | false

以後

"accessibility.signals.clear": {
    "sound": "auto | on | off",
    "announcement" (optional): "auto | off"
}

Workbench

リリースノートのインタラクティブな設定

新機能を簡単に使い始められるように、リリースノートから直接設定を有効にしたり表示したりできるようになりました。VS Code内からリリースノートを表示すると(リリースノートを表示コマンド)、一部の設定に歯車アイコンがあることに気づくでしょう。設定または歯車アイコンを選択すると、すぐに設定を操作できます。

Example of an interactive setting in release notes

言語モデルアクセスへの透明性と制御

このイテレーションでは、拡張機能がGitHub Copilot Chatの言語モデルを使用できるようにする提案されたAPIを導入しました。モデルへのアクセスに最高の透明性と制御を提供するために、以下の機能を追加しました。

認証アクセスを管理するように言語モデルアクセスを管理する

言語モデルへのアクセス管理が、VS CodeでGitHubアカウントやMicrosoftアカウント(またはAuthenticationProviderモデルを利用するもの)へのアクセス管理と非常によく似ていることがわかりました。これらの類似点から、言語モデルへのアクセスにもVS Codeの認証スタックを利用しました。

拡張機能が別の拡張機能の言語モデルにアクセスしたい場合、アクセス要求のワンタイムプロンプトが表示され、これは保持されます。言語モデルアクセスを要求する拡張機能を示すモーダルダイアログ

アクセスが許可されると、アカウントメニューの、アカウントへのアクセスを管理するのと同じ場所でそのアクセスを管理できます。

Manage trusted extensions options in the account menu

"信頼できる拡張機能の管理"は、必要に応じてアクセスを管理できるクイックピックに誘導します。

Manage trusted extensions quick pick

最初の作業が完了したら、できるだけスムーズで明確なエクスペリエンスになるように、引き続きエクスペリエンスを洗練していきます。

拡張機能の言語モデル使用状況を追跡する

拡張機能の言語モデル使用状況は、拡張機能エディターとランタイム拡張機能エディターで追跡できます。以下の画像は、Copilot Chatサンプル拡張機能がGitHub Copilot Chat言語モデルに対して行ったリクエストの数を示しています。

Tracking language model usage in extension editor

Tracking language model usage in running extensions editor

Editor

エディターのスティッキースクロール

このイテレーションでは、エディターでスティッキースクロールをデフォルトで有効にしました。editor.stickyScroll.enabled設定を使用して変更できます。

また、エディターのスティッキーウィジェット内に表示できる最大行数を10から20に増やしました。editor.stickyScroll.maxLineCount設定で最大行数を構成できます。

複数カーソルでのインライン補完

このイテレーションでは、複数カーソルでのインライン補完のサポートを追加しました。これにより、インライン補完はプライマリカーソル位置とセカンダリカーソル位置の両方でプレビューされ、適用されます。

マルチ差分エディターでのリファクタリングプレビュー

リファクタリングプレビューを使用すると、コードリファクタリングによって適用される変更を確認できます。リファクタリングプレビューの変更は、マルチ差分エディターに表示されるようになり、すべての変更を一目で確認し、以前のバージョンと比較することが容易になりました。

ターミナル

コマンド期間の追跡

シェル統合が有効になっている場合、ターミナル期間が追跡され、コマンドホバーに詳細が表示されるようになりました。

Hovering the terminal command shows how long it took in milliseconds

ズームイン、ズームアウト、リセットの新しいコマンド

ターミナルのフォントサイズをズームイン、ズームアウト、リセットするための新しいコマンドが追加されました。これらはデフォルトではバインドされていませんが、お好みのキーバインディングにバインドできます。

  • ターミナル: フォントサイズを拡大 (workbench.action.terminal.fontZoomIn)
  • ターミナル: フォントサイズを縮小 (workbench.action.terminal.fontZoomOut)
  • ターミナル: フォントサイズをリセット (workbench.action.terminal.fontZoomReset)

ソース管理

ウィンドウタイトルにリポジトリ名またはブランチ名を含める

ユーザーは、window.title設定を使用してウィンドウタイトルをカスタマイズできます。このイテレーションでは、この設定で使用できる2つの新しい変数${activeRepositoryName}${activeRepositoryBranchName}を追加しました。これらの変数は、それぞれアクティブなリポジトリの名前とアクティブなブランチの名前に置き換えられます。

コミット入力検証の改善

このイテレーションでは、言語診断を使用してコミットメッセージの作成に対するより良い入力検証を提供することを検討しました。言語診断を使用することで、入力検証の警告を解決するために呼び出すことができるコードアクションを表示できます。空白文字の削除、git.inputValidationSubjectLengthgit.inputValidationLength設定に基づいて行をハードラップするコードアクションを追加し、今後さらにコードアクションを追加する予定です。

有効にするには、git.inputValidation設定を切り替えます。これをデフォルトで有効にする前に解決すべき問題がいくつかありますが、その間はぜひ有効にしてフィードバックをお寄せください。

受信/送信変更の設定管理

ソース管理ビューの受信/送信セクションの改良を続けています。このイテレーションでは、「受信/送信」区切り文字に設定アクションを追加しました。これにより、ユーザーはscm.showIncomingChangesscm.showOutgoingChanges、およびscm.showChangesSummaryの設定をより簡単に切り替えることができます。これらのアクションは、ソース管理ビューのタイトルバーの...メニューにある受信と送信メニューでも利用できます。

変更されていないエディターをすべて閉じるコマンド

エディター管理を支援するため、コマンドパレットに変更されていないエディターをすべて閉じるコマンドを追加しました。これにより、未変更のファイルを持つすべてのエディターが閉じられます。このコマンドは、未保存の変更があるエディターは閉じません。

ノートブック

ノートブックのインデント設定

notebook.editorOptionsCustomizations設定を介して、ノートブック固有のインデント設定をサポートするようになりました。この設定により、ユーザーはeditor.tabSizeeditor.indentSize、およびeditor.insertSpaces設定を介して、ノートブックに特定のインデントスタイルを設定できます。

また、ユーザーはノートブックのインデントというステータスバーエントリにも気づくでしょう。これは、ノートブックエディターの現在のインデント設定を示します。このエントリにはクイックピックメニューがあり、設定エディターを開かずにインデント設定を管理できます。これは、エディターでも利用できるのと同じクイックピックメニューです。

デバッグ

新しいBreakpointModeのサポート

VS Codeは、ブレークポイントの異なる「モード」を設定できるDebug Adapter Protocol (DAP)への新しい追加をサポートしています。この機能は、例えばハードウェアブレークポイントとソフトウェアブレークポイントを設定するために、ネイティブコードのデバッガーによって一般的に使用される可能性があります。ブレークポイントのモードは、コンテキストメニューのモードを編集アクションで変更できます。

Breakpoint context menu now has an 'Edit Mode...' option to change the breakpoint mode

リモート開発

リモート開発拡張機能を使用すると、開発コンテナー、SSH 経由のリモートマシン、リモートトンネル、またはWindows 用 Linux サブシステム (WSL) をフル機能の開発環境として使用できます。

主なハイライトは次のとおりです。

  • GitHub Copilot Chatがワークスペースに開発コンテナー構成ファイルを追加する際に、テンプレートと機能を提案

これらの機能の詳細については、リモート開発リリースノートをご覧ください。

VS Codeのさまざまなリモート開発機能の概要を知るには、最近のVisual Studio Code Learnパスによるリモート開発をお見逃しなく。

拡張機能への貢献

GitHub Copilot

名前変更の提案

Copilotによる名前変更の提案を段階的に展開しています。エディターでシンボル名を変更すると、GitHub Copilotがコードに基づいて、そのシンボルに対して可能な新しい名前のリストを提案します。

インラインチャットのアクセシビリティビュー

インラインチャットにアクセシビリティビューが追加され、アクセシブルな差分ビューアと同様にコードの変更が表示されるようになりました。アクセシビリティビューは、スクリーンリーダーモードを使用すると有効になります。inlineChat.accessibleDiffView設定を使用して、常にオンまたはオフにすることもできます。

また、変更の塊は、F7Shift+F7のキーバインディングでキーボードでナビゲートできるようになりました。

インラインチャットのデフォルトモード

live previewモードを廃止し、liveをインラインチャットのデフォルトモードとしました。これは、提案がエディターに直接適用され、変更がインライン差分によって強調表示されることを意味します。

マイクアイコンは常に表示される

Copilot Chatで音声認識を開始するためのマイクアイコンが常に表示されるようになりました。VS Code Speech拡張機能がまだインストールされていない場合、アイコンを選択すると、音声テキスト変換機能を有効にするために拡張機能のインストールを最初に求めます。

Microphone icon in chat input

この機能に興味がない場合、またはキーボードショートカットでのみ使用したい場合は、コンテキストメニューから機能を非表示にできます。

Hide microphone icon in chat input

エージェントとスラッシュコマンドの音声サポート

VS Code Speech拡張機能を使用して音声でチャット入力フィールドに入力すると、「at workspace」や「slash fix」などのフレーズがそれぞれのエージェントとスラッシュコマンドに変換されるようになりました。これは、チャットビューとインラインチャットの両方で機能します。

どこでもウォーキートーキーモード

VS Code Speech拡張機能を使用する場合、音声: 音声チャットを開始 (⌘I (Windows、Linux Ctrl+I)) コマンドがどこでも機能するようになり、フォーカスのある場所(エディター内のインラインチャット、それ以外の場合はパネルチャット)に応じて音声チャットが起動します。

ウォーキートーキーモードを有効にするには、キーバインディングを押し続けます。キーを離すまで音声認識がアクティブになり、その後リクエストが自動的に送信されます。

カーソル位置に基づくCopilot: Explain This

以前は、チャットでExplain Thisを入力するには、まずアクティブなエディターで説明するテキストを選択する必要がありました。識別子の定義を取得するために、カーソルを識別子に置くこともできるようになりました。定義が別のファイルにある場合、これにはリッチ言語サポートが利用可能である必要があります。

プレビュー: #codebase変数

このイテレーションでは、GitHub Copilot Chatのプレリリースバージョンに、#codebaseという新しいチャット変数を導入しました。この変数は、クエリに基づいてワークスペースコンテキストをCopilotまたは会話しているチャット参加者に提供するために使用できます。

この例では、#codebaseはまず@workspaceに質問し、その応答を@terminalに質問する内容に追加するように考えることができます。

これはプレビュー機能であるため、#codebaseがこの変数の最終的な名前ではない可能性がありますが、ワークスペースコンテキストをチャット参加者に含める方法を提供する意図があります。

繰り返しになりますが、これはGitHub Copilot Chatのプレリリースバージョンでのみ利用可能です。ご意見と使用方法をお知らせください。

ターミナルワークスペースのコンテキスト

ターミナルは、時間がかかる可能性のあるワークスペースコンテキストを自動的に取り込むことはなくなりました。代わりに、#codebase変数を使用して明示的に含める必要があります。

ターミナルチャットの位置

新しい設定github.copilot.chat.terminalChatLocationが追加され、ターミナルチャットのエクスペリエンスを制御します。デフォルト値はchatViewで、以前の動作を好む場合はquickChatに設定できます。

Jupyter

ローカルで実行されるJupyterサーバーのLanguage Serverサポート

ローカルのJupyterサーバーに接続する場合、以前はJupyter拡張機能がこれらのJupyterサーバーをリモートとして扱っていました。その結果、Pylance拡張機能はインストールされたパッケージを検出できませんでした。

Failed language features for remote Jupyter Servers

このイテレーションでは、Jupyter拡張機能が接続されたJupyterサーバーがローカルかリモートかを検出します。これにより、Pylance拡張機能は、インストールされたパッケージ(ローカルのPython環境内)に基づいて、よりリッチな言語機能を提供できます。

Language features for remote Jupyter Servers

Python

Python REPLのシェル統合

WSL拡張機能を介して、Mac、Linux、WindowsでPython REPLのシェル統合が有効になりました。Python REPLでコマンドを実行すると、色付きの丸いデコレータがコマンドの成功または失敗を示します。さらに、Python REPLのターミナル: 最近のコマンドを実行…コマンドもサポートしており、REPLのコマンド履歴を表示および利用できます。

また、すべてのオペレーティングシステムでPythonのシェルファイル履歴もサポートしており、ターミナル: 最近のコマンドを実行からアクセスできます。

最初のコマンドが無視されるリスクの低減

以前は、多くのPython REPLユーザーがPython REPLへの最初のコマンド(たとえば、Shift+Enterの使用)で問題に気づいていました。Pythonコマンドが無視されてPython REPLに送信されなかったか、コマンドがPython REPL自体ではなく、Python REPLを起動するシェルに複数回貼り付けられていました。この動作は、特にWindowsユーザーや古いマシンで作業しているユーザーで発生しました。

このイテレーションでは、この動作が発生するリスクを軽減し、減らすための努力をしました。ユーザーは、VS Code内の最初のREPLインスタンスにPythonコマンドを送信したときに、最初のコマンドが失われることが少なくなりました。

不足しているインポートを追加するための改善

Pylance拡張機能は、不足しているインポートを追加するためのインポートを追加コードアクションを提供します。Pylanceのプレリリースバージョンでは、このコードアクションを改善しました。Pylanceは、以下の基準に基づいて優先順位を付けられた、上位3つの高信頼度インポートオプションのみを表示するためのヒューリスティクスを使用するようになりました: 最近使用したインポート、同じモジュールからのシンボル、標準ライブラリからのシンボル、ユーザーモジュールからのシンボル、サードパーティパッケージからのシンボル、そして最後にモジュール名とシンボル名によるソート。

さらに、2つの新しいコードアクションが導入されました: 追加のインポート一致を検索。これは、不足しているインポートシンボルにプレフィックスが一致するインポートオプションを検索できるクイックピックメニューを表示します。また、スペルを変更。これは、タイプミスによる不足しているインポートのインポート提案を提供します。

python.analysis.addImport.heuristics設定でこの動作を有効にできます。これを間もなく新しいデフォルト動作とし、将来のリリースでこの設定を非推奨にする予定です。

DjangoまたはFlaskアプリをデバッグする際にブラウザを自動的に開く

Python Debugger拡張機能を使用して、Python Webアプリケーションの開発とテストがさらに便利になりました!launch.json構成でautoStartBrowser: trueを設定することで、DjangoまたはFlaskアプリでデバッガーを開始する際にブラウザを自動的に開くことができるようになりました。

{
  "name": "Python Debugger: Flask",
  "type": "debugpy",
  "request": "launch",
  "module": "flask",
  "env": {
    "FLASK_APP": "hello_app.webapp",
    "FLASK_DEBUG": "1"
  },
  "args": ["run"],
  "jinja": true,
  "autoStartBrowser": true
}

シンボリックリンクされたワークスペースでのPytestのバグ修正

シンボリックリンクを持つワークスペースでpytestテストが正しく機能するように、バグ修正を実装しました。テストのリライトにおいて、シンボリックリンクの場所からのテストは、そのシンボリックリンクパスによって正しく参照され実行されます。

GitHubプルリクエスト

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

  • 「GitHubプルリクエストと課題」から「GitHubプルリクエスト」に名称変更
  • マージまたはスカッシュコミットに関連付けられたメールアドレスは、マージ/スカッシュ時に選択できます。
  • 設定githubPullRequests.labelCreatedは、作成されたPRに自動的に追加されるラベルを設定するために使用できます。
  • 「オーナーレベル」のPRテンプレートがサポートされるようになりました
  • PRと課題の作成時にプロジェクトを追加できるようになりました

その他のハイライトについては、拡張機能の0.82.0リリースに関する変更ログを確認してください。

プレビュー機能

拡張機能作者向け: @vscode/l10n-devとAzure AI Translatorのプレビュー

このイテレーションでは、Azure AI Translatorを使用して文字列を翻訳できる、@vscode/l10n-devのサブコマンドである新しいコマンドを導入しました。

文字列をエクスポートし、Azure AI Translatorインスタンスを作成した後、AZURE_TRANSLATOR_KEYAZURE_TRANSLATOR_REGION環境変数を設定し、次のコマンドを実行してAzure AI Translatorを使用して翻訳を生成できます。

npx @vscode/l10n-dev generate-azure -o ./l10n/ ./l10n/bundle.l10n.json ./package.nls.json

Azure AI Translatorには無料枠があります。これにより、拡張機能の作成者が、さまざまな言語を話す多くのユーザーをより簡単にサポートできるツールを提供できる良い機会だと考えました。これらは機械翻訳であるため、常に完璧とは限らないことに注意してください。言語を話す人がいれば、より洗練された翻訳への良い出発点となる可能性があります。

詳細については、Azure AI Translator統合に関するl10n-devドキュメントをご覧ください。

拡張機能の作成

拡張機能のテストカバレッジ

拡張機能にテストCLIを使用している拡張機能の作成者は、@vscode/test-cliパッケージの最新バージョンに更新することでテストカバレッジを生成できます。

カバレッジは、テスト実行時に--coverageフラグを渡すことでコマンドラインで生成でき、VS Code UIではカバレッジ付きで実行アクションを使用することで生成できます。

launch.jsonのテスト構成

launch.json構成でテスト構成ファイルを参照できるようになりました。

{
    "type": "extensionHost",
    "request": "launch",
    "name": "My extension tests",
+   "testConfiguration": "${workspaceFolder}/.vscode-test.js",
-   "args": ["--extensionDevelopmentPath=${workspaceFolder}"]
},

以前は必要だったさまざまなargsは自動生成されますが、追加の引数が渡された場合はVS Codeのコマンドラインに追加されます。

課題報告機能への追加データの提供

前回のイテレーションで、workbench.action.openIssueReporterコマンドにdatauriのフィールドを追加しました。これにより、拡張機能がより多くの事前入力された情報でネイティブの課題報告機能を直接開くことができるようになりました。

拡張機能がヘルプ: 課題報告...を介して通常の課題報告フローをナビゲートする別のケースでこの恩恵を受けることができるように、拡張機能はカスタムコマンド(openIssueReporterを呼び出す)とissue/reporterへのメニュー貢献点を貢献できます。

package.jsonにおけるcontributesの貢献されたコマンドとメニューの例

"commands": [
    {
        "command": "extension.myCommand",
        "title": "Report Issue"
    }
],
    "menus": {
        "issue/reporter": [
            {
                "command": "extension.myCommand"
            }
        ]
    }

APIとopenIssueReporterコマンドの更新または変更については、issue #196863を購読してください。

提案されたAPI

チャットおよび言語モデルAPIの最終化間近

拡張機能がチャットビューと一般的な言語モデルの使用に貢献するためのサポートに取り組んできました。現在、以下のAPIの最終化の最終段階にあり、皆様からのフィードバックをお待ちしております。

拡張機能ガイドで、チャット拡張機能の構築方法言語モデルの使用方法について詳しく学んでください。

FindFiles2 API

既存のworkspace.FindFiles APIの改良版である、新しい提案された拡張機能APIが追加されました。新しいworkspace.FindFiles2 APIは、ワークスペースのファイル検索を可能にする新しいオプションを導入します。

  • files.excludeおよびsearch.exclude設定を尊重する
  • 無視ファイルを尊重する
  • ファジー検索を実行する
  • シンボリックリンクをたどる

新しいAPIはこちらで確認できます。

FindFiles2は仮称であり、この機能は将来的にFindFilesの代替オーバーロードとして提供される可能性があることに注意してください。

テストカバレッジAPI

このイテレーションでは、テストカバレッジAPIとエディター内エクスペリエンスが機能的に完成した状態です。VS Code 1.88リリースでの最終化が予測される前に、拡張機能の作者に試用し、フィードバックを提供するようお勧めします。

Extension Pack for JavaはすでにテストカバレッジAPIを採用しています。開発者はJavaテストを実行しているカバレッジ結果をすでに確認できます。これで、カバレッジ付きでテストを実行ボタンを選択し、テストエクスプローラービューでテストカバレッジパネルを表示することで、テストカバレッジにアクセスできます。チームの12月1月の更新で、Extension Pack for Javaでのテストカバレッジについて詳しく学んでください。

APIはここに含めるには長すぎますが、非常に分かりやすいと考えており、issue #123713での提案に対する皆様のご意見を歓迎します。

デバッグビジュアライザーAPI

拡張機能が変数用のビジュアライザーを提供できる新しいAPIがあります。これらのビジュアライザーは、新しいエディターを開くなどのコマンドを実行するアクション、またはデバッグビューにインラインで埋め込まれ、データのデフォルト表現に代わるツリーです。

新しいAPIはこちらで確認できます。

新しいシンボル名プロバイダーAPI

このAPIにより、ユーザーがシンボル名を変更したいときに、拡張機能が名前の提案を提供できるようになります。

注目すべき修正点

  • 184046 ターミナルでリンクが完全に機能しなくなることがある

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-black-formatterへの貢献

vscode-hexeditorへの貢献

  • @deitry (Dmitry Vornychev): プラグインの説明を修正 PR #480
  • @jogo-
    • 符号なしを符号付きint64の前に表示 PR #482
    • データインスペクターでASCII文字を表示 PR #483
    • デシマルとヘキサでステータスオフセットと選択を表示 PR #486
    • データインスペクターでULEB128とSLEB128を表示 PR #488
    • CHANGELOG.mdのタイポを修正 PR #489
  • @liudonghua123 (liudonghua): 一般的なCJKエンコーディング (簡体字中国語用gb18030、繁体字中国語用big5、韓国語用euc-kr、日本語用euc-jp) データ型サポートを追加 PR #465

vscode-isortへの貢献

vscode-languageserver-nodeへの貢献者

vscode-pull-request-githubへの貢献者

language-server-protocolへの貢献者

node-ptyへの貢献

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