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

2023年3月 (バージョン 1.77)

アップデート 1.77.1: このアップデートは、これらの問題に対応しています。

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

アップデート 1.77.3: このアップデートは、これらの問題に対応しています。

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


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

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com更新 にアクセスしてください。

Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。

アクセシビリティ

ターミナルアクセシブルバッファーの改善

スクリーンリーダーユーザーがTerminal: Focus Accessible Buffer (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) を介してターミナルコンテンツにアクセスできるアクセシブルバッファが、セッションがEscapeまたはTabで終了されるまで動的に更新され、アクティブな状態を維持するようになりました。

シェル統合されたターミナルでアクセシブルバッファがフォーカスされている場合、Go to Symbol in Accessible View (⇧⌘O (Windows, Linux Ctrl+Shift+O)) を使用すると、Go to Symbol in Editor... を使用してエディターを移動するのと同様に、ターミナルコマンド間を移動できます。

ホバーコントロールのナビゲーション

ホバーコントロールにフォーカスを合わせ、updownhomeendpage uppage downキーで水平方向と垂直方向にスクロールできるようになりました。ホバーコントロールにフォーカスを合わせるキーボードショートカット (⌘K ⌘I (Windows, Linux Ctrl+K Ctrl+I)) は、プライマリーカーソル位置にホバーを表示するために使用されるものと同じです。

通知のプライマリアクションを承認する

通知のプライマリアクションを承認するには、これまでユーザーは通知センターに移動する必要がありました。Notifications: Accept Notification Primary Action (⇧⌘A (Windows, Linux Ctrl+Shift+A)) は、現在のコンテキストを離れることなくプライマリアクションを実行します。

スティッキースクロールナビゲーション

スティッキースクロールの行にフォーカスを合わせ、upおよびdownキーで移動できるようになりました。Enterキーを使用して選択した行に移動できます。スティッキースクロールにフォーカスを合わせるには、コマンドパレットからFocus Sticky Scrollを実行します。View: Toggle Stick ScrollコマンドでスティッキースクロールUIを有効にできます。

Workbench

GitHubリポジトリで作業している場合、エディターのガターからエディターの行または範囲のディープリンクをコピーできるようになりました。

VS Code Desktopで、エディターのガターからGitHubのパーマリンクとHEADリンクを作成できるようにするには、GitHub Pull Requests and Issues拡張機能をインストールする必要があります。vscode.devでは、GitHubリポジトリのディープリンクがすぐに利用可能です。

これらのアクションは、エディタータブのコンテキストメニューとエクスプローラーのコンテキストメニューの共有サブメニューにも追加されています。

ファイルコンテンツによる拡張機能の推奨

VS Codeは、ファイルコンテンツに基づいて拡張機能を推奨できるようになりました。例えば、ノートブックセルの構文を持つPythonファイルを開くと、VS Codeはこれらのセルを適切にレンダリングおよび実行するためにJupyter拡張機能を推奨します。

スティッキースクロールのデフォルトプロバイダーを選択

スティッキースクロール (View: Toggle Sticky Scroll) は、見出しを作成するためにいくつかの異なるコンテンツモデルを使用します。アウトラインプロバイダーモデル、フォールディングプロバイダーモデル、およびインデントモデルの中から選択して、スティッキースクロールUIに表示する行を決定できるようになりました。現在の言語でモデルが利用できない場合、VS Codeは前述の順序で次のモデルにフォールバックします。最初に使用されるデフォルトモデルは、Editor > Sticky Scroll: Default Model (editor.stickyScroll.defaultModel) で変更できます。

ターミナル

タブホバーの改善

ターミナルタブのホバーに、シェルのプロセスID、完全なコマンドライン、および拡張機能の環境変数寄与の改善されたビューが表示されるようになりました。

Hovering the terminal tab will reveal details about the terminal, this can be triggered with the keyboard via Ctrl/Cmd+K, Ctrl/Cmd+I

ソース管理

リモートリポジトリでのGit LFSコミットサポート

GitHubおよびAzure Reposリポジトリを編集する際に、Git LFSをインストールせずにLFS追跡ファイルをコミットできるようになりました。開始するには、VS Code DesktopにGitHub RepositoriesまたはAzure Repos拡張機能をインストールし、Open Remote Repositoryコマンドを実行してリポジトリを開き、ソース管理ビューを使用して変更をコミットします。拡張機能は.gitattributes構成を解析し、変更されたファイルがリポジトリプロバイダーのGit LFSストレージにコミットされるべきかどうかを判断します。

この動作を無効にするには、"githubRepositories.experimental.lfs.write.enabled": falseおよび"azureRepos.experimental.lfs.write.enabled": falseを設定します。

: VS Code for the Web (vscode.dev) のサポートはまだ利用できません。

3ウェイマージエディターのドキュメント

マージ競合の解決に3ウェイマージエディターをまだ試していない場合は、ソース管理ドキュメントの3ウェイマージエディターセクションを確認してください。3ウェイマージエディターを使用すると、受信した変更と現在の変更を同時に表示および選択し、結果をプレビューし、変更前のファイルのベースバージョンも確認できます。

3-way merge editor

そして、3ウェイマージエディターを主役とするYouTube動画The EXTREMELY Helpful Guide to Merge Conflictsもお見逃しなく。

ノートブック

保存時にフォーマット

ノートブックの保存時にフォーマットを有効にできるようになりました。これにより、保存時にノートブック全体がフォーマットされます。notebook.formatOnSave.enabledtrueに設定することで有効にできます。

ノートブックの出力内で検索がデフォルトで有効に

ノートブックで検索コントロールを開くと、デフォルトでセルの入力と出力のテキストが検索されるようになりました。フィルタードロップダウンのオプションを変更することで、これをオフにできます。

スクロール可能な出力領域

notebook.output.scrollingがtrueに設定されている場合、notebook.output.textLineLimitを超える出力およびエラーはスクロール可能な領域内にレンダリングされます。

言語

TypeScript 5.0

VS Codeは現在、TypeScript 5.0.2を同梱しています。このメジャーアップデートには、新しいTypeScript言語機能、パフォーマンスの向上、および多くの重要な改善とバグ修正が含まれています。TypeScript 5.0については、TypeScriptブログで読むことができます。

JavaScriptとTypeScriptのswitch case補完

VS Codeは、JavaScriptまたはTypeScriptのリテラル型に対するswitchステートメントの足場を組むのに役立つようになりました。

switchステートメント内でcaseと入力し、case ...の提案を受け入れます。これにより、この型のすべての値に対してケースが自動的に挿入されます。これは、switchされる値がユニオン型またはリテラル型の場合にのみ機能することに注意してください。

Web 用 VS Code

.gitignoreのサポート

今回のマイルストーンで、VS Code for the WebのGitHubおよびAzure Reposリポジトリにおける.gitignoreファイルのサポートが追加されました。以下のビデオでは、.gitignoreによって追跡されていないファイルがエクスプローラービューで灰色表示され、ソース管理ビューには表示されません。これは、GitHub RepositoriesまたはAzure Repos拡張機能を使用してVS Code Desktopでリポジトリをリモートで参照する場合にも機能します。

以下の短いビデオでは、.pxtフォルダーを.gitignoreに追加して、含まれるファイルをソース管理ビューから非表示にしています。

リモート開発

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

Dev Containerを使用すると、コンテナーをフル機能の開発環境として使用できます。Dev Container Specificationは、簡素化された、オーケストレーションされていない単一コンテナーオプションを提供しつつ、既存のフォーマットを一般的な開発設定、ツール、構成で拡張する方法を模索しています。Dev Containersと仕様については、Changelogポッドキャストのエピソード#529で詳しく学ぶことができます。

その他のリモート開発のハイライト

  • リモートトンネル - 既存のトンネルの再利用が向上。
  • リモートトンネル - Continue Working in VS Code Desktopコマンドでローカル開発に素早く移行。
  • Dev Containers - 未使用のDev Containersとボリュームのクリーンアップが容易に。

新しい拡張機能の機能とバグ修正については、リモート開発リリースノートで確認できます。

拡張機能

署名検証の失敗による拡張機能のインストールがブロックされない

拡張機能の署名検証が、一部の有効な拡張機能で誤ってエラーを報告し、インストールを妨げています。これらの失敗はVS MarketplaceとVS Codeのバグが原因であり、現在修正に取り組んでいます。拡張機能の使用をブロックしないために、VS Codeは署名検証が失敗しても拡張機能をインストールします。VS Marketplace issue #619が修正され次第(おそらく次回の安定版リリースで)、署名検証チェックを再度有効にします。

拡張機能への貢献

Python

シンボルの移動リファクタリング

新しいMove symbol toコードアクションのおかげで、Pylanceを使用してPythonコードをより便利にリファクタリングできるようになりました。

試すには、Pythonファイル上のシンボルを選択し、表示される電球アイコンをクリックします (⌘. (Windows, Linux Ctrl+.))。シンボルを既存のファイルまたは新しいファイルに移動できます。新しい場所が新しいファイルの場合、シンボルと同じ名前のPythonファイルが作成されます。該当するすべてのインポート参照は、シンボルの移動に伴い自動的に更新されます。

依存関係ファイルからの環境作成

requirements.txtまたはpyproject.tomlファイルを開くと、エディターに新しいCreate Environment...ボタンが表示され、Python: Create Environmentコマンドを実行して、新しい仮想環境を作成し、リストされている依存関係をインストールできます。

A pyproject.toml file open with dependencies listed, and a Create Environment button displayed on the bottom right corner for the editor

拡張機能作成者向けの環境APIが完成

ユーザーのマシンで利用可能なPython環境を操作するためのPython拡張機能のAPIが完成しました。拡張機能はAPIを使用して、Python拡張機能がスクリプトを実行するために使用する選択された環境パスにアクセスしたり、パスを好みのものに更新したりすることもできます。

APIの使用例は、Python Environment APIsのWikiページにあります。将来的にnpm型パッケージをリリースする予定もあり、Python拡張機能APIの変更を追跡しやすくなります。

Jupyter

Python環境向けカーネルピッカーの改善

カーネルピッカーは、Pythonランタイムがインストールされていない場合でもconda環境をリストするようになりました。

例えば、conda create -n envMLのようなCLIを使用して新しいconda環境が作成された場合、この新しい環境はConda Env Without Pythonセクションの下にPython Environmentsのリストに表示されます。

そのような環境を選択すると、Pythonランタイムと必要な依存関係が自動的に環境にインストールされます。

Notebook kernel picker with ability to select empty conda environments

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能の進捗がありました。この拡張機能を使用すると、プルリクエストや Issue の作成、管理、作業を行うことができます。主なハイライトは次のとおりです。

  • プルリクエストは、Pull Requestsビューからvscode.devで開くことができます。
  • Create Pull RequestビューにAuto-mergeオプションをチェックするための新しい設定githubPullRequests.setAutoMergeがあります。

拡張機能の0.62.0リリースに関するチェンジログで、その他のハイライトを確認してください。

GitHub Copilot

GitHub Copilotは、コードをより速く、よりスマートに記述するのに役立つAIペアプログラマーツールです。VS CodeでCopilot拡張機能を使用して、コードを生成したり、生成されたコードから学習したり、エディターを構成したりすることができます。

GitHub Copilot extension

VS CodeへのCopilot統合のより深いプレビューを発表できることを嬉しく思います。GitHub Copilot Chat拡張機能を使用することで、次のような新機能を試すことができます。

  • インライン提案: コード内で作業しているときにCopilotの提案がインラインで表示されます。
  • チャットビュー: GitHub Copilotチャットビューで、あらゆるタスクや質問についてCopilotにヘルプを求めることができます。
  • インラインチャット: コードを記述しながら、ファイル内でインラインでCopilotと会話できます。

Copilotにバグを探したり、複雑なコードを説明したり、テストを作成したり、VS Codeに関する質問をしたりすることもできます。

Copilot chat example asking how to change VS Code colors

VS CodeチームのCopilotとの経験と将来については、VS Code and GitHub Copilotブログ投稿で詳しく学ぶことができます。VS CodeでCopilotを使用する方法の詳細については、GitHub Copilot in VS Codeの記事も参照してください。

プレビュー機能

出力のノートブック検索サポート

前回のイテレーションでは、開いているノートブックでフォーマットされたノートブックコンテンツのグローバル検索を導入しましたが、対象はセルとMarkdown入力のみでした。今回のイテレーションでは、ノートブック出力の検索サポートを追加しました。ノートブックを開いている場合、ノートブック内のどこを検索したいかをカスタマイズできるトグルがあります。search.experimental.notebookSearchを有効にしてお試しください!

ようこそページのリモート接続ピッカー

ようこそページで、実験的なリモート接続ピッカー「Connect to..」がスタートリストに表示されるようになり、リモート接続(SSH、リモートトンネル、GitHub Codespacesなど)を簡単に開始できるようになりました。この機能はデフォルトでは無効になっており、workbench.remote.experimental.showStartListEntrytrueに設定することで有効にできます。

拡張機能作成

次回のElectron 22アップデートには、ネイティブモジュールの変更が必要になる場合があります。

次回の安定版リリースでElectron 22へのアップデートを予定しています。これにより、V8メモリケージの有効化により、ネイティブモジュールを使用する拡張機能に影響があります。外部(「オフヒープ」)メモリを指すArrayBuffersは許可されなくなります。

更新されていないネイティブモジュールが引き続き機能するように、カスタムメモリ割り当て機能を提供する予定ですが、割り当てられた外部メモリの使用状況を確認することをお勧めします。この変更を適用する方法については、Electronブログ記事のアドバイスに従ってください。

連続テスト実行のサポートが完了

連続テスト実行のサポートが完了しました。このAPIにより、ユーザーはテスト拡張機能に対し、テストを「監視」し、変更が加えられるとテストを実行し続けることを示すことができます。

const profile = ctrl.createRunProfile(/* ... */);
+profile.supportsContinuousRun = true;

function runHandler(request: vscode.TestRunRequest, cancellation: vscode.CancellationToken) {
+  if (request.continuous) {
+    startWatchingAndRunningTests(request);
+  }

  // ...
}

新しいwhen句パーサー

今回のVS Codeリリースには、when句用の新しいパーサーが含まれており、新しい機能(例:括弧のサポート)とより優れた正確性を提供しますが、より厳格なルールも適用されます。このリリースには、拡張機能のマニフェストファイル(package.json)内のwhen句が構文的に正しいことを確認するためのリンターも含まれています。新しいパーサーによって問題が発生する可能性があるため、when句を確認することをお勧めします。また、when句で括弧を使用する場合、拡張機能はVS Codeバージョン1.77以降と互換性があります。変更の詳細については、issue #175540を参照してください。

ソース管理入力のインライン補完

ソース管理入力ボックスでインライン補完がサポートされるようになりました。

The inline suggestions extension sample running in the Source Control input

ソース管理入力ボックスのドキュメント言語識別子scminputです。

提案されたAPI

すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。

  1. 試したい提案を見つけて、その名前をpackage.json#enabledApiProposalsに追加します。
  2. 最新のvscode-dtsを使用し、vscode-dts devを実行します。このコマンドは、対応するd.tsファイルをワークスペースにダウンロードします。
  3. これで提案に対してプログラミングできます。

提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。

エディターのガターの提案されたコンテキストメニュー

editor/lineNumber/contextの提案されたメニューは、エディターのガターとエディターの行番号にアンカーされ、特定の行にコンテキストに応じた拡張機能のアクションを表示する方法を提供します。

開発でこれを試すには、contribEditorLineNumberMenu API提案を有効にしてください。このメニューに寄与するアクションは、コマンド引数に行番号を受け取り、when句でeditorLineNumberコンテキストキーを参照できます。フィードバックはAPI提案issue #175945に残すことができます。

ノートブックライフサイクルイベント: onWillSaveNotebookDocument

onWillSaveNotebookDocumentイベントは、ノートブックドキュメントが保存される前に発生します。このイベントは、ノートブックドキュメントが保存される前に何らかのアクションを実行したい拡張機能にとって有用です。例えば、ノートブックセル出力を保存前にクリーンアップしたい拡張機能は、このイベントのリスナーを登録し、適用されるセル出力の編集を返すことができます。

以下は、拡張機能がこのイベントのリスナーを登録する方法です。

vscode.workspace.onWillSaveNotebookDocument(e => {
    if (event.reason == vscode.NotebookDocumentSaveReason.Manual) {
      event.waitUntil(new Promise((resolve) => {
        const notebookEdit = new vscode.NotebookEdit(...);
        const edit = new vscode.WorkspaceEdit();
        edit.set(event.document.uri, [notebookEdit]);
        resolve([edit]);
      }));
    }
});

エンジニアリング

Windows 8および8.1のEOL警告

VS Code Desktopは、次の数回のマイルストーンでElectron >=23にアップデートされます。Electron 23へのアップデートに伴い、VS CodeデスクトップはWindows 8 / Windows Server 2012およびWindows 8.1 / Windows Server 2012 R2では動作しなくなります。このマイルストーンでは、これらの影響を受けるプラットフォームのユーザーに対し、移行準備のための非推奨通知を追加しました。これらのWindowsバージョンを実行している場合は、追加情報についてFAQをご覧ください。

Snapパッケージのベースイメージが更新されました

今回のイテレーションでは、以前のCore (Ubuntu 16.04から構築) からCore20 (Ubuntu 20.04から構築) をベースイメージとして使用するようにSnapパッケージを更新しました。この変更により、CLIのGLIBCシンボル不足が解決され、Waylandサポートなどの問題が修正されます。詳細については、プルリクエスト #127320を参照してください。

拡張機能ホスト向けカスタムメモリ割り当て機能の調査

V8サンドボックスが有効になっているElectron 22を採用し、特に外部配列バッファを使用するネイティブモジュールに依存する拡張機能への影響を最小限に抑えるために、拡張機能ホスト内の既存のメモリ割り当て機能をカスタマイズしました。具体的には、致命的なクラッシュを回避するための回避策として、拡張機能ホストはこれらのネイティブモジュールからの割り当てをV8サンドボックス内で行うようになりました。なぜこの解決策に至ったのかにご興味がある場合は、issue #177338で詳細を確認できます。

ドキュメント

新しいプログラミング言語トピック

  • VS CodeのRuby - Ruby LSP拡張機能を使用して、Ruby言語サポート(スニペット、リンティング、デバッグ)について学習します。
  • Polyglot Notebooks - Polyglot Notebooks拡張機能は、C#、PowerShell、JavaScriptなどの多言語プログラミングを可能にします。

注目すべき修正点

  • 174690 コメントAPI - author.iconPathは拡張機能にバンドルされたファイルを参照できますか?
  • 175805 VS Codeはポート転送用のIPv6プロセスを自動検出しない

ありがとうございます

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

問題追跡

問題追跡への貢献者

プルリクエスト

vscodeへの貢献者

vscode-languageserver-nodeへの貢献者

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

  • @Balastrong (Leonardo Montini)
    • set-labelsに空のラベル配列をプッシュしてすべて削除することを許可 PR #4637
    • 最後のラベルを削除するために空の配列をプッシュすることを許可 PR #4648

vscode-docsへの貢献

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

devcontainers/cliへの貢献

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