2022年1月 (バージョン 1.64)
アップデート 1.64.1: このアップデートでは、これらのセキュリティ問題に対処しています。
アップデート 1.64.2: このアップデートでは、これらの問題に対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Code の 2022 年 1 月リリースへようこそ。このバージョンには多くの更新があり、気に入っていただけることを願っています。主なハイライトの一部は次のとおりです。
- 新しいサイドパネル - 新しいサイドパネルでより多くのビューを一度に表示できます。
- 設定エディターの検索 - 検索で完全一致の優先順位が高くなりました。
- オーディオキュー - カーソルが折りたたみ領域、エラー、ブレークポイントに移動したときに音が鳴ります。
- Unicode ハイライト - サポートされている言語での文字のハイライトを回避します。
- 自動ターミナル応答 - 一般的なターミナルプロンプトに自動応答を作成します。
- ノートブック UI の改善 - Markdown と出力セル内のテキストを検索します。
- バイナリデータビューのデバッグ - デバッグ中にバイナリデータを表示および編集します。
- Markdown パス IntelliSense - 相対ファイルパスとヘッダーリンクをすばやく挿入します。
- JS/TS でスニペットを囲む - 選択したコードをスニペット内に挿入します。
- Web 用 VS Code - vscode.dev および github.dev で署名付き GitHub コミットをサポートします。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
VS Code チームのリリースパーティーで、このバージョンの新機能のハイライトを視聴できます。イベントの記録は、当社の YouTube チャンネルでご覧いただけます。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
Workbench
新しいサイドパネル
このマイルストーンでは、サイドバーの反対側のワークベンチに新しいサーフェスであるサイドパネルを導入します。ここにはサイドバーまたは下部パネルからビューを配置できます。下部パネルをエディターの左または右に移動するのとは異なり、新しいサイドパネルは下部パネルに加えて機能するため、より多くのビューセットを一度に表示できます。
サイドパネルを使用するには、一部のビューをそこに移動する必要があります。最も多くの賛成票を集めた機能リクエストの 1 つに基づいて、サイドバーからアウトラインビューをサイドパネルに移動したいと思うかもしれません。これは、ビューをサイドパネルにドラッグアンドドロップすることで実行できます。サイドパネルが開いていない場合、下部パネルと同様に、ビューをエディター領域の端にドラッグすると、サイドパネルが開きます。
以下の短いビデオでは、アウトラインビューを右にドラッグしてドロップし、サイドパネルを作成しています。ユーザーは、アウトラインビューを表示したまま、サイドバーでビューを切り替えることができます(ここではグローバル検索ビューを開いています)。
または、コマンドパレットからビューの移動コマンドを使用することもできます。これにより、利用可能なビューのドロップダウンが表示されます。ビューを選択すると、新しいパネル/サイドバー/サイドパネルエントリを作成するか、エクスプローラーやソース管理などの既存の場所にビューを配置することで、場所を選択できます。

パネル、サイドバー、サイドパネルの間でビューアイコンを掴んでビューをドラッグアンドドロップできます。ビューアイコンを右クリックし、場所のリセットを選択することで、ビューの場所をデフォルトに戻すことができます。

すべてのビューをデフォルトのレイアウトに戻したい場合は、コマンドパレットからビュー: ビューの場所をリセットを実行できます。
パネルの場所の置き換え
上記で述べたように、新しいサイドパネルは、パネルを左または右に移動するのと同様の機能を提供しますが、元のパネルのコンテンツ全体を移動しないことでこれを改善しています。パネル間のビューのドラッグアンドドロップとともに、新しいサイドパネルは下部パネルを移動するオプションを置き換えています。
そのため、workbench.panel.defaultLocation 設定とパネルの移動コマンドは、同様のコマンドに置き換えられ、非推奨になりました。
- パネルからサイドパネルへビューを移動 (
workbench.action.movePanelToSidePanel) - サイドパネルからパネルへビューを移動 (
workbench.action.moveSidePanelToPanel)
古いパネルの移動コマンドは、同様の動作を提供する新しいコマンドに再マッピングされました。このマッピングがあるにもかかわらず、キーバインドを新しいコマンドに更新することをお勧めします。
以下では、下部パネル全体がサイドパネルに移動され、その後元のパネルの位置に戻されます。
パネルの配置
もう1つの人気のある機能リクエストに応えて、「パネルの配置」と呼ばれる新しいレイアウトオプションを追加しました。このオプションを使用すると、下部パネルがウィンドウ全体にどの程度広がるかを設定できます。4つのオプションがあります。
- 中央 - これが従来の動作です。パネルはエディター領域の幅のみに広がります。
- 左 - パネルはウィンドウの左端からエディター領域の右端まで広がります。
- 右 - パネルはウィンドウの右端からエディター領域の左端まで広がります。
- 均等配置 - パネルはウィンドウの全幅に広がります。
すべてのオプションで、アクティビティバーはウィンドウの端と見なされることに注意してください。
これらのオプションは、メニューの表示 > 外観 > パネルの配置、または新しいパネルの配置を...に設定コマンドを使用して設定できます。
レイアウトコントロールのカスタマイズ
これらの新しいレイアウトオプションすべてに伴い、検出可能性と使いやすさのためにレイアウト構成をより適切に公開する方法を検討してきました。そのため、タイトルバーに新しい実験的なレイアウト構成ボタンが表示される場合があります。これは、window.titleBarStyle 設定が custom (Windows および macOS のデフォルト) で、workbench.experimental.layoutControl.enabled が true に設定されている場合にのみ表示されます。このボタンの表示は実験によって制御されていますが、手動で有効にしたい場合は、設定エディターでこれらの設定値を適用することで有効にできます (⌘, (Windows, Linux Ctrl+,))。

メニューの内容はまだ作業中ですが、現在はサイドバー、パネル、サイドパネルを切り替える機能が表示されるはずです。さらに、新しいコマンドレイアウトのカスタマイズのエントリが表示されます。この新しいコマンドは、新しいインタラクティブなクイックピックエクスペリエンスをトリガーし、レイアウト構成のすべての側面を一箇所で制御できるようにします。
ぜひ試してみて、issue #137633でフィードバックをお寄せください。
設定エディター
設定エディターの検索では、文字列および列挙型設定を検索する際に、文字列値の一致が検索されるようになりました。

新しい検索アルゴリズムでは、完全一致の優先順位も高くなりました。つまり、Java と JavaScript の両方の拡張機能がある場合、「java」を検索すると、Java の設定が最初に表示されます。

最後に、設定エディターのドロップダウン(files.autoSave など)およびリストウィジェット(files.associations など)が、タッチスクリーンデバイスで動作するようになりました。
設定の同期
設定同期がユーザー タスクの同期をサポートするようになりました。

Web 版 VS Code のデフォルト設定同期マシン名には、ブラウザーと製品名が含まれるようになりました。

エクスプローラー: 元に戻すの確認と無効化
ファイルエクスプローラーは、ファイルやフォルダーの編集(名前変更、切り取り/コピー/貼り付け、移動、インポートなど)を元に戻すための Undo スタックを長らくサポートしてきました。一部のユーザーはこの機能を予期しないと感じるため、エクスプローラーで Undo を無効にする設定(explorer.enableUndo)が追加されました。
さらに、Undo を実行する際に、エクスプローラーが確認を促す頻度を設定するための新しい設定 (explorer.confirmUndo) が追加されました。デフォルトでは、破壊的な Undo が誤って発生しないように、エクスプローラーは以前よりも頻繁に確認を促しますが、この設定を "light" の値に変更すると以前の動作になり、"verbose" に設定するとすべての Undo アクションの前に確認を促すようになります。
Editor
オーディオキュー
オーディオキューは、現在の行にエラー、ブレークポイント、折りたたまれたテキスト領域などの特定のマーカーがあるかどうかを示します。
これらは、プライマリーカーソルがその行を変更したとき、またはマーカーが現在の行に初めて追加されたときに再生されます。オーディオキューは、スクリーンリーダーが接続されているときに自動的に有効になりますが、audioCues.enabled を on に設定することで手動でオンにすることもできます。
今後さらに多くのオーディオキューが追加される予定で、サウンドデザインは繰り返し改善していきます。
Unicode ハイライトの改善
11 月のリリースで導入されたUnicode ハイライト機能を改善するために、誤検出をより適切に処理する新しい設定が追加されました。
新しい設定 editor.unicodeHighlight.allowedLocales を使用して、1 つまたは複数の設定されたロケールで一般的な文字を許可できます。既定では、現在の VS Code 表示言語と現在の OS 言語が含まれます。現時点では、vscode-loc 言語パックで翻訳されたロケールのみがサポートされています。
設定 editor.unicodeHighlight.includeStrings は、文字列内の文字をハイライトするかどうかを制御します。既定値は true ですが、文字列を無視するには false に設定できます。
エディターの折りたたみ制限
新しい設定 editor.foldingMaximumRegions を使用すると、ユーザーはエディターに表示される折りたたみ範囲の最大数を変更できます。既定では、制限は 5000 です。数値が大きいほどパフォーマンスが低下する可能性があることに注意してください。
エディターは言語機能のタイミングに適応します
拡張機能は、折りたたみ領域、CodeLens、インレイヒント、セマンティックトークンなどの組み込み機能を含む、ほとんどすべての言語機能を提供します。これらの機能は、ユーザーのジェスチャーではなく、通常はタイムアウト後にタイピングによってトリガーされます。たとえば、CodeLens は入力すると更新され、セマンティックトークンも同様です。選択されたタイムアウト値は固定されており、多かれ少なかれ任意でした。このリリースでは、エディターは観測されたタイミングに適応するため、低速なマシンやネットワーク接続が要求でオーバーロードされることなく、高速なマシンがより有効に活用されます。
ターミナル
自動返信
ターミナルで、特定の文字シーケンスを受信したときに自動的に返信するオプトイン機能が利用できるようになりました。これの有用な例として、Windows のバッチスクリプトで Ctrl+C を押した後に出力される Terminate batch job (Y/N)? メッセージがあります。Windows で Ctrl+C を押したときにターミナルが自動的に Y とエンター (\r) で返信するようにするには、次の設定を追加します。
"terminal.integrated.autoReplies": {
"Terminate batch job (Y/N)?": "Y\r"
}
テーマ: Sapphire
他のことについてもカスタム返信を設定できますが、プロセスに自動的にテキストを送信することになるため、注意してください。たとえば、プロンプトが表示されたときに Oh My Zsh を自動的に更新するために使用できます。
"terminal.integrated.autoReplies": {
"[Oh My Zsh] Would you like to check for updates? [Y/n]": "Y\r"
}
Clink を使用しており、同様の機能を有効にしている場合、2 つの機能が競合するのを避けるために、Clink または VS Code で返信を null に設定することで無効にできます。
"terminal.integrated.autoReplies": {
"Terminate batch job (Y/N)": null
}
強化されたVTサポート
オペレーティングシステムコマンド (OSC) 4/10/11/12 エスケープシーケンスのサポートが追加され、アプリケーションがターミナルのテーマカラーを制御できるようになりました。
キーボードで操作可能なリンク
以前は、ターミナルでのリンクナビゲーションにはマウスの使用が必要でした。現在では、以下のコマンドを介してキーボードのみでリンクを開くことができます。
- ターミナル: 最後の Web リンクを開く... 例:
https://github.com/microsoft/vscode - ターミナル: 最後のファイルリンクを開く... 例:
/Users/user/repo/file.txt - ターミナル: 検出されたリンクを開く... (すべてのリンク (ウェブ、ファイル、単語) を表示)

ソース管理
リポジトリ検出のより詳細な制御
コミュニティからのフィードバックに基づき、Git リポジトリの検出プロセスをより適切に制御し、より多様なフォルダー構造に対応するための 2 つの新しい設定が追加されました。
git.repositoryScanMaxDepth- スキャン時に使用する深さを制御します。git.repositoryScanIgnoredFolders- スキャン中に無視すべきフォルダーのリストを制御します。
変更リストの並べ替えの改善
新しい設定 (scm.defaultViewSortKey) は、ソース管理ビューの変更リストに使用されるデフォルトのソートキーを制御します。ソートキーの選択は、フォルダー/ワークスペースごとに記憶されます。
オプションは次のとおりです
name- ファイル名で変更を並べ替えます。path- ファイルパスで変更を並べ替えます(デフォルト)。status- ソース管理ステータスで変更を並べ替えます。
設定の変更を適用するには、VS Code ウィンドウを再読み込みする必要があります。
新しい Git stash コマンド
新しいコマンド Git: Drop All Stashes... がコマンドパレットに追加され、ユーザーがすべての stash エントリをクリアできるようになりました。恒久的な結果を伴う Git 操作と同様に、このコマンドは慎重に使用してください。
Git 出力 - git コマンドの実行時間と期間
パフォーマンスの問題を特定しやすくするため、Git 出力チャンネルに git コマンドが実行された時間と、子プロセスの起動にかかった時間を除いたコマンドの期間が表示されるようになりました。
ノートブック
レンダリングされた Markdown とコードセルの出力内のテキストを検索
VS Code は、Markdown セルのレンダリングビューとコードセルの出力内のテキスト検索をサポートするようになりました。この機能は、すべての Markdown セルと出力をレンダリングする必要があるため、ノートブックを開く際にコストがかかる可能性があるため、既定では無効になっています。検索コントロール入力ボックスのフィルタードロップダウンからオプション (Markdown Preview, Code Cell Outputs) を選択することで、この機能をオンにできます。
現在、出力テキストの検索にはいくつかの制限があります。たとえば、VS Code 自体によってレンダリングされたストリーミング/テキスト出力を検索することはできません。次のイテレーションでこれを改善する予定です。
セル折りたたみ UI
ノートブックセルには、フォーカスされていることを示す青いバーが左側にあります。このバーはインタラクティブになりました。上部をクリックするとセル入力が折りたたまれ、下部をクリックすると出力が折りたたまれます。
Markdown セルの折りたたみヒント
Markdown セルの領域が折りたたまれている場合、折りたたまれたセルの数を示すメッセージが表示され、一部のセルが非表示になっていることがより明確になります。

セルの実行ヒント
セルが実行中であること、およびどのセルが実行中であるかをより明確にするために、いくつかの変更を加えました。
まず、セルが実行中であるものの表示領域にスクロールされていない場合、エディターペインの上部にプログレスバーが表示されます。
次に、セルが実行中の場合、ノートブックツールバーに新しいボタン実行中のセルに移動が追加されます。
第3に、notebook.outline.showCodeCells および notebook.breadcrumbs.showCodeCells の設定により、コードセルがアウトラインまたはブレッドクラムで表示されている場合、実行中はアニメーションの実行アイコンが表示されます。
デバッグ
バイナリデータの表示と編集
VS Code の汎用デバッガーは、バイナリデータ(別名「メモリ」)の表示と編集をサポートするようになりました。メモリの表示と編集が可能な変数は、変数ビューにインラインバイナリアイコンが表示され、それを選択するとHex Editorが開きます。

テーマ: Codesong
メモリの表示と編集は、デバッグアダプタープロトコルのメモリ関連機能に依存しており、VS Code で対応する UI を有効にするには、デバッグ拡張機能がこれらの機能を実装する必要があります。詳細については、以下のデバッガー拡張機能の作成セクションを参照してください。このリリースでは、組み込みの JavaScript デバッガーのみがバイナリデータの表示と編集をサポートしていますが、他のデバッグ拡張機能もすぐに追随すると予想されます。
JavaScriptデバッグ
ブレークポイントでの一時停止から呼び出し元を除外
ブレークポイントを設定したり、デバッガーステートメントを追加したりしても、特定のコードパスから呼び出された場合にのみ一時停止したい場合があります。mousemove のような DOM イベントハンドラーは、この良い例です。このリリースで、JavaScript デバッガーは、ブレークポイントまたはデバッガーステートメントで一時停止するのを「呼び出し元を除外する」機能を追加しました。
場所で一時停止している場合、呼び出しスタックビューのフレームを右クリックして、呼び出し元を除外コマンドを選択できます。新しい除外された呼び出し元ビューが表示され、除外された呼び出し元を表示および管理できます。その後、除外された呼び出し元が呼び出しスタックのどこかに表示されても、プログラムはブレークポイントの場所で一時停止しなくなります。
LinuxでのEdgeサポート
Microsoft Edge のデバッグが、edge デバッグタイプを介して Linux で利用可能になりました。
言語
Markdown パス IntelliSense
組み込みの Markdown 拡張機能に、リンクと画像のパス IntelliSense が含まれるようになりました。

パスの提案は、CSS および HTML ファイルのパス IntelliSense と同様に機能します。/ で始まるパスは現在のワークスペースを基準に解決され、./ で始まるパスまたはプレフィックスのないパスは現在のファイルを基準に解決されます。パスの提案は、/ を入力すると自動的に表示されるか、⌃Space (Windows、Linux Ctrl+Space) を使用して手動で呼び出すことができます。
パスIntelliSenseは、現在のファイル内または別のMarkdownファイル内のヘッダーへのリンクにも役立ちます。パスを#で開始すると、ファイル内のすべてのヘッダーの補完が表示されます(設定によっては、これらを表示するために⌃Space (Windows、Linux Ctrl+Space)を使用する必要がある場合があります)。

パス IntelliSense は、"markdown.suggest.paths.enabled": false で無効にできます。
Markdown の取り消し線サポート
VS Code は、Markdown エディターと組み込みの Markdown プレビューの両方で ~~strikethrough~~ テキストのレンダリングをサポートするようになりました。

取り消し線は、2つのチルダ文字でテキストを囲むことで記述されます。
VS Code の組み込みテーマはすべて取り消し線をサポートしていますが、マーケットプレイスの一部のテーマでは、エディターで取り消し線テキストを適切にレンダリングするために更新が必要になる場合があります。
TS 4.5.5
VS Code には TypeScript 4.5.5 がバンドルされるようになりました。
このマイナーアップデートでは、いくつかの重要なクラッシュとツール関連のバグが修正されています。
JS/TS でスニペットを囲む
多くの JavaScript および TypeScript スニペットが、選択したテキストを囲む機能をサポートするように更新されました。
囲み機能を使用するには、まずテキストを選択し、次にスニペットの挿入を実行します。if や forof などのスニペットは、選択したテキストを置き換える代わりに、新しいステートメントの本体として選択したテキストを使用するようになりました。
HTML のイコール記号後の自動クオート挿入
HTML でプロパティの後に = を入力すると、言語サービスが自動的にクオートを挿入し、カーソルをクオート間に配置するようになりました。設定 html.completion.attributeDefaultValue を使用すると、クオートの種類(シングルまたはダブル)を指定でき、デフォルトではダブルクオートが使用されます。
この機能は、"html.autoCreateQuotes": false に設定することで無効にできます。
JSON スキーマキャッシュクリアコマンド
新しいコマンドスキーマキャッシュをクリアは、以前ダウンロードしたスキーマのキャッシュをクリアします。
LaTeX のサポート
LaTeX の基本的な言語サポートが追加されました。これには、構文ハイライトと自動閉じペアが含まれます。

Web 用 VS Code
リモートリポジトリ
GitHub リポジトリ
Web 版 VS Code で作成されたコミットは署名され、GitHub UI で検証済みとマークされるようになりました。さらに、メンテナーは Web 版 VS Code を使用している場合、フォークから提出されたプルリクエストにコミットできるようになりました。これは、新しい GitHub GraphQL のcreateCommitOnBranch API のおかげです。
さらに、ソース管理ビューが複数選択をサポートするようになりました。
テーマ: One Monokai
以前は、空のコミットの作成は、GitHub リポジトリをローカルまたはリモートマシンにクローンした後でのみサポートされていました。GitHub Repositories: Commit Empty コマンドを使用して、Web 版 VS Code でも空のコミットを作成できるようになりました。
また、リポジトリ全体のテキスト検索や参照へ移動のような高度な機能を有効にするため、指定されたサイズ以下のリポジトリの全コンテンツを自動的にダウンロードする新しい設定が追加されました。remoteHub.experimental.fs.maxAutoDownloadSize 設定は、全コンテンツのダウンロードを試みる前にプロンプトが表示されるリポジトリサイズの上限を制御します。デフォルトでは、プロンプトなしでダウンロードされないように、maxAutoDownloadSize は設定されていません。
Azure Repos
Azure Repos のサポートは、GitHub Repositories 拡張機能から、デスクトップにもインストールできる専用の拡張機能に移行しました。
採用されたプレリリース拡張機能
Web 版 VS Code には、GitHub Pull Request and Issues および GitHub Repositories 拡張機能のプレリリースバージョンがバンドルされるようになりました。
PWA およびオフラインサポート
Web 版 VS Code は PWA モデルを採用し、ホスト OS に PWA としてインストールできるようになりました。この採用のおかげで、一部のオフライン機能を有効にすることも可能になりました。vscode.dev または insiders.vscode.dev に一度アクセスしたユーザーは、オフラインでもローカルファイルを編集できるようになりました。

拡張機能への貢献
Python
改善されたインタプリタークイックピック
目的のインタプリターを簡単に選択できるように、Python 拡張機能は、Select Interpreter Quick Pick でインタプリターをタイプ別にグループ化するようになりました。

また、アクティブ/選択されたインタプリターをステータスバーの右側、おそらく言語ステータス内に移動する実験も行っていますので、表示されていない場合は右側のPythonステータスを確認してください。
'conda run' のサポートを追加
Anaconda ユーザーのサポートを改善するため、以前エラーの原因となっていた出力をキャプチャしない --no-capture-output パラメータを使用した conda run のサポートを実装しました。この機能は、リンター、テスト、および書式設定関数の実行に実装されています。
パラメータに特殊文字が含まれる場合、Windows で linting と testing を実行するとエラーが発生する既知のバグ(issue #10972)があります。これは、conda run が特殊文字を含むパラメータを読み取る方法によるものであり、settings.json で指定したコマンドライン引数に影響する可能性があります。
Anaconda チームがこの問題に取り組んでおり、まもなく修正版がリリースされることを期待しています。新しいバージョンがリリースされたら、Conda の Web サイトで Anaconda のバージョンを更新できます。
スマート選択とより良い折りたたみサポート
Pylance 言語サーバーを介した Python コードの選択と折りたたみにも改善が加えられました。
Python コードをキーボードで選択する際、コードのセマンティック情報が選択範囲の定義に考慮されるため、キー操作が少なくなります。
テーマ: Horizon Extended
折りたたみに関しては、以前はインデントのみで領域が定義されており、複数行文字列などの一部のケースでは理想的ではありませんでした。現在、折りたたみ領域はセマンティック情報を適切に考慮し、#region コメントもサポートしています。
Jupyter
リモート Jupyter サーバー
Jupyter 拡張機能は、ローカルとリモートの Jupyter サーバーを切り替える際に VS Code の再読み込みを必要としなくなりました。さらに、この拡張機能は、カーネルピッカーにローカルとリモートの両方のカーネルをまとめて表示するようになりました。
Hexエディター
Hex Editor は、大幅なアーキテクチャ再構築が行われました。特に、ほとんどの場合、パフォーマンスの問題なく任意のサイズのファイルを開くことができるようになりました。さらに、そのレイアウト幅が構成可能になり、より強力な検索/置換の実装も行われました。今後の反復で継続的な改善が行われる予定です。
リモート開発
リモート開発拡張機能の作業が続けられています。これにより、コンテナ、リモートマシン、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。
リモート開発リリースノートで、新しい拡張機能の機能とバグ修正について学ぶことができます。
GitHub Pull Requests and Issues
引き続き、プルリクエストとissueの作業、作成、管理ができるGitHub Pull Requests and Issues拡張機能の作業が進行中です。ハイライトを確認するには、拡張機能の0.36.0の変更ログをご覧ください。
プレビュー機能
ターミナルシェル統合
ターミナルに実験的なシェル統合が搭載され、以前は不明だったターミナル内部で何が起こっているのかを VS Code が把握できるようになりました。設定 "terminal.integrated.enableShellIntegration": true を使用して有効にすると、可能であればシェル統合スクリプトを実行するための引数がターミナルプロファイルに挿入されます。スクリプト自体は、主にプロンプトに目に見えないシーケンスを挿入し、プロンプト、コマンド、コマンド出力の場所、各コマンドの現在の作業ディレクトリ (cwd)、各コマンドの終了コードなどの情報を VS Code に提供します。
この情報を使用することで、既存の機能をさまざまな方法で強化できます。
- 現在の作業ディレクトリ (cwd) をすばやく検出 - 以前は macOS および Linux でのみ可能であり、その情報を取得するためにプロセスを起動したりファイルシステムにクエリを実行したりしていました。これは Windows でも動作するようになりました。cwd は、リンク検出やターミナルタブを分割する際の cwd の継承などの機能で使用されます。
- コマンド追跡機能の改善 - この機能は以前から存在していましたが、macOS でのみデフォルトのキーバインド (
Cmd+Up/Down) があり、Enterが押されたタイミングに基づいて行がどこにあるかを推測する単純なアプローチを使用していました。
シェル統合により、次の新機能が有効になります。
- 最近のコマンドを実行 - 実行されたコマンドがわかるため、クイックピックでそれらを表示して再度実行できるコマンドを公開できます。

- 最近のディレクトリへ移動 - 上記と同様に、過去のディレクトリへも移動できます。

- CWD 相対リンクのサポート - ターミナルバッファの各行の CWD がわかるようになったため、アクティブ化された場所の CWD 相対でターミナル内のリンクを開くことができます。以前は、リンクをクリックすると、その名前に一致するすべてのフォルダからの結果を含むクイックピックが開きました。今では、正確なファイル一致が開かれます。

この機能の信頼性が十分に高くなったら、シェル統合をデフォルトでオンにすることが目標です。引数インジェクションに関して私たちが取っているアプローチは、可能な限り邪魔にならないようにすることです。たとえば、一部のターミナルのようにシェルの初期化スクリプトを自動的に変更するのではなく、プロセスの作成をインターセプトし、引数を検査し、ターミナルがそれらで実行できると確信している場合にシェル統合引数を注入します。ユーザーによる設定なしでうまく機能し、既存のシェル設定と競合しないようにすることが期待されています。
現在サポートされているシェルは、Windows 用の pwsh、Linux および macOS 用の pwsh、bash、zsh です。
前述の通り、これはまだ粗削りな実験的な機能であり、いくつかの既知の問題があります。
$PS2の行継続はまだサポートされていません。ただし、pwsh の行継続は機能します。- 右プロンプトはまだサポートされていません。
- zsh スクリプトは、時々アクティブにならないことが知られています。
- リモートVS Codeウィンドウのサポートは限定的です。
エクスプローラーのファイルネスト
エクスプローラーに、同じディレクトリ内のファイルを論理的にネストされたレイアウトで表示する実験的なサポートが追加されました。これは、関連するファイルを視覚的にグループ化したり、ファイルを「ルート」ファイルに折りたたんで cluttered を減らしたりするのに役立ちます。この動作を制御するために、いくつかの新しい設定が追加されました。
explorer.experimental.fileNesting.enabled: ファイルのネストを有効にするかどうかを制御します。explorer.experimental.fileNesting.expand: ファイルネストをデフォルトで展開して表示するかどうかを制御します。explorer.experimental.fileNesting.patterns: ファイルがどのようにネストされるかを制御します。
たとえば、多くのリポジトリでは .ts ファイルが派生した .js、.d.ts、および/または .js.map ファイルの隣に置かれます。派生ファイルを files.exclude を介して完全に非表示にすることは以前から可能でしたが、ネストによって派生ファイルにすばやくアクセスできる便利な方法が提供されるようになりました。
以下に、エクスプローラーがデフォルトの explorer.experimental.fileNesting.patterns 設定を使用して .js および .js.map ファイルをネストしている例を示します。これらは、対応する .ts ファイルが展開されたときに表示されます。

テーマ: GitHub Light
拡張機能作成
言語のデフォルトアイコン
言語の貢献者は、言語のアイコンを定義できます。
{
"contributes": {
"languages": [
{
"id": "latex",
// ...
"icon": {
"light": "./icons/latex-light.png",
"dark": "./icons/latex-dark.png"
}
}
]
現在のファイルアイコンテーマにその言語の汎用ファイルアイコンしかない場合に、アイコンが表示されます。
また、ファイルアイコンを表示しない Minimal や None のようなファイルアイコンテーマは、言語アイコンを使用しません。ファイルアイコンテーマに拡張子やファイル名用のアイコンがある場合は、そちらが優先されます。
ファイルアイコンテーマは、テーマファイルで showLanguageModeIcons: true|false を定義することで、新しい動作をカスタマイズできます。
showLanguageModeIcons: trueは、テーマがファイルアイコンを指定していなくても、デフォルトの言語アイコンを表示します。showLanguageModeIcons: falseは、デフォルトの言語アイコンが使用されるのを防ぎます。
QuickPickItem セパレーター
拡張機能の作成者は、Quick Pick にセパレーターを追加できるようになりました。これは、アイテムをグループ化したり、アイテム間に少しスペースを追加したりするのに便利です。

既存の Quick Pick にセパレーターを追加するには、既存のアイテムリストに新しい QuickPickItem を追加しますが、QuickPickItem の kind プロパティを指定し、QuickPickItemKind.Separator に設定します。
上記の例では、次のオブジェクトをアイテムリストに追加します。
{
label: 'APIs',
kind: QuickPickItemKind.Separator
}
kind プロパティを指定しないか、QuickPickItemKind.Default に設定した場合、アイテムは通常の QuickPickItem として扱われます。
vscode.workspace.createFileSystemWatcher が任意のパスをサポートするようになりました
既存の vscode.workspace.createFileSystemWatcher API が改善され、ワークスペース外にあるファイルやフォルダのパスでもファイル監視に渡せるようになりました。以前は、ファイル監視はワークスペースで開かれたフォルダに限定されていました。
メソッドに渡すグロブパターンに応じて、ウォッチャーは再帰的 (例: **/*.js) または非再帰的 (*.js) になります。再帰的なウォッチャーはより多くのリソースを必要とするため、可能であればシンプルなグロブパターンを使用することをお勧めします。
例
// Watch a folder non-recursively
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '*.js'));
// Watch the active text editor file
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.window.activeTextEditor.document.uri, '*'));
注: この変更の一環として、既存のファイルウォッチャーの動作変更を行いました。グロブパターンのみで指示されたファイルウォッチャー (例: vscode.workspace.createFileSystemWatcher('**')) は、ワークスペース外で変更されたファイルのイベントを受信しなくなります。ワークスペース内のパスからのファイルイベントのみを受信します。ユーザーが開いているワークスペースがない場合、このメソッドを介してイベントは配信されなくなります。これは、拡張機能がワークスペース外からの予期しないイベントを受信しないようにするために行われました。
vscode.TerminalLocation
新しい TerminalLocation API を使用して、拡張機能ターミナルが作成される場所を指定できます。
これにより、親ターミナルを提供して分割ターミナルを作成したり、エディター領域とパネルの間を選択したりできるようになります。
onWill イベントのキャンセル トークン
VS Code API は、onWillRenameFiles のようなファイル操作に参加するためのイベントを公開しています。この参加は長時間実行される可能性があり、ユーザーはそれをキャンセルできます。このリリースでは、ユーザー側でのキャンセルを、対応するイベント (例: FileWillRenameEvent#token) のキャンセル トークンを介して拡張機能が監視できるようになりました。これにより、拡張機能は高価な下位レベルの操作もキャンセルできます。
Git 拡張機能 API
- ファイルをステージングする機能を有効にするために、新しい
Repository.addメソッドが追加されました。 - タグを作成および削除する機能を有効にするために、
Repository.tagおよびRepository.deleteTagメソッドが追加されました。
onTaskType アクティベーション イベント
タスクを提供する拡張機能は、新しい onTaskType:foo アクティベーションイベントを使用することで、不必要なアクティベーションを制限できます。これは、onCommand:workbench.action.tasks.runTask でアクティベートするよりも改善されています。なぜなら、workbench.action.tasks.runTask は通常、タスクを提供する拡張機能にとってあまりにも積極的だからです。
デバッガー拡張機能の作成
VS Code は、Debug Adapter Protocol のメモリ関連機能を実装するようになりました。
このリリースで、VS Code はDebug Adapter Protocolの以下のメモリ関連機能をサポートすることで、バイナリデータの表示と編集をサポートし始めました。
- VS Code は DAP 変数の
memoryReference属性を尊重し、クライアント機能supportsMemoryReferencesをデバッグアダプタに渡すことでこれを通知します。 - VS Code がデバッグアダプターから機能
supportsReadMemoryRequestを受信した場合、バイナリデータを表示するための UI を有効にし、データを取得するためにreadMemoryリクエストを発行します。 - VS Code がデバッグアダプターから機能
supportsWriteMemoryRequestを受信した場合、バイナリデータを編集するための UI を有効にし、データを保存するためにwriteMemoryリクエストを発行します。 - VS Code は
memoryイベントを処理し、クライアント機能supportsMemoryEventをデバッグアダプターに渡すことでこれを通知します。
Language Server Protocol
Language Server Protocol の新しい次期バージョンが、対応する npm モジュールとともに公開されました。このバージョンには、ノートブックドキュメントの提案された実装が含まれています。仕様の詳細はこちらで確認できます。
提案された拡張API
すべてのマイルストーンには新しい提案された API が含まれており、拡張機能の作者はそれらを試すことができます。いつものように、皆様からのフィードバックを歓迎します。提案された API を試す手順は次のとおりです。
- 試したい提案を見つけて、その名前を
package.json#enabledApiProposalsに追加します。 - 最新のvscode-dtsを使用して、
vscode-dts devを実行してください。これにより、対応するd.tsファイルがワークスペースにダウンロードされます。 - これで提案に対してプログラミングできます。
提案された API を使用する拡張機能を公開することはできません。次のリリースで破壊的変更がある可能性があり、既存の拡張機能を壊すことは望ましくありません。
ターミナル永続化を無効にする
ターミナルを作成する際に、TerminalOptions または ExtensionTerminalOptions で disablePersistence を設定することで、再起動時および再読み込み時のターミナル永続化をオプトアウトできます。
export interface TerminalOptions {
disablePersistence?: boolean;
}
インレイヒント API
インレイヒントAPIに興味のある皆様にお知らせです。このAPIは完成に近づいており、インタラクティブなラベルパーツのサポートが追加されました。これにより、ソースコードの位置をヒントにバインドできるようになり、コードナビゲーションなどの機能が有効になります。また、コマンドもサポートされるようになりました。この提案の最新の状態と開発状況は、vscode.proposed.inlayHints.d.ts で確認できます。
言語ステータスAPI
言語ステータスアイテム API は最終化が予定されています。ぜひ試して、vscode.proposed.languageStatus.d.ts にフィードバックをお寄せください。
テストの提案
テスト用の「更新」ハンドラーを実装する公式な方法を提案しています。詳細はvscode.proposed.testRefresh.d.tsをご確認ください。これにより、拡張機能が VS Code の標準的な「更新」ボタンの背後で統一され、独自のものを実装する必要がなくなります。
さらに、vscode.proposed.testSortText.d.ts において、TestItem に sortText 属性を追加することを提案します。
インライン補完: 自動括弧補完
拡張機能がインライン補完アイテムを提供する場合、そのプロパティ completeBracketPairs を true に設定できます。設定されている場合、VS Code はインライン補完をユーザーに表示する前に、補完テキスト内の無効な括弧を閉じたり削除したりして修正しようとします。
ツリーのドラッグアンドドロップ提案がエディターへのドラッグをサポート
ツリーのドラッグアンドドロップ提案はほぼ最終段階に入っており、TreeDragAndDropController が "resourceurls" MIME タイプをサポートしている場合、ツリービューからエディターへのドラッグがサポートされるようになりました。詳細はissue #141418で確認できます。ぜひ試して、vscode.proposed.treeViewDragAndDrop.d.tsにフィードバックをお寄せください。
コメントのタイムスタンプ
コメント API には、Comment の新しい timestamp プロパティが追加されました。この API とともに、コメントのタイムスタンプの表示方法を制御する新しい設定 comments.useRelativeTime があります。ぜひ試して、vscode.proposed.commentTimestamp.d.ts にフィードバックをお寄せください。
エンジニアリング
vscode-bisect ツール
問題を診断するための、リリースされた VS Code Insiders バージョン(Web およびデスクトップ)のバイセクト用の新しいツールが利用可能です。
npx vscode-bisect
git bisect と同様に、vscode-bisect は過去にリリースされた Insiders ビルドの範囲を起動し、ビルドで問題が再現されるかどうかを尋ねます。最終的な結果は、問題を引き起こしたコミットの範囲です。インスタンスは、主要な開発環境に影響を与えないように、ユーザーデータ用に専用の新しいフォルダーを使用します。
ソースから Code Web & Server を実行
Web 用 VS Code と VS Code Server をソースから実行するスクリプトが scripts フォルダーに移動しました。
./scripts/code-web.sh|batは、Web 用 Code (別名「サーバーレス」) をソースから起動し、ブラウザで開きます。詳細なオプションについては--helpを使用してください。./scripts/code-server.sh|batは、ソースから VS Code Server を起動します。--launchを追加すると、Web UI もブラウザで開かれます。詳細なオプションについては--helpを使用してください。- リモートウェブテストには
./scripts/test-web-integration.sh|batを使用します。 - リモートテストには
./scripts/test-remote-integration.sh|batを使用します。
拡張機能
このマイルストーンでは、VS Code がサービスに対して行うクエリの数を最小限に抑えることで、Marketplace のインタラクションを改善しました。
注目すべき修正点
- 91286 クライアントでの設定同期アクティビティのスロットリング
- 117648 Emmet を Sass 拡張機能で使用して「gtc」を展開した結果が奇妙です。
- 134466 存在しないデバッガー設定
- 135677 UI リンクの設定にカーソルを合わせると、先頭に # が表示される
- 138072 最近開いたワークスペースをグローバルストレージに保存する
- 138805 大きなバイナリファイルを開くと、内容全体が読み込まれる
- 138850 ディスク上のファイル変更後、開いたエディターが空になる可能性がある
- 139880 デバッグ: F5 でファイルを保存するように求められる
- 140003 異なるワークスペースフォルダーにある起動設定からタスクを参照できない
- 140129 settings.json ファイルをダブルクリックすると、毎回新しいタブが開かれる
- 140560 VS Code のデバッグ停止 API に関する問題
- 140967 Comment.body が Markdown としてレンダリングされる (プレーン文字列の場合でも)
ありがとうございます
最後に、VS Codeの貢献者の皆様に心からの感謝を申し上げます。
Web拡張機能
コードをWeb 拡張機能として実行する拡張機能を有効にするための拡張機能作成者(以下のリストは2021年12月7日から2022年1月31日まで)
- Tabulate (a5hk)
- Powder (Alexey Osipov)
- VCDrom (Aliaksei Chapyzhenka)
- Reveal Button (Andreas Weber)
- Digital Solutions (Andrew Tacon)
- lorem ipsum (aroary)
- Convert Selection (ArturoDent)
- Custom Language Properties (ArturoDent)
- Find and Transform (ArturoDent)
- Launch Configs (ArturoDent)
- Instant Documentation (atanasster)
- Couper Configuration (Avenga Germany GmbH)
- Argdown (Christian Voigt)
- ES7+ React/Redux/React-Native snippets (dsznajder)
- fantasy.markdown-all-in-one-for-web (fantasy)
- fink (fink)
- GitLens (Insiders) (GitKraken)
- Select by Indent (haberdashPI)
- Selection Utilities (haberdashPI)
- Python-Factory Web Search (HyunseungLee)
- Custom Element Scanner (alpha) (JanKretschmer)
- tomato extensions (jingjingwu)
- vscode-position (jtr)
- KCL for vscode.dev (kcl_extension_publisher)
- KL Language support (Kevlanche)
- Systemd Helper (Liu Yue)
- bett3r icons (Lucas)
- xpro-snippets (Maratib Ali Khan)
- Projen (MarkMcCulloh)
- Rainbow CSV (mechatroner)
- Blogview (mkizka)
- CodeSandpack (Mojojoji)
- Abracadabra, refactor this! (Nicolas Carlo)
- Office Script Extension (office-script)
- Better Fountain (Piers Deseilligny)
- Dothttp Http Client (Prasanth)
- 小説 (Public Theta)
- bojodog (RanolP)
- JSON Validate (rioj7)
- Remove Comments (rioj7)
- Everforest (sainnhe)
- Gruvbox Material (sainnhe)
- JetSet for VSCode (Sudhay)
- MathJax for Markdown (TANIGUCHI Masaya)
- WebEnv-Client (Theboys619)
- Graphviz Interactive Preview (tintinweb)
- LLL (tintinweb)
- Vyper (tintinweb)
- Sourcegraph - preview (TJ Kandala)
- Keyboard Macro Beta (tshino)
- WakaTime (WakaTime)
- MSCode (WebXT ES)
- DigitalJS (Yichao Yu)
- Better Snippets (zardoy)
- Fix All JSON (zardoy)
- Zardoy Experiments (zardoy)
問題追跡
問題追跡への貢献者
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Simon Chan (@yume-chan)
- heartacker (@heartacker)
- Lemmingh (@Lemmingh)
プルリクエスト
vscodeへの貢献者
- @btidor (Benjamin Tidor): テキスト検索結果の
undefinedを修正 PR #141522 - @ckline-tryptic (Christopher M Kline): git 拡張機能 API で「tag」と「deleteTag」を公開 PR #123815
- @DanielRosenwasser (Daniel Rosenwasser): TS/JS スニペットの「囲む」機能 PR #138565
- @dnicolson (Dave Nicolson): bisect メッセージの単数形を追加 PR #137626
- @eltociear (Ikko Ashimine): editors - タイプミスを修正 PR #140320
- @Enzime (Michael Hoang): ripgrep: PCRE2 の非推奨フラグを使用しない PR #139721
- @gjsjohnmurray (John Murray)
- fix #118617 アップストリームブランチがない場合、「remote」という用語を使用する PR #120467
screencastMode.keyboardShortcutsFormat設定の説明を修正 (#_138644) PR #138645editor.hover.delayの最大値と最小値を表示 (#_140215) PR #140216- SQL で
--#regionおよび--#endregionをサポート (#_141257) PR #141264
- @iamkun: リファクタリング: 重複する if ステートメントを削除 PR #140085
- @imphil (Philipp Wagner): ripgrep バイナリを ppc64le および s390x を含むように更新 PR #140028
- @jeanp413 (Jean Pierre)
- workbench.extensions.installExtension を使用してバージョン付き拡張機能をインストールする PR #136314
- Firefox でターミナルを開いて閉じると Ctrl + Shift + {左、右、ホーム、エンド} が機能しなくなる問題を修正 PR #139615
- vscode web でキーボードレイアウトの変更が壊れる問題を修正 PR #140295
- 接続トークンの解析を修正 PR #140532
- @jlelong (Jerome Lelong)
- 基本的な LaTeX 組み込み拡張機能 PR #138395
- LaTeX 言語の文法と設定を更新 PR #140801
- @jzyrobert (Robert Jin): html-language-features を doQuoteComplete を使用するように更新 PR #137080
- @KapitanOczywisty: PHP update-grammar.js を修正 PR #140619
- @KendallDoesCoding (Kendall Pinto): PR セクションの作成 PR #141130
- @KhaledSamir (Khaled): エスケープされたパーセント記号を検出するための正規表現を修正しました。 PR #139437
- @lostintangent (Jonathan Carter): [Markdown] GitHub テーマの画像サポートを追加 PR #137820
- @Mai-Lapyst: 言語貢献にデフォルトのファイルアイコンサポートを追加 PR #118846
- @MaxGrekhov (Max Grekhov): 開いているエディター: fullPath で並べ替え PR #133790
- @nrayburn-tech (Nicholas Rayburn): ソース管理ビューの並べ替えをストレージに追加 PR #123232
- @OPY-bbt (zhangyan): fix(suggest): 焦点を当てたラベルにのみ readmore アイコンを表示する PR #139792
- @orta (Orta Therox): 拡張機能がコマンドを介して typescript 拡張機能の tsserver にリクエストを送信できるようにする PR #138279
- @PieterBranderhorst: 最大折りたたみ数を超えた場合にユーザーに通知し、最大折りたたみ数を設定可能にする。 PR #140480
- @samestep (Sam Estep): rg に --no-ignore-parent を渡さないオプションを追加 PR #140022
- @SeriousBug (Kaan Genç): hasCustomMarkdownPreview がコンテキストメニューの markdown プレビューボタンを無効にする PR #139241
- @ShafinKhadem (Nafiur Rahman Khadem): スニペットの最後に元に戻す/やり直しの停止点を追加 PR #140096
- @slidoooor (Hans)
- キャッシュされたトークンを取得すると、同じ Markdown に対して異なる HTML コンテンツが生成される問題を修正 PR #138935
- 数ピクセルの行の重複を修正 (#_139311) PR #139575
- テスト: 各テスト実行前に自動保存を追加 PR #141254
- @smcenlly (Simon McEnlly): テスト: TestItem に新しい API
sortTextプロパティを追加 PR #132099 - @SMSadegh19 (Mohammad Sadegh Salimi): readme markdown プレビューの RTL 言語のサポートを追加。 PR #139644
- @SNDST00M (M.U.N.I.N):
FontStyle.Strikethroughのサポートを実装 PR #159 - @somebee (Sindre Aarsaether): エディターが transform でスケールされた場合の装飾とマウスヒットテストを修正 PR #139282
- @stevenjoezhang (Mimi):
terminal.integrated.cwdの事前定義済み変数を修正 PR #137023 - @Timmmm (Tim): parseAddress 正規表現を修正 PR #140977
- @TwitchBronBron (Bronley Plumb): InstallAnotherVersionAction のパフォーマンス問題を修正 PR #136992
- @WaqasAliAbbasi (Waqas Ali): Markdown コードブロックとスパンでのリンク強調表示を防止 PR #140816
- @wengj9 (James Weng): スニペットピッカーに拡張機能情報を追加 PR #138880
- @Yash621 (Yash Goel): code-insiders --status がエラーになる PR #140152
- @zardoy (Vitaly):
showInformationMessage、showWarningMessage、showErrorMessageのタイピングを、項目が文字列であることを厳密にする PR #137672
vscode-css-languageserviceへの貢献者
- @fyangstudio (yangfan): Feat: 新しい resolving import at-rules をサポート PR #255
- @romainmenke (Romain Menke): CSS カラー: hue rad|grad|turn のサポートを追加 PR #257
- @Semigradsky (Dmitry Semigradsky): 大文字小文字を区別する属性セレクタをサポート PR #259
vscode-eslintへの貢献者
- @edupsousa (Eduardo Pereira de Sousa): ユーザーがサーバーエラーを無視できるようにする。 PR #1375
vscode-extension-samplesへの貢献
- @laurentlb (Laurent Le Brun): comment-sample の 'Cancel' ボタンを修正 PR #492
vscode-html-languageserviceへの貢献
- @zuochenxue (ZuoChenxue): docs: タイポを修正 PR #118
vscode-js-debugへの貢献者
vscode-pull-request-githubへの貢献者
- @blindpirate (Bo Zhang)
- @joshuaobrien (Joshua O'Brien): すべての差分を開くコマンドを追加 PR #3238
vscode-textmateへの貢献
- @SNDST00M (M.U.N.I.N):
FontStyle.Strikethroughを実装 PR #159
vscode-vsceへのコントリビューション
- @hangxingliu (Liu Yue): fix: docker ベースイメージは最新の
node:14-alpineである必要がある PR #651 - @joerohde (Joe Rohde): feat: エントリポイントを検証するためのサニティチェック PR #669
- @ritwickdey (Ritwick Dey): fix: js タグなしのエントリポイント検証 PR #676
debug-adapter-protocolへの貢献者
- @Calindro: Emulicious デバッガーを追加 PR #230
- @cdaringe (Christopher Dieringer): docs(実装者): OCaml を追加 PR #228
- @ko1 (Koichi Sasada):
VSCode rdbg Ruby Debuggerを追加 PR #232
monaco-editorへのコントリビューション
- @blutorange (Andre Wachsmuth): #2383 を実装 FreeMarker テンプレート言語の構文モードを追加 PR #2847
- @forensicmike (forensicmike1): サンプルをクローンして実行するためのステップバイステップのコマンドライン手順に「cd monaco-editor」を追加 PR #2894
- @juan-carlos-diaz: #2851 Shell 言語の属性と識別子(ハイフン付き)を正しくハイライトするよう修正 PR #2871
- @philipturner (Philip Turner)
- @rcjsuen (Remy Suen): Markdown 構文でハイフン付き HTML タグをサポート PR #2864
- @resistdesign (Ryan Graff): ドキュメント: (サンプル) ブラウザ ESM Parcel ビルドを簡素化 PR #2832
- @ValeraS (Valeriy)
node-jsonc-parserへの貢献
- @Marcono1234
- @P0lip (Jakub Rożek): findNodeAtLocation が不完全なプロパティのペアを処理しない PR #44