セッションリプレイ
Pro機能ユーザーがWebサイトとどのようにやり取りしているかを正確に確認します。セッションリプレイはマウスの動き、クリック、スクロール、ページの操作を記録し、個別レベルのユーザー行動を理解できます。
セッションリプレイはPro、Scale、およびEnterpriseプランで利用可能です。この機能を有効にするにはプランをアップグレードしてください。

概要
セッションリプレイはビデオを実際に記録することなく、ユーザーセッションのビデオのような記録をキャプチャします。DOMスナップショットと増分変更を使用することで、リプレイは軽量(セッションあたり約50-100KB)でありながら、ユーザー体験の完全な忠実度を提供します。
主な利点
- 問題をより速くデバッグ: ユーザーが報告する前に、ユーザーが経験したことを正確に確認します
- UXの問題を特定: ユーザーが混乱しているインターフェースで苦労する様子を見ます
- コンバージョンを改善: ユーザーがチェックアウトやサインアップフローを放棄する理由を理解します
- 変更を検証: 新しい機能が本番環境で期待通りに機能することを確認します
- プライバシー優先: パスワードとクレジットカードのような機密データを自動的にマスクします
セッションリプレイを有効にする
ステップ1: ダッシュボードで有効にする
- Domainsを開き、サイトをクリックしてConfigureセクションに移動し、Feature flagsを選択します
- セッションリプレイを有効にします
- 記録モードを設定します(トリガーモードを参照)
- 変更を保存します
ステップ2: インストールを確認する
トラッキングスクリプトは有効にされると自動的に記録を開始します。機能しているかどうか確認してください:
- Webサイトにアクセスします
- いくつかの操作を実行します(クリック、スクロール、入力)
- ZenovayダッシュボードでDomains → サイト → Sessionsタブを開きます
- セッションは30秒以内に表示されるはずです
セッションはアップロード後にのみ表示されます。トリガーモードによっては、セッションが終了するか、トリガーイベントが発生するまで表示されないことがあります。
トリガーモード
セッションがいつ記録およびアップロードされるかを制御し、ストレージを最適化し、最も重要なことに焦点を当てます。
すべてのセッション(all)
すべてのセッションを記録およびアップロードします。
以下の場合に最適:
- 最大限の可視性が必要な初期段階の製品
- トラフィックが少ないWebサイト
- テスト環境とQA環境
設定:
{
"session_replay_trigger": "all"
}
エラーのみ(errors_only)
バックグラウンドで常に記録しますが、JavaScriptエラーが発生したセッションのみアップロードします。遡及的キャプチャを使用して、エラーに至るイベントを含めます。
以下の場合に最適:
- トラフィックが多い本番環境
- デバッグに重点を置くチーム
- 費用意識のある使用
設定:
{
"session_replay_trigger": "errors_only"
}
動作方法:
- 記録はメモリバッファに直ちに開始されます
- エラーが発生すると、バッファがフラッシュされてアップロードされます
- エラーの前に何が起こったかの完全なコンテキストが取得されます
スマートモード(smart)
複数のシグナルに基づいてセッションを知的にアップロードします:
- JavaScriptエラー: 処理されないいかなる例外
- フラストレーションシグナル: 連打クリック、無効なクリック、フォーム放棄
- 高価値訪問者: 購入意図またはエンゲージメントを示す訪問者
以下の場合に最適:
- 圧倒されるデータなしでバランスのとれたカバレッジ
- UX最適化に焦点を当てた製品チーム
- e-commerce変換最適化
設定:
{
"session_replay_trigger": "smart"
}
フラストレーション検出に含まれるもの:
- 連打クリック: 500ms以内に同じエリアで3回以上クリック
- 無効なクリック: インタラクティブではない要素のクリック
- フォームフラストレーション: 複数の失敗したフォーム送信
- スクロール荒れ: 急速な上下スクロール
プライバシーコントロール
セッションリプレイは、プライバシーをコア原則として設計されています。機密情報は自動的に保護されます。
自動マスキング
デフォルトでは、Zenovayは以下をマスクします:
- パスワード入力(
<input type="password">) - クレジットカード フィールド(
<input type="cc-number">など) - 社会保障番号
- メールアドレスフィールド(設定可能)
data-privateを持つ任意の要素
手動マスキング
マスク属性を任意の要素に追加します:
<!-- 機密コンテンツをマスク -->
<div data-private>
このコンテンツはリプレイでは非表示になります
</div>
<!-- フォームフィールドをマスク -->
<input type="text" name="ssn" data-private />
記録を完全にブロック
特定の要素またはセクションを記録から除外します:
<!-- このセクションをまったく記録しない -->
<div data-private>
<video><!-- ビデオコンテンツは記録されません --></video>
</div>
GDPR準拠
- クッキーは不要: セッションリプレイはファーストパーティデータでのみ機能します
- データ最小化: 実際の値ではなく、DOMの変更のみが記録されます
- 削除権: セッションはリクエストに応じて削除できます
- 同意の統合: 訪問者の同意設定を尊重します
詳細な設定についてはGDPR準拠を参照してください。
セッションを表示する
セッションリスト
Domains → サイト → Sessionsタブを開いて、記録されたすべてのセッションを表示します。
フィルタリング:
- 日付範囲
- デバイスタイプ
- 国
- エラーあり
- フラストレーションシグナルあり
- セッション期間
ソート:
- 最新
- 最長期間
- 最多エラー
- 最高フラストレーションスコア
セッションプレイヤー
任意のセッションをクリックして、リプレイプレイヤーを開きます。
プレイヤー機能:
- 再生/一時停止: 標準再生コントロール
- 速度: 1x、2x、4x再生速度
- タイムライン: セッション内の任意のポイントにスクラブします
- イベントマーカー: タイムライン上のクリック、エラー、フラストレーションイベントを参照
- コンソール: 発生したJavaScriptエラーを表示
- ネットワーク: 失敗したAPIリクエストを表示(Enterprise)
キーボードショートカット:
Space: 再生/一時停止←/→: 5秒スキップ1/2/4: 再生速度を設定F: フルスクリーン切り替え
セッションメタデータ
各セッションはコンテキスト情報をキャプチャします:
| フィールド | 説明 |
|---|---|
sessionId | 一意のセッション識別子 |
visitorId | 匿名訪問者ID |
startedAt | セッション開始タイムスタンプ |
duration | 合計セッション長 |
pageViews | 訪問ページ数 |
hasErrors | JavaScriptエラーが発生したかどうか |
hasFrustration | フラストレーションシグナルが検出されたかどうか |
viewport | 画面解像度 |
device | デバイスタイプとモデル |
browser | ブラウザ名とバージョン |
country | 地理的位置 |
initialUrl | エントリページURL |
エラートラッキングとの統合
エラートラッキングが有効になると、セッションリプレイが自動的にエラーにリンクされます。
エラーコンテキスト
エラーダッシュボードの任意のエラーから:
- セッションを表示をクリック
- リプレイがエラーが発生した瞬間に開きます
- エラーに至ったものを確認するために、逆方向にスクラブします
スタックトレース相関
エラースタックトレースはリプレイタイムラインの横に表示され、コードが失敗した正確な時刻と場所を示します。
ストレージと保持期間
データストレージ
セッションリプレイデータはCloudflare R2(S3互換ストレージ)に以下で保存されます:
- 保存時の暗号化: AES-256
- 地理的冗長性: マルチリージョンレプリケーション
- エッジキャッシング: 最寄りの場所からの高速再生
保持期間
| プラン | 保持期間 |
|---|---|
| Pro | 60日 |
| Scale | 120日 |
| Enterprise | 180日 |
セッションは保持期間後に自動的にクリーンアップされます。
パフォーマンスへの影響
セッションリプレイは最小限の影響を与えるよう設計されています:
| メトリック | 影響 |
|---|---|
| ページロード | < 5ms追加 |
| メモリ使用量 | ~2-5 MBバッファ |
| ネットワーク | セッションあたり~50-100KB(圧縮) |
| CPU | 無視できるもの(増分変更のみ) |
最適化のヒント
- 適切なトリガーモードを使用: 高トラフィックサイトの場合は
errors_onlyまたはsmart - 重い要素をブロック: ビデオ、複雑なアニメーション、iframeを除外
- サンプル記録: 非常に高いトラフィックに対してサンプリング率を使用
設定リファレンス
Webサイト設定経由でセッションリプレイを設定します:
{
"feature_flags": {
"enable_session_replay": true,
"session_replay_trigger": "smart",
"replay_sampling_rate": 0.02
}
}
オプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
enable_session_replay | boolean | false | 記録を有効/無効にする |
session_replay_trigger | string | "smart" | トリガーモード: "all"、"errors_only"、"smart" |
replay_sampling_rate | number | 0.02 | サンプリング率(0.02 = セッションの2%) |
サンプリング率はallモードのみに適用されます。errors_onlyおよびsmartモードは、トリガーされたセッションの100%をキャプチャします。
トラブルシューティング
セッションが表示されない
- 機能が有効かどうかを確認: Domains → サイト → Configure → Feature flags → セッションリプレイ
- トリガーモードを確認:
errors_onlyはエラーが発生するまでアップロードされません - ブラウザコンソールを確認: Zenovay初期化メッセージを探します
- アップロードを待機: ユーザーがページを離れるか、2分後にセッションがアップロードされます
リプレイが再生されない
- データ整合性を確認: セッションは不完全なデータを持つ可能性があります
- 別のブラウザを試す: 一部の古いブラウザで再生の問題があります
- ページをリロード: ブラウザキャッシュをクリアして再度お試しください
プライバシーマスキングが機能していない
- 属性構文を確認:
data-privateを使用します(data-maskではなく) - 親要素を確認: マスキングは親から継承されません
- DOMを検査: 属性がレンダリングされたHTMLに存在することを確認します
APIアクセス
セッションAPI経由でセッションデータをプログラムで取得します。
セッションをリスト
GET /api/websites/:websiteId/sessions
Authorization: Bearer YOUR_API_KEY
セッションイベントを取得
GET /api/replay/:sessionId
Authorization: Bearer YOUR_API_KEY
ベストプラクティス
smartモードから始める - ストレージを圧倒することなく最も価値のあるセッションを取得- 積極的にマスク - 疑わしい場合は機密コンテンツをマスク
- 定期的に確認 - UXインサイトのために毎週セッション確認をスケジュール
- チームと共有 - セッションリンクを使用して問題を伝達
- 分析と組み合わせる - 定量データを使用してセッションを見つける