Session Replay

利用者のブラウザーやモバイルアプリでの操作を、画面の変化として記録し再生する機能です。動画の録画ではなく DOM の変化を記録する仕組みなので、何が残り何が残らないかは設定で決まります。

何ができるか

RUM の Browser SDK と Mobile SDK に含まれる記録機能です。ブラウザーでは DOM と CSS のスナップショットに、DOM の変更、マウス移動、クリック、入力といったイベントを時刻付きで重ねて記録し、モバイルではタップ、スワイプ、スクロールを記録して、Datadog の画面上で利用者の操作を再生します。マスクの仕組みそのものは RUM の解説に譲り、本記事は段階の選び方と運用を扱います。

どのような場面で使うか

「再現手順が分からないバグ報告」の操作列をそのまま見る、フォームで離脱した箇所を実際の画面で確かめる、エラー発生時に利用者の画面に何が表示されていたかを開発者が自分の目で確認する、といった場面で使います。RUM と Product Analytics のどちらの文脈からも開けます。

身近な例え

舞台の記録係のようなものです。役者 (画面の要素) の動きと台詞 (テキスト) を台本に書き取り、後から同じ舞台を再演します。個人情報に当たる台詞は最初から台本に書かない、と決めておけるのが、カメラで撮る録画との違いです。

「録画」ではなく DOM の変化を記録して再生する

Session Replay は画面を動画として撮っているわけではありません。公式ドキュメントによれば、記録係 (recorder) は RUM Browser SDK の一部で、DOM と CSS のスナップショットを取り、DOM の変更、マウス移動、クリック、入力といったイベントを時刻付きで記録します (2026 年 9 月時点・出典: Browser Session Replay)。再生時はこの記録から画面を組み立て直します。この仕組みが 2 つの性質を生みます。1 つは、要素単位で「記録しない」と決められること。動画なら映るパスワード欄や氏名欄を、要素として指定して最初から書き取らない運用ができます。もう 1 つは、記録がテキストと構造なので検索や解析につなげられることです。RUM の性能データと組み合わせると、エラーの特定、再現、解決に使え、利用パターンや画面設計の落とし穴も見えると公式は位置づけています。設計の中心は「何が録れるか」より「何を録らないと決めるか」です。

何が録れて、何が録れないか

録れるものと録れないものを、公式ドキュメントの記載に沿って整理します。ブラウザーでは DOM と CSS、そして操作イベントが記録の対象です。モバイルはネイティブの Android と iOS アプリが対象で、タップ、スワイプ、スクロールといった操作を再生します (2026 年 9 月時点・出典: Session Replay)。一方、プライバシー設定に関係なく常にマスクされる要素があり、password / email / tel 型の入力欄と、クレジットカード番号や有効期限、セキュリティコードのような autocomplete 属性を持つ要素がそれに当たります (出典: Session Replay Privacy Options)。

記録の対象と対象外 (2026 年 9 月時点の公式ドキュメントの記載)
対象扱い
DOM と CSS のスナップショット、DOM 変更 / マウス移動 / クリック / 入力のイベント (ブラウザー)記録される
タップ / スワイプ / スクロール (ネイティブ Android / iOS)記録される
マスク設定で隠したテキスト、入力値、画像SDK が元の形で収集せず、Datadog に送られない
password / email / tel 型の入力、カード情報系の autocomplete 属性を持つ要素設定に関係なく常にマスク
hidden を指定した要素記録時にグレーのブロックへ置き換え
モバイルアプリ内の WebViewhidden と touch 以外のオーバーライドは非対応。WebView 側は Browser SDK の設定で制御
出典: Browser Session Replay / Session Replay Privacy Options

「録れない」の多くは技術的な限界ではなく、設定で録らないと決めたものです。だからこそ、既定のままにするか要素ごとに開くかの判断が、次節の主題になります。

マスキング段階はどう選ぶか - 業務影響で決める

既定値と 3 つのモードは RUM の項に委ね、ここでは選び方に絞ります。公式ドキュメントはテキストの隠し方を、そのまま見せる「マスクなし」、各文字を x に置き換えて長さだけ残す「空白保持マスク」、全体を *** にする「固定長マスク」の 3 種に分け、モードとテキストの種類の組み合わせで適用を決めています (2026 年 9 月時点・出典: Session Replay Privacy Options)。

モード × テキスト種別ごとのマスク方式 (2026 年 9 月時点・出典: Session Replay Privacy Options)
テキストの種類Allow allMask allMask user input
機微なテキスト (常時マスク対象)固定長マスク固定長マスク固定長マスク
入力値と選択肢のテキストマスクなし固定長マスク固定長マスク
静的テキストマスクなし空白保持マスクマスクなし
ヒントテキストマスクなし固定長マスクマスクなし
出典: Session Replay Privacy Options の Text masking strategies 節

業務影響で読むと、Mask all では静的テキストまで x の並びになるため、再生を見てもエラーメッセージやボタンの文言が読めません。それでも「どこで止まったか」は分かるので、まず Mask all で始め、読めないと困る箇所だけを要素単位で開く順序が安全です。開き方は要素に data-dd-privacy="allow" 属性か dd-privacy-allow クラスを付ける 2 通りで、逆向きの mask や hidden も同じ形で付けられます。

ブラウザーとモバイル SDK の差

ブラウザー版の記録単位は DOM です。モバイル版はネイティブの Android と iOS アプリのタップ、スワイプ、スクロールを再生します (2026 年 9 月時点・出典: Session Replay)。プライバシー設定も分かれ、ブラウザーは defaultPrivacyLevel と要素ごとの属性 / クラス、モバイル (Android / iOS / React Native / Flutter) は「テキストと入力」「画像」「タッチ」の 3 系統を段階で選びます。段はテキストと入力が 3 段、画像が 3 段、タッチが 2 段です (出典: Session Replay Privacy Options)。WebView は hidden にしても WebView 自体は収集を続けるため、中身は Browser SDK 側の設定で守ります。「ブラウザーは要素単位、モバイルは種類単位」と覚えると、両方を持つ組織でも設計が揃います。

保持と課金 - 30 日、15 ヶ月、1,000 セッションあたり

再生データの保持は既定で 30 日です。既定の延長はアカウント担当へ相談し、個々のリプレイは Extended Retention で 15 ヶ月まで延ばせます。プレイリストへの追加でも自動で 15 ヶ月に延び、起点は延長を有効にした時点です (2026 年 9 月時点・出典: Session Replay)。課金は RUM の追加 SKU で、2026 年 8 月時点の料金ページでは 1,000 セッションあたりの月額として年契約 / 月契約 / オンデマンドの 3 つの単価が並び、再生 30 日の保持を含みます。RUM と Product Analytics の両方で使っても二重には課金されません (出典: Datadog Pricing)。セッションは FAQ で無操作 15 分で失効、最長 4 時間と説明されています。保持の考え方は保持期間、SKU 全体は料金体系の読み解き方へ。本記事は課金の仕組みを解説するものです。具体的な単価や料金は Datadog 公式の料金ページで確認してください。

同意と個人情報の実務

記録したデータは Datadog が管理するクラウド上に保存され、保存時に暗号化されます。取り込み時に難読化しつつ権限のある人が元の値を見られる Sensitive Data Scanner とは違い、マスクは後から解除できないと公式は注意しています (2026 年 9 月時点・出典: Session Replay Privacy Options)。誰がどのリプレイを見たかは再生画面の視聴回数から確認でき、再生は Audit Trail のイベントとしても残ります (出典: Session Replay)。この 2 点が、見られる側への説明責任の材料になります。同意については、法律名を挙げて可否を断定しません。同意取得の要否と文言は自組織の規程と法務判断に従うのが前提で、その上で実務として決めるべきは 4 つです。記録対象のページと画面の棚卸し、既定のマスクを維持するかの判断、要素単位で開く箇所の一覧化、そして再生できる権限と閲覧履歴の運用です。

見送る条件と最小構成の始め方

向かない場面を先に挙げます。決済や本人確認書類のアップロードなど、画面の大半が機微な入力で占められている導線は、マスクすると再生を見ても何も分からず、開くとリスクが残るため、対象から外すか hidden で塗る判断が現実的です。同意の設計が固まっていない段階、再生を誰が見るか決まっていない段階も見送りです。始めるなら次の順序を勧めます。

  • 1. RUM を導入済みの 1 アプリに限定し、記録するセッションの割合を低く設定する
  • 2. 既定の Mask all のまま数日分を再生し、読めなくて困る箇所を書き出す
  • 3. 困る箇所だけ data-dd-privacy="allow" で開き、機微な領域は hidden で塗る
  • 4. 再生権限を持つロールを絞り、閲覧履歴の確認を運用に入れる
  • 5. 効果 (再現に掛かる時間の短縮) が見えた導線から対象を広げる
Session Replay を安全に始める順序 (筆者の整理)

再生には Dev Tools という組み込みのデバッグパネルがあり、再生中にリクエストや性能のボトルネックを追えます (2026 年 9 月時点・出典: Session Replay)。バグ再現の時間短縮という効果は、この順序で最初の 1 アプリから測るのが確実です。Synthetics が「誰もいない時間の見張り」なら、Session Replay は「いた人が何を見たか」の記録で、両者は補完関係にあります。画面の裏側の遅さは APM の領分です。

注意点

  • 本記事は 2026 年 9 月時点の公式ドキュメントの記載に基づいています。マスキングの既定値や設定名は SDK のバージョンで変わり得るため、実装時はお使いの SDK のドキュメントを優先してください。
  • 本記事は課金の仕組みを解説するものです。具体的な単価や料金は Datadog 公式の料金ページで確認してください。
  • 個人情報の取り扱いと同意取得の要否は、自組織の規程と法務の判断に従ってください。本記事は特定の法令への適合を保証するものではありません。
共有する