テレメトリー
Visual Studio Code は、製品の改善方法を把握するために使用されるテレメトリデータを収集します。たとえば、この使用状況データは、起動時間の遅さなどの問題をデバッグし、新機能の優先順位付けに役立ちます。このデータが提供する洞察は高く評価していますが、すべてのユーザーが使用状況データを送信したいわけではないことも認識しており、テレメトリレポートの無効化で説明されているようにテレメトリを無効にできます。詳細については、プライバシーに関する声明も参照してください。
テレメトリデータの種類
VS Code とこのページでは、テレメトリに関して3種類のデータについて言及しています。
クラッシュレポート - クラッシュレポートは、VS Code がクラッシュしたときに診断情報を収集し、クラッシュの原因と将来のクラッシュを防ぐために必要な変更を把握するのに役立つように Microsoft に送信します。
エラーテレメトリ - エラーテレメトリは、アプリケーションをクラッシュさせないが、予期しないエラーに関する情報を収集します。
使用状況データ - 使用状況データは、VS Code で機能がどのように使用され、どのように動作するかに関する情報を収集し、将来の製品改善の優先順位付けに役立ちます。
テレメトリレポートの無効化
telemetry.telemetryLevel のユーザー設定を使用すると、単一の設定で送信するテレメトリの種類を制御できます。telemetry.telemetryLevel の各値で送信されるデータの種類を次の表に示します。
クラッシュレポート | エラーテレメトリ | 使用状況データ | |
---|---|---|---|
all | ✓ | ✓ | ✓ |
error | ✓ | ✓ | - |
crash | ✓ | - | - |
off | - | - | - |
たとえば、Microsoft にテレメトリデータを送信したくない場合は、telemetry.telemetryLevel のユーザー設定をoff
に設定できます。これにより、今後 VS Code から送信されるすべてのテレメトリイベントが停止します。設定を無効にするまでテレメトリ情報が収集され、送信されている可能性があることに注意してください。
設定にJSONエディターを使用している場合は、次の行を追加します。
"telemetry.telemetryLevel": "off"
拡張機能とテレメトリ
VS Code では、Microsoft およびサードパーティの拡張機能をインストールすることで、製品に機能を追加できます。これらの拡張機能は独自の利用状況データを収集している場合があり、telemetry.telemetryLevel 設定では制御されません。特定の拡張機能のドキュメントを参照して、そのテレメトリレポートと、無効にできるかどうかを確認してください。
拡張機能の作成者は、拡張機能内でのテレメトリのベストプラクティスの実装に関するガイダンスについて、「拡張機能作成者向け」セクションを参照できます。
テレメトリイベントの出力チャンネル
VS Code でテレメトリイベントが送信されるときにレビューするには、コマンドパレット () から開発者: テレメトリの表示コマンドを実行します。このコマンドは、テレメトリイベントのトレースを有効にし、出力パネル (⇧⌘U (Windows Ctrl+Shift+U、Linux Ctrl+K Ctrl+H)) にテレメトリ出力チャンネルを開きます。テレメトリイベントが送信されると、出力チャンネルにイベントの詳細が表示されます。
テレメトリイベントをトレースすると、イベントはローカルファイルtelemetry.log
にもログに記録され、開発者: ログを開く...コマンドを使用し、ドロップダウンからテレメトリを選択して表示できます。
テレメトリイベントのトレースを無効にするには、VS Code ウィンドウをリロードします (開発者: ウィンドウのリロードコマンド)。
すべてのテレメトリイベントの表示
VS Code が送信できるすべてのテレメトリイベントを表示したい場合は、CLI で--telemetry
フラグを使用できます。これにより、VS Code 内で表示できる JSON レポートが生成されます。これらのレポートはビルドごとに生成され、拡張機能の作成者がルートビルドディレクトリにtelemetry.json
ファイルを追加しない限り、拡張機能のテレメトリは含まれません。
たとえば、code --telemetry > telemetry.json && code telemetry.json
を実行すると、現在の作業ディレクトリにtelemetry.json
ファイルが作成され、VS Code で開かれます。テレメトリレポートの長さのため、code --telemetry | code -
のように出力をパイプすることはできません。
以下のセクションでは、テレメトリを分類するために使用されるイベントメタデータについて詳しく説明し、その目的を説明し、特別な処理を示します。
イベントの分類
classification
フィールドはデータの種類を記述します。
SystemMetaData
- VS Code によって生成され、個人を特定できない値。CallstackOrException
- プログラム実行の失敗によって引き起こされるエラー。これらには、ユーザーパスが消去されたスタックトレースが含まれます。PublicNonPersonalData
- 公開されているユーザー生成データ。たとえば、公開された拡張機能 ID など。EndUserPseudonymizedInformation
- ユーザーを特定できないように、一意のユーザーを識別するために使用されるハッシュ。たとえば、ハッシュ化された Mac アドレスなど。
イベントの目的
purpose
フィールドは、データが収集される理由を記述します。
PerformanceAndHealth
- VS Code 製品とサービスが正常で高速であることを保証するため。FeatureInsight
- 機能の使用状況と開発投資を継続する場所を理解するため。BusinessInsight
- VS Code、Microsoft、および GitHub のビジネスに関連する決定を下すため。
イベントのエンドポイント
endpoint
フィールドは、データが送信されるデータハンドラーを記述します。これは通常、ユーザーのプライバシーを保護するために追加のスクラビングとセキュリティを必要とする特殊なデータに適用されます。
GoogleAnalyticsId
- 当社のウェブサイトで Google Analytics とページビューの追跡に使用されます。これらは通常のデータよりも慎重に扱われます。MacAddressHash
- VS Code のユーザーを識別するために使用されます。これはクライアント側で一度ハッシュされ、パイプライン側で再度ハッシュされて、特定のユーザーを特定できないようにします。Web 用 VS Codeの場合、この目的のために UUID が生成されます。none
- データに特別な処理は必要ありません。
GDPRとVS Code
一般データ保護規則 (GDPR) のサポートに加えて、VS Code チームはプライバシーを非常に真剣に考えています。これは、企業としての Microsoft と、特に VS Code チームの両方についてです。
GDPR への準拠を確実にするために、VS Code にいくつかの更新を行いました。
- 既存および新規のすべてのユーザー向けに、製品内で通知を配置することで、テレメトリ収集をオプトアウトしやすくする。
- 送信するテレメトリをレビューおよび分類する (当社の OSS コードベースで文書化されています)。
- 収集するデータ (クラッシュダンプなど) に対して有効なデータ保持ポリシーが整備されていることを確認する。
要するに、これらの慣行はヨーロッパだけでなく、すべての地域に適用されるため、すべてのユーザーにとって正しいことを行うために懸命に努力してきました。
人々が尋ねると予想する質問の1つは、収集するデータを確認することです。しかし、VS Code にはユーザーを一意に識別する「サインイン」エクスペリエンスがないため、これを行う信頼できる方法はありません。診断目的で単一のユーザーを近似するのに役立つ情報 (デスクトップ上のネットワークアダプター NIC のハッシュと Web 上でランダムに割り当てられた UUID に基づく) は送信しますが、これが一意であることは保証されません。たとえば、仮想マシン (VM) は、NIC ID を頻繁にローテーションしたり、プールから割り当てたりします。この手法は問題解決に役立ちますが、「データを提供する」には十分信頼できません。
GDPR とユーザーの期待についてさらに学ぶにつれて、当社のアプローチは進化すると予想されます。ユーザーが当社に送信するデータは非常に貴重であり、それによって VS Code はすべての人にとってより良い製品となるため、当社はそれを非常に高く評価しています。繰り返しになりますが、プライバシーについて懸念がある場合は、テレメトリレポートの無効化で説明されているように、テレメトリの送信を無効にする機能を提供しています。
Visual Studio ファミリが GDPR にどのようにアプローチしているかについての詳細は、Visual Studio ファミリの GDPR に関するデータ主体要求で確認できます。
オンラインサービスの管理
クラッシュレポートとテレメトリ以外に、VS Code は製品の更新のダウンロード、拡張機能の検索、インストール、更新、設定の同期、設定エディター内での自然言語検索など、さまざまな目的でオンラインサービスを使用します。これらのサービスを使用する機能をオン/オフにすることができます。
これらの機能をオフにしても、VS Code がオフラインモードになるわけではないことに注意してください。たとえば、拡張機能ビューで拡張機能を検索しても、VS Code は引き続きオンラインの VS Code Marketplace を検索します。設定により、ユーザーが要求しない限り、VS Code がオンラインサービスと通信しないようにします。
ファイル > 基本設定 > 設定から、タグ@tag:usesOnlineServices
を入力します。これにより、オンラインサービスの使用を制御するすべての設定が表示され、個別にオン/オフを切り替えることができます。
注: VS Code 拡張機能もオンラインサービスを使用する場合がありますが、これらのオンラインサービスの使用を設定する設定が提供されていない場合や、
@tag:usesOnlineServices
で検索しても設定が表示されるように登録されていない場合があります。特定の拡張機能のドキュメントを参照して、そのオンラインサービスの使用状況を確認してください。
VS Code で使用される Microsoft 以外のオンラインサービス
組み込みのVS Code 用 npm サポート拡張機能は、https://registry.npmjs.org
およびhttps://registry.bower.io
にリクエストを送信します。
組み込みのTypeScript および JavaScript 言語機能拡張機能は、https://registry.npmjs.org
の@types
ドメインを照会します。
開発者: 開発者ツールを切り替えるまたは開発者: Webview 開発者ツールを開くを使用すると、VS Code は開発者ツールの起動に必要なデータを取得するために Google サーバーと通信する場合があります。
拡張機能の推奨事項
VS Code は、ファイルの種類、ワークスペース、および環境に基づいて拡張機能の推奨事項を提供します。ファイルの種類に関する推奨事項は、事前計算されるか動的に決定されます。ワークスペースおよび環境に関する推奨事項は常に事前計算されます。
なぜ拡張機能が推奨されているかを知りたい場合は、拡張機能の詳細ページを開いてください。推奨の理由はページヘッダーに記載されています。
事前計算された推奨事項
VS Code は、どのファイルの種類とワークスペース/フォルダーでどの拡張機能がアクティブ化されているかについてのテレメトリを収集します。特定のフォルダーは、各フォルダーの Git リモートのハッシュを計算することによって識別されます。
この情報を使用して、匿名の推奨事項を事前計算します。事前計算された推奨事項は、どのような条件下で拡張機能を推奨すべきかを明確にする指示です。たとえば、2つの拡張機能 A と B の間に興味深い相関関係が見られる場合、1つの指示は次のようになるかもしれません: ユーザーが拡張機能 A をインストールしているが B をインストールしていない場合は、拡張機能 B を推奨する。
一部の事前計算された推奨事項は製品の一部として提供されますが、追加の事前計算された推奨事項は実行時にオンラインの Microsoft サービスからフェッチされます。VS Code は、ユーザー情報をオンラインサービスに送信することなく、事前計算された推奨事項を独自に評価し、実行します。
動的な推奨事項
VS Code が事前計算された推奨事項を持たないファイルの種類を開くと、そのファイルの種類をサポートすると宣言している拡張機能を Extension Marketplace に問い合わせます。クエリがインストールされていない拡張機能を返した場合、VS Code は通知を提供します。
拡張機能作成者向け
拡張機能ガイドのテレメトリドキュメントをお読みください。
次のステップ
- テレメトリログレベルの一元管理 - 組織のテレメトリログレベルを設定する方法を学びます。
- Visual Studio Code FAQ - よくある質問を参照して詳細を学びます。
- ユーザー設定とワークスペース設定 - VS Code をカスタマイズするための利用可能なオプションについて読みます。
- キーバインド - よく使用するキーボードショートカットを簡単に変更できます。