Visual Studio カスタマー エクスペリエンス向上プログラム

Visual Studio カスタマー エクスペリエンス向上プログラム (VSCEIP) は、Microsoft による Visual Studio の改善を時間の経過と共に支援するように設計されています。 このプログラムは、コンピューターでのユーザーのタスクを中断させずにコンピューター ハードウェア、ユーザーの Visual Studio の利用、エラーに関する情報を収集します。 収集される情報は、Microsoft が改善する機能を特定するために役立ちます。 このドキュメントでは、VSCEIP のオプトインまたはオプトアウトを行う方法について説明し、Microsoft によって収集されるデータの種類とその使用方法に関する情報を提供します。 また、拡張機能の作成者が個人情報や機密情報の不慮の漏洩を回避する方法に関するヒントも提供します。

診断データ収集のオプトアウト

収集するデータの目的とそのアクセスとリテンション期間の制約を考えた場合、Visual Studio および Windows の既定のプライバシー設定を使用することお勧めします。 ただし、Visual Studio エクスペリエンス向上プログラムへの参加はオプトアウトすることができます。 オプトアウトすると、任意の診断データ収集を選択しないことになります。 Visual Studio をセキュリティで保護し、常に最新の状態にし、予想どおりに実行させるには、一部の診断データ収集が必須です。 必須の診断データ収集は、VSCEIP のオプトアウトを選択しても影響を受けません。

注意

個人データの閲覧や削除を検討している場合、Microsoft のガイダンスの「GDPR のための Windows データ サブジェクト要求 」を参照してください。 GDPR に関する全般情報をお探しの場合は、サービス信頼ポータルの GDPR セクションを参照してください。

注意

VSCEIP のテレメトリのオプトインまたはオプトアウトの設定は、Visual Studio の [問題の報告] には適用されません。 問題を報告するときに、[送信] をクリックしてアクセス許可を指定した場合にのみ、ログが収集され、Microsoft に送信されます。 [問題の報告] に送信する前にログの管理について確認する場合、詳細については、データのプライバシーのフィードバックに関する記事を参照してください。

オプトインまたはオプトアウト

VSCEIP は既定で有効になっています。 次の手順で、オフにしたり、もう一度でオンにしたりできます。

  1. Visual Studio で、 [ヘルプ]>[プライバシー]>[プライバシーの設定] を選びます。

    [Visual Studio エクスペリエンス向上プログラム] ダイアログ ボックスが開きます。

  2. オプトアウトするには、[いいえ、参加しません] を選んでから、[OK] を選びます。 オプトインするには、 [参加する (推奨)] を選んでから、 [OK] を選びます。

    Visual Studio Experience Improvement Program dialog

レジストリ設定

Build Tools for Visual Studio をインストールする場合は、レジストリを更新して VSCEIP を構成する必要があります。 企業のお客様の場合、レジストリ ベースのポリシーを設定することにより、VSCEIP を有効または無効にするグループ ポリシーを構成できます。

これに関連するレジストリ キーと設定は以下のとおりです。

  • 64 ビット OS の場合: キー = HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSCommon\16.0\SQM
  • 32 ビット OS の場合: キー = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSCommon\16.0\SQM
  • グループ ポリシーが有効になっている場合: キー = HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\VisualStudio\SQM
  • 64 ビット OS の場合: キー = HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSCommon\17.0\SQM
  • 32 ビット OS の場合: キー = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSCommon\17.0\SQM
  • グループ ポリシーが有効になっている場合: キー = HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\VisualStudio\SQM

エントリ = OptIn

値 = (DWORD)

  • 0: オプトアウト (VSCEIP をオフにする)
  • 1: オプトイン (VSCEIP をオンにする)

注意事項

レジストリを正しく編集しないと、システムが正常に動作しなくなる場合があります。 レジストリを変更する前に、コンピューター上の重要なデータのバックアップを作成する必要があります。 手動での変更の適用後に問題が発生した場合は、 [前回正常起動時の構成] スタートアップ オプションを使うこともできます。

VSCEIP によって収集、処理、または送信される情報については、「Microsoft のプライバシーに関する声明」を参照してください。

Visual Studio で収集したシステムによって生成されたログ

Visual Studio では、問題の修正と製品の品質向上のために、システムによって生成されたログが収集されます。 ここでは、Microsoft によって収集されるデータの種類とその使用方法に関する情報を提供します。 また、拡張機能の作成者が個人情報や機密情報の不慮の漏洩を回避する方法に関するヒントも提供します。

収集されるデータの種類

Visual Studio では、クラッシュ、UI の無応答、CPU またはメモリの使用率が高い状況のシステムで生成されたログが収集されます。 製品のインストールまたは使用中に発生したエラーに関する情報も収集します。 収集したデータは、エラーによって異なり、スタック トレース、メモリ ダンプ、例外情報が含まれる場合があります。

  • 高い CPU 使用率と無応答については、関連する Visual Studio のスレッドのスタック トレースが収集されます。

  • いくつかのスレッドのスタック トレースでは問題の原因を特定するために十分ではない場合、たとえば、クラッシュ、無応答、高いメモリ使用率については、メモリ ダンプが収集されます。 ダンプは、エラーが発生したときのプロセスの状態を表します。

  • ディスク上のファイルに書き込もうとしているときの例外など、予期しないエラー条件については、例外に関する情報を収集します。 この情報には、例外の名前、例外が発生したスレッドのスタック トレース、例外に関連するメッセージ、特定の例外に関連するその他の情報が含まれています。

    収集したデータの次の例では、例外の名前、スタック トレース、例外メッセージを示しています。

    "Reserved.DataModel.Fault.Exception.TypeString": "System.IO.IOException",
    "Reserved.DataModel.Fault.Exception.StackTrace": "System.IO.__Error.WinIOError(Int32,String)\r\n
    System.IO.FileStream.Init(String,FileMode,FileAccess,Int32,Boolean,FileShare,Int32,FileOptions,SECURITY_ATTRIBUTES,String,Boolean,Boolean,Boolean)\r\n
    System.IO.FileStream..ctor(String,FileMode,FileAccess,FileShare,Int32,FileOptions,String,Boolean,Boolean,Boolean)\r\nSystem.IO.StreamWriter.CreateFile(String,Boolean,Boolean)\r\n
    System.IO.StreamWriter..ctor(String,Boolean,Encoding,Int32,Boolean)\r\n
    System.IO.StreamWriter..ctor(String,Boolean)\r\n
    System.IO.File.CreateText(String)\r\n
    Microsoft.VisualStudio.Setup.Services.FileSystem.CreateText(String,Boolean)\r\n
    Microsoft.VisualStudio.Setup.Cache.ChannelManifestRepository.WriteChannelManifest(IChannelManifest,String,String)\r\n
    Microsoft.VisualStudio.Setup.Cache.ChannelManifestRepository.AddChannel(ChannelManifestPair,Boolean)\r\n
    Microsoft.VisualStudio.Setup.Cache.CacheManager.AddChannel(ChannelManifestPair,Boolean)\r\n
    Microsoft.VisualStudio.Setup.ChannelManager.\<UpdateAsync>d__37.MoveNext()\r\n”,
    "Reserved.DataModel.Fault.Exception.Message": " The process cannot access the file 'C:\\Users\\[UserName]\\AppData\\Local\\Microsoft\\VisualStudio\\Packages\\_Channels\\4CB340F5\\channelManifest.json' because it is being used by another process."
    

システムによって生成されたログの使用方法

エラーの根本原因を特定するワークフローは、エラーの種類とその重要度によって異なります。

エラーの分類

ログに基づいて、エラーが分類され、調査の優先度付けのためにカウントされます。 たとえば、“System.IO.FileStream.Init” での “System.IO.__Error.WinIOError” が、製品のバージョン <x> で 500 回発生し、そのバージョンで発生率が最高になっていることを検出することがあります。

追跡のための作業項目

優先順位の高い個々のエラーの作業項目が作成され、調査のためのエンジニアに割り当てられています。 これらの作業項目には一般的に分類、優先度、エラーの種類に関連する診断情報が含まれます。 この情報は、収集したシステムによって生成されたエラーのログから取得されます。 たとえば、クラッシュの作業項目には、クラッシュが発生しているスタック トレースが含まれる場合があります。

エラーの調査

エンジニアは、エラーの根本原因を特定するのに作業項目で使用できる情報を使用します。 場合によっては、作業項目に存在する情報よりも多くの情報が必要になることがあります。その場合は、収集された元のシステムによって生成されたログを参照します。 たとえば、エンジニアは製品のクラッシュを理解するためにメモリ ダンプを調査する可能性があります。

拡張機能の作成者のための関するヒント

拡張機能の作成者は、モジュール、種類、メソッドの名前に個人情報やその他の機密情報を使用しないようにすることで、個人情報の漏洩を制限する必要があります。 クラッシュまたはそれに似たエラー状態が、スタックのそのコードで発生した場合、その情報は、システムによって生成されたログの一部として収集されます。