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

2021年6月 (バージョン 1.58)

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

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

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


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

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

このリリースで新しく追加された機能のデモをご覧になり、ライブで質問をしたい方は、日本時間7月14日午前0時 (ロンドン時間午後4時) に開催される VS Code チームのライブストリームにご参加ください。

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

Workbench

ワークスペースの信頼

ワークスペース信頼機能は、1.57 リリースで導入された大きな変更であり、開発者がソースを知らない場合でも安全にコードを閲覧できることが重要だと考えています。このマイルストーンでは、お客様からのフィードバックを取り入れ、問題の修正と提案への対応に注力してきました。

ワークスペース信頼をカスタマイズできるユーザー設定を発見しやすくするために、ワークスペース信頼エディターのヘッダーに新しい設定を構成アクションが追加されました。このアクションは、@tag:workspaceTrust でフィルターされた設定エディターを表示します。

Configure your settings action in the Workspace Trust editor

設定といえば、現在のウィンドウが制限モードであることを示すバナーが表示されるタイミングを設定するための新しい設定が追加されました。security.workspace.trust.startupPrompt 設定と同様に、新しい security.workspace.trust.banner を使用すると、ワークスペース信頼機能に慣れ、制限モードで作業しているというリマインダーが不要になった場合にバナーを無効にできます。デフォルトでは、このバナーはワークスペースごとに1回表示され、閉じるまで表示されます ("untilDismissed")。制限モードのバナーを表示するための他のオプションは "always""never" です。

ワークスペース信頼の根拠と開発の詳細については、最近のワークスペース信頼ブログ投稿で学ぶことができます。この投稿では、制限モードが意図しない、または悪意のあるコード実行からユーザーを保護する方法と、開発マシンを迅速かつ安全に作業できるようにセットアップするためのヒントが説明されています。

設定エディター

このイテレーションでは、設定エディターに、固定数のブール型プロパティを持つ設定オブジェクトのサポートを追加し、プロパティをチェックボックスのリストとしてレンダリングします。

Settings editor Boolean object renderer demo

このイテレーションでは、列挙型の配列に対する追加のサポートも追加され、編集モードでプレーンなテキストボックスではなくドロップダウンが使用されます。

Settings editor enum array renderer demo

一時的なワークスペース

「一時的な」ワークスペースと呼ばれる新しい種類のワークスペースが追加され、通常のワークスペースとは異なる動作をします。具体的には、

  • VS Code を再起動またはリロードしても、ワークスペースを再度開こうとはしません。
  • 一時的として設定されたワークスペースは、最近開いたワークスペースのリストに表示されません。

ワークスペースの .code-workspace ファイルに transient プロパティを true に設定することで、一時的なワークスペースを指定できます。

{
  "folders": [],
  "transient": true
}

設定の同期

設定同期に、すべてのログと最終同期状態を含むトラブルシューティングビューが追加されました。このビューには、コマンド設定同期: 同期データを表示を実行し、ビューサブメニューを開いてトラブルシューティングにチェックを入れることでアクセスできます。

Settings Sync Troubleshoot command in the Settings Sync view menu

テーマ: GitHub Light Theme

検索結果の最大数設定

新しい設定 search.maxResults が追加され、テキスト検索結果の最大数を設定できるようになりました。デフォルトは以前の10,000から20,000に増えました。非常に多くの検索結果を読み込むと、多少の遅延が発生する可能性があります。

統合ターミナル

エディター領域のターミナル

ターミナルをエディター領域に作成したり移動したりできるようになり、パネルの状態に関係なく保持され表示される多次元グリッドレイアウトが可能になりました。

エディター領域でターミナルを使用するには、いくつかのオプションがあります。

  • エディター領域にターミナルを作成コマンドで作成します。
  • タブリストからエディターにターミナルをドラッグ&ドロップします。
  • ターミナルがフォーカスされている状態でターミナルをエディター領域に移動を実行します。
  • ターミナルタブのコンテキストメニューでエディター領域に移動を選択します。

4 terminals in the editor area are laid out in a 2 by 2 grid

新しい terminal.integrated.defaultLocation 設定を editor に設定すると、新しく作成されたターミナルがデフォルトでエディター領域に表示されるようになります。

キャンバスレンダラーの明示的な設定

以前のイテレーションでは、WebGL ターミナルレンダラーをデフォルトで有効にし、terminal.integrated.rendererType 設定をよりシンプルな terminal.integrated.gpuAcceleration に置き換えました。残念ながら、一部のマシンでは WebGL での体験が低下し、利用可能な唯一のオプションは GPU アクセラレーションを完全に無効にして、はるかに遅い DOM ベースのレンダラーに移行することでした。terminal.integrated.gpuAcceleration を明示的に canvas に設定できるようになり、これらの環境ではこれが望ましい場合があります。

新しい terminal.integrated.showLinkHover 設定を使用すると、ターミナル内のリンクホバーを無効にできます。ターミナルリンクのホバーが邪魔だと感じる場合に便利です。

Editor

エディターのスクロールバーのカスタマイズ

エディターのスクロールバーをカスタマイズするための新しい設定が追加されました。

  • editor.scrollbar.horizontaleditor.scrollbar.vertical を使用して、スクロールバーの表示を制御します。
  • editor.scrollbar.horizontalScrollbarSizeeditor.scrollbar.verticalScrollbarSize で厚さを変更します。
  • editor.scrollbar.scrollByPage を使用して、クリックでページごとにスクロールするか、クリック位置にジャンプするか (デフォルト動作) を決定します。

以下では、エディターの垂直スクロールバーの幅が30ピクセルに設定されています。

Vertical editor scroll bar width set to 30 pixels

言語

Markdown プレビューでの数式レンダリング

VS Code の組み込み Markdown プレビューで、KaTeX を使用して数式をレンダリングできるようになりました。

Math rendering in the built-in Markdown preview

インライン数式は単一のドル記号で囲まれます。

Inline math: $x^2$

二重ドル記号で数式ブロックを作成できます。

Math block:

$$
\displaystyle
\left( \sum_{k=1}^n a_k b_k \right)^2
\leq
\left( \sum_{k=1}^n a_k^2 \right)
\left( \sum_{k=1}^n b_k^2 \right)
$$

"markdown.math.enabled": false を設定すると、この機能を無効にできます。

Markdown 数式構文のハイライト表示

VS Code は、Markdown ソース内の数式のハイライト表示もサポートするようになりました。

Syntax highlighting of a math equation in a Markdown file

これは、通常の Markdown ファイルとノートブック内の Markdown セルの両方で機能します。

TypeScript 4.3.5

TS 4.3.5 をバンドルするようになりました。このマイナーアップデートでは、JSX で自動インポートが機能しないなど、いくつかの重要なバグが修正されています。

デバッグ

ファイルごとの選択環境の記憶

launch.json ファイルなしでデバッグが開始されると、VS Code はアクティブなエディターを調べ、エディターの言語モードに基づいて使用するデバッグ拡張機能を決定します。しかし、一部の言語では複数のデバッグ拡張機能が可能な場合があり、その場合、VS Code はそれらのいずれかを選択するように促します。デバッグをよりスムーズにするために、VS Code はファイルごとに選択されたデバッガーを記憶するようになり、次回デバッグを開始するときに、プロンプトなしでセッションが開始されます。

以下の短いビデオでは、ユーザーは単一の JavaScript ファイルをデバッグするために Node.js デバッグ環境を選択し、そのファイルに対して新しいデバッグセッションが開始されるときにその選択が記憶されます。

Debug is started first time and the environment prompt is presented. The next time there is no prompt when the debug session starts

デバッグコンソールの提案は Enter で受け入れられなくなりました

デバッグコンソールの提案は、Enter では受け入れられなくなり、Shift+EnterTab のみで受け入れられます。以前は、デバッグコンソール入力にすでに入力されている内容を評価したいだけであったときに、誤って提案を受け入れてしまうことが簡単でした。

Tab キーが提案を受け入れる方法としてより発見しやすくなるように、VS Code のデバッグコンソール入力にヒントのステータスバー ("Insert (Tab)") が表示されるようになりました。

Debug console input box showing a Status bar rendered in the bottom that says "Insert (Tab)"

拡張機能への貢献

Jupyter インタラクティブウィンドウ

ノートブックエコシステムの上に組み込みのインタラクティブウィンドウ体験を提供する作業を開始し、Jupyter 拡張機能は jupyter.enableNativeInteractiveWindow 設定を介してそれを採用しました。この機能が有効になっている場合、Python ファイルからコードを実行したり、コマンドパレットから直接起動したりすると、Jupyter 拡張機能は WebView 実装の代わりに組み込みエディターを開きます。組み込みエディターはワークベンチと深く統合されているため、カスタマイズされたキーバインディング/キーマップまたは言語拡張機能で動作します。

Jupyter built-in interactive window demo

Jupyter ノートブックのデバッグ

Jupyter ノートブックでのデバッグをサポートするために取り組んできました。これにより、ノートブックセルにブレークポイントを設定したり、セルをステップバイステップで実行したり、他のすべての VS Code デバッガー機能を使用したりできます。これは実験的な機能ですが、"jupyter.experimental.debugging": true を設定し、選択したカーネルに ipykernel のバージョン6をインストールしてから、ノートブックツールバーのデバッグボタンをクリックすることで試すことができます。

Jupyter debugging

リモートリポジトリ

このイテレーションでは、リモートリポジトリ拡張機能のバグ修正とパフォーマンス改善、およびGitHub Pull Requests and Issues拡張機能とのより良い統合に重点を置きました。さらに、リモートエクスプローラーリモートリポジトリビューからリモートリポジトリを削除できるようになり、行範囲のある\blob URL を開くためのサポートが向上しました。

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 拡張機能の今回のイテレーションの焦点はバグ修正でした。変更ログでハイライトを確認してください。

リモート開発

リモート開発拡張機能の作業が続けられています。これにより、コンテナ、リモートマシン、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。

バージョン 1.58 の主な新機能

  • 転送されたポートに対してブラウザを一度だけ開くオプション。
  • キャッシュされたイメージに対する devcontainer.json のサポート。
  • Dev Containers が "hostRequirements" をチェックするようになりました。

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

ライブプレビュー

ウェブ開発のプレビュー用のローカルサーバーをホストする Live Preview 拡張機能を開発しました!🎉

エディター内ブラウザプレビュー、ライブプレビューのリフレッシュ (ファイルの変更時または保存時)、マルチルートサポートなどの機能があります!

Live Preview Quick Walkthrough

この拡張機能には Live Preview タスクもあり、永続的なサーバーを実行し、サーバーのトラフィックとその関連ファイルを表示できます。

Live Preview Tasks

機能の詳細については、マーケットプレイスで確認するか、リポジトリをチェックしてください

プレビュー機能

TypeScript 4.4 のサポート

このリリースには、次期 TypeScript 4.4 リリースに対する初期サポートが含まれています。TypeScript 4.4 の新しい言語機能と改善点については、TypeScript ブログで詳しく読むことができます。

TypeScript 4.4 のナイトリービルドを開始するには、TypeScript Nightly 拡張機能をインストールしてください。

フィードバックをお寄せいただき、TypeScript 4.4 でバグが発生した場合はお知らせください。

ウィンドウ間でターミナルを移動

ターミナルをウィンドウ間で移動できるようになりました。一方のウィンドウでターミナル: セッションをデタッチでデタッチし、もう一方のウィンドウでターミナル: セッションにアタッチでアタッチします。将来的には、これによりウィンドウ間のドラッグ&ドロップが実現されるはずです!

拡張機能作成

詳細な補完項目ラベル

より詳細で構造化された補完項目ラベルのための新しい API を追加しました。項目のラベルには vscode.CompletionItemLabel タイプを使用できるようになり、ラベル、詳細、説明を指定できます。

これらの新しいプロパティにより、言語拡張機能はシグネチャや修飾子を表示できますが、他の補完プロバイダーもこれを利用できます。例えば、GitHub Pull Request and Issues 拡張機能はエイリアスとともにフルネームを表示するようになりました。

Completion for Github aliases with full names

モーダルメッセージの詳細

モーダルな情報、警告、エラーメッセージを表示するための API が、詳細の提供をサポートするようになりました。詳細テキストは、実際のメッセージよりも下部に控えめにレンダリングされます。

A modal dialog with details

上記のダイアログは、以下のコードスニペットで生成されています。詳細テキストはモーダルメッセージ (modal: true) のみでサポートされていることに注意してください。

vscode.window.showInformationMessage('This is the message', {
  modal: true,
  detail:
    'This is the detail. Rendered less prominent, but with more space for, well, details.'
});

ターミナルプロファイルの提供

ターミナルプロファイルは拡張機能によって提供できるようになり、プロファイルピッカーに表示されます。

A contributed profile will show up along side detected and configured terminal profiles

ターミナルプロファイルを提供するには、3つのことを行う必要があります。

まず、package.json に貢献を追加します。

"contributes": {
  "terminal": {
    "profiles": [
      {
        "title": "Custom Profile",
        "id": "custom_profile"
      }
    ]
  },
}

次に、ユーザーがプロファイルを要求したときに拡張機能がアクティベートされるようにアクティベーションイベントを追加します。

"activationEvents": [
  "onTerminalProfile:custom_profile"
]

最後に、ターミナルを作成するために使用されるオプションのセットを返すターミナルプロバイダーを登録します。オプションは、標準のプロセスベースの TerminalOptions またはカスタムの ExtensionTerminalOptions のいずれかです。

vscode.window.registerTerminalProfileProvider('custom_profile', {
  provideTerminalProfile() {
    return {
      options: {
        name: 'Profile from extension',
        shellPath: 'cmd.exe'
      }
    };
  }
});

ExtensionTerminalOptions ベースのターミナル名の変更

新しい Pseudoterminal.onDidChangeName イベントにより、ExtensionTerminalOptions で作成されたターミナルの名前を変更できるようになりました。

const writeEmitter = new vscode.EventEmitter<string>();
const nameEmitter = new vscode.EventEmitter<string>();
const pty = {
  onDidWrite: writeEmitter.event,
  onDidChangeName: nameEmitter.event,
  open: () => writeEmitter.fire('Press and key to set the terminal title'),
  close: () => {
    /* noop*/
  },
  handleInput: (data: string) => {
    writeEmitter.fire(`Set title to "${data}"`);
    nameEmitter.fire(data);
  }
};
const terminal = (<any>vscode.window).createTerminal({ name: `My Extension REPL`, pty });
terminal.show();

拡張機能 API 経由で作成されたターミナルのアイコンを設定

window.createTerminaliconPath を受け入れるようになり、ターミナルとそのタブにアイコンを関連付けられるようになりました。

const term = vscode.window.createTerminal({
  name: `Serve`,
  iconPath: new vscode.ThemeIcon('server-process')
});
term.show();

The iconPath will show up next to the terminal's name

保存された Memento キーの列挙

保存されている Memento キーのセットを列挙するための新しい Memento.keys() API が追加されました。この API を使用すると、以前に保存されたデータをより簡単に処理でき、保存されたデータを移行する必要がある場合に役立ちます。

Language Server Protocol

新しいバージョンの言語サーバープロトコルが、対応する npm モジュールとともに公開されました。このバージョンには、診断プルモデル仕様の最終提案が含まれています。

Debug Adapter Protocol

"Memory write" 要求と "Memory changed" イベントに関する進捗

将来の VS Code のデバッグ体験でメモリビューアを統合する予定です。このサポートのために、Debug Adapter Protocol には以前から ReadMemory 要求が存在していました。現在、対応する WriteMemory 要求と Memory イベントに取り組んでいます。WriteMemory 要求には、次のマイルストーンで DAP に追加される最終提案があります。Memory イベントの提案はまだ議論中です。デバッグ拡張機能の作成者の方で、これらの DAP プロトコルの追加に関心がある場合は、フィードバックをいただけると幸いです。

提案された拡張API

各マイルストーンには新しい提案された API があり、拡張機能の作成者はそれらを試すことができます。いつものように、皆様のフィードバックをお待ちしております。提案された API を試すには、次の手順を実行する必要があります。

  • 提案APIは頻繁に変更されるため、Insiders版を使用する必要があります。
  • 拡張機能のpackage.jsonファイルに次の行が必要です: "enableProposedApi": true
  • 最新バージョンのvscode.proposed.d.tsファイルをプロジェクトのソース場所にコピーします。

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

リッチなステータスバーホバー

ステータスバーアイテムにリッチなホバーをサポートするための新しい提案 API があります。試すには、StatusBarItem.tooltip2MarkdownString を指定します。

Rich Status bar hover

  • MarkdownString.supportThemeIcons が true の場合、$(iconName) 構文でアイコンを使用できます。
  • MarkdownString が信頼されている場合、コマンドリンクも追加できます。構文: ([test](command:vscode.newWindow))

テスト

テスト API の最終化に向けての取り組みが続いています。今回のイテレーションでは、テスト API の一部をリファクタリングし、拡張機能ホスト内の他の API のスタイルにより合うようにしました。最終化プロセスを追跡し、API の変更点について知るには、issue #122208 をフォローしてください。

私たちが予測する主な変更点は、「実行構成」の提供方法です。これらのランナー API の進捗を追跡したり意見を述べたりするには、issue #127096 をフォローしてください。

最後に、テストカバレッジの調査と初期実装を開始しました。これは今後数週間で UI に表示される予定です。

インライン提案

インライン提案 API により、拡張機能は提案ウィジェットから独立したインライン提案を提供できます。インライン提案は、すでに受け入れられたかのように、ただしグレーの色でレンダリングされます。ユーザーは提案を循環し、Tab キーでそれらを受け入れることができます。

vscode.languages.registerInlineCompletionItemProvider(
  { pattern: '**' },
  {
    provideInlineCompletionItems: async (document, position) => {
      return [{ text: '< 2) {\n\treturn 1;\n\t}' }];
    }
  }
);

Inline suggestions in the editor

エンジニアリング

ES2020

Promise.allSettledString.replaceAll などの最近の JavaScript API を使用できるように、TypeScript プロジェクトを更新しました。また、よりモダンな JavaScript である ES2020 を出力するようになり、メインバンドルの全体的なサイズをわずかに削減しています。

Electron サンドボックスサポートの進捗

このマイルストーンでは、VS CodeウィンドウをElectronのサンドボックスおよびコンテキスト分離機能を有効にする準備を継続しました。

具体的には

  • 一般的に VS Code ウィンドウを開くために必要なリソースをロードするための Node.js への依存を削除しました。
  • 非推奨の webview コンポーネントに近い動作を得るために iframe 要素に検索機能を追加し、将来的に webview を廃止できるようにしました。この機能は、settings.json ファイルで "webview.experimental.useIframes": true を設定することで有効にできます。

ドキュメント

データサイエンスのチュートリアルとトピック

データサイエンスのチュートリアルとトピックは、https://vscode.dokyumento.jp の目次に独自のセクションとして配置されました。Jupyter NotebookPython インタラクティブウィンドウの使用方法、さらにはタイタニック号の乗客データを分析するデータサイエンスチュートリアルに関するチュートリアルを見つけることができます。

Data Science table of contents on code.visualstudio.com

注目すべき修正点

  • 120956: iPad: エディター外でコンテキストメニューをトリガーできない
  • 122448: 依存関係が無効になっている拡張機能を自動的に無効にする
  • 124169: アクティブなデバッグ行をインデントしないようにする
  • 125144: スレッドが停止しなくなると、フォーカスが自動的に別のスレッドに渡されない
  • 125528: ブレークポイントビューで、ブレークポイントで停止しなくなったら選択を解除する
  • 126211: VS Code を終了しても、デバッガー経由で起動された Node プロセスが強制終了されない
  • 126702: macOS: コマンドライン code . が機能しない
  • 127716: デバッグホバー: キーボードでプロパティを検索できるようにする

ありがとうございます

最後に、今月 VS Code に貢献してくださった以下の皆様に、心からの感謝を申し上げます。

問題追跡への貢献者

vscodeへの貢献者

vscode-extension-samplesへの貢献

vscode-html-languageserviceへの貢献

vscode-js-debugへの貢献者

vscode-languageserver-nodeへの貢献者

language-server-protocolへの貢献者

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

monaco-languages への貢献

monaco-typescript への貢献

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