Windows セッションリプレイ¶
実験的機能
Windows SDK の Session Replay はデフォルトで無効になっています。明示的に有効化して検証することは可能ですが、まだ安定版リリースの範囲には含まれていません。導入前に、対象アプリケーションの互換性、プライバシー、パフォーマンス、データ量を自身で評価してください。現在の動作を安定した互換性の保証として扱わないでください。
サポート範囲¶
WPF、WinForms、WinUI 3、WebView2、Electron、および Native C/C++ アプリケーションで明示的に有効化して検証できます。UI フレームワーク、クロスドメイン Frame、Canvas、カスタムレンダリングコンテンツ、メディアプレーヤーコントロールの種類によってリプレイの見え方が異なるため、対象アプリケーションごとに個別に検証する必要があります。
セッションリプレイの有効化¶
SDK の初期化時に、SessionReplay.Enabled を明示的に true に設定します。以下の例ではパブリックな DataWay を使用しています。ローカル環境(DataKit)を使用する場合は、DatawayUrl と ClientToken を DatakitUrl に置き換えてください。
using Guance.Windows;
GuanceSdk.Init(new GuanceConfig
{
DatawayUrl = "https://openway.<your-domain>",
ClientToken = "<client-token>",
RumAppId = "<rum-app-id>",
ServiceName = "desktop-client",
Env = "prod",
Version = "1.0.0",
SessionReplay = new RumSessionReplayConfig
{
Enabled = true,
SampleRate = 1.0,
OnErrorSampleRate = 0.0,
TextAndInputPrivacy = SessionReplayTextAndInputPrivacy.MaskAll,
TouchPrivacy = SessionReplayTouchPrivacy.Show,
ImagePrivacy = SessionReplayImagePrivacy.MaskAll
}
});
Native C/C++ アプリケーションでは、初期化前に対応するフィールドを設定します。
#include "guance_sdk.h"
guance_sdk_config config;
guance_sdk_config_init(&config);
config.session_replay_enabled = 1;
config.session_replay_sample_rate = 1.0;
config.session_replay_on_error_sample_rate = 0.0;
DataWay または DataKit、RUM アプリケーション ID、サービス名、環境、アプリケーションバージョンなどの初期化必須項目も併せて入力した後、guance_sdk_init() を呼び出します。Native SDK では、ウィンドウのライフサイクルに従ってリプレイ用のウィンドウを登録する必要もあります。WebView2 および Electron のページ記録は、それぞれの Native Bridge を介して同じセッションに書き込まれます。
プライバシー設定¶
セッションリプレイは、画面上のテキスト、入力、クリック、画像情報を収集する可能性があります。有効化する前に、テスト環境で収集内容、データ量、アップロード動作を確認し、グローバル設定と要素レベルのオーバーライドがビジネス上のプライバシー要件を満たしていることを確認してください。
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
TextAndInputPrivacy |
SessionReplayTextAndInputPrivacy |
いいえ | テキストと入力内容のプライバシーレベルを設定します。MaskSensitiveInputs は機密性の高い入力のみをマスクします。MaskAllInputs はすべての入力をマスクします。MaskAll はすべてのテキストと入力内容をマスクします。Allow はテキストと入力内容をマスクしません。デフォルトは MaskAll です。 |
TouchPrivacy |
SessionReplayTouchPrivacy |
いいえ | ポインターとタッチ操作のプライバシーレベルを設定します。Show はポインターとタッチ操作を表示します。Hide はポインターとタッチ操作を非表示にします。デフォルトは Show です。 |
ImagePrivacy |
SessionReplayImagePrivacy |
いいえ | 画像コンテンツのプライバシーレベルを設定します。MaskAll はすべての画像をマスクします。MaskLargeOnly はレンダリング面積がしきい値を超える画像のみをマスクします。MaskNone は画像を積極的にはマスクしません。デフォルトは MaskAll です。 |
デフォルトでは、テキスト、入力、画像のマスキングなど、保守的な戦略を使用することをお勧めします。ビジネス上の評価が完了した後にのみ、ルールを緩和してください。アカウント、決済、本人確認情報、その他の機密データについては、要素レベルのプライバシーオーバーライドでより厳格なルールを設定するか、要素全体を非表示にしてください。
プライバシーオーバーライド¶
SDK は、RumSessionReplayConfig を使用したグローバルなプライバシーレベルの設定に加えて、ビューレベルでこれらの設定をオーバーライドすることもサポートしています。以下の要素レベル API は、.NET の WPF、WinForms、WinUI 3 コントロールに適用されます。
ビューレベルのプライバシーオーバーライド:
- テキストと入力、タッチ、画像のプライバシーレベルのオーバーライドをサポート
- 指定された要素とその子要素を完全に非表示にすることをサポート
注意:
- オーバーライド設定を正しく認識させるために、要素のライフサイクルでできるだけ早く適用してください
- プライバシーオーバーライドは、要素とその子要素に適用されます
- テキスト、タッチ、画像のプライバシーオーバーライドの優先順位:子要素 > 親要素 > グローバル設定
- 非表示設定は要素ツリー全体に適用されるため、子要素が親要素から継承した非表示設定を解除することはできません
テキストと入力のオーバーライド¶
GuanceSdk.SetSessionReplayTextAndInputPrivacy() を使用して、要素のテキストと入力のプライバシーレベルを設定します。null を渡すと、現在の要素のオーバーライド設定を削除できます。
// 指定された要素にテキストと入力のプライバシーオーバーライドを設定
GuanceSdk.SetSessionReplayTextAndInputPrivacy(
passwordBox,
SessionReplayTextAndInputPrivacy.MaskAll);
// 指定された要素のテキストと入力のプライバシーオーバーライドを削除
GuanceSdk.SetSessionReplayTextAndInputPrivacy(passwordBox, null);
タッチのオーバーライド¶
GuanceSdk.SetSessionReplayTouchPrivacy() を使用して、要素のポインターとタッチ操作のプライバシーレベルを設定します。null を渡すと、現在の要素のオーバーライド設定を削除できます。
// 指定された要素のポインターとタッチ操作を非表示にする
GuanceSdk.SetSessionReplayTouchPrivacy(
paymentPanel,
SessionReplayTouchPrivacy.Hide);
// 指定された要素のポインターとタッチ操作のプライバシーオーバーライドを削除
GuanceSdk.SetSessionReplayTouchPrivacy(paymentPanel, null);
画像のオーバーライド¶
GuanceSdk.SetSessionReplayImagePrivacy() を使用して、要素の画像プライバシーレベルを設定します。null を渡すと、現在の要素のオーバーライド設定を削除できます。
// 指定された要素内のすべての画像をマスクする
GuanceSdk.SetSessionReplayImagePrivacy(
identityImage,
SessionReplayImagePrivacy.MaskAll);
// 指定された要素の画像プライバシーオーバーライドを削除
GuanceSdk.SetSessionReplayImagePrivacy(identityImage, null);
要素の非表示オーバーライド¶
完全に非表示にする必要がある機密要素には、GuanceSdk.SetSessionReplayHidden() を使用して設定します。設定後、その要素はリプレイで Hidden プレースホルダーとして表示され、子要素は記録されません。
// 指定された要素とその子要素を非表示にする
GuanceSdk.SetSessionReplayHidden(customerIdentityPanel, true);
// 指定された要素の非表示設定を削除する
GuanceSdk.SetSessionReplayHidden(customerIdentityPanel, false);
WebView2 と Electron¶
WebView2 および Electron の Browser collector は、ネイティブ Bridge の getPrivacyLevel() から allow、mask-user-input、または mask を読み取ります。プライバシーレベルは、信頼できるネイティブ設定によって決定される必要があり、Renderer が独自に緩和することはできません。