Firebase Remote Config1を使用したウェブ側のABテストについて調査を行ったところ、IndexedDBの利用に関していくつか興味深い点が分かりました。ここでは、その内容を簡潔にまとめます。
1. Firebase Remote ConfigでIndexedDBの利用
IndexedDBとは
IndexedDBは、ブラウザに大容量のデータを保存するための仕組みです。Remote Configは、このIndexedDBを活用して一部のデータをローカルに保存しています2。
IndexedDBに保存されるデータ
Remote Configは、以下の情報をIndexedDBに保存しています:
- 認証用Token:特定のユーザーセッションに紐づけられたトークン
- Fetch間隔の設定値:サーバーにリクエストを送信する頻度を制御する値
- 前回のリクエスト時刻:サーバーから最後にデータを取得したタイミングを示す値
これらの情報を活用して、サーバーにリクエストを送るべきか判断しています。
Fetchの流れ
Remote Configは、データ取得時に次のような手順を踏みます:
-
IndexedDBから情報を取得
- Fetch間隔の設定値と前回リクエスト時刻を確認。
-
ローカルデータを使用するか決定
- Fetch間隔内であればIndexedDBのデータを返します。
- 間隔を超えていればサーバーにリクエストを送信します。
2. IndexedDB利用に関する懸念点
IndexedDBを手動で削除した場合
新しいユーザーと既存ユーザーをトークンによって区別しているため、IndexedDB内のデータ、特に認証用Tokenが削除されると、Remote Configは新たなユーザーとして扱われます。その結果、異なるABテストグループに割り振られる可能性があります。
ITP(Intelligent Tracking Prevention)の影響
一部のブラウザ(特にSafari)では、ITP(Intelligent Tracking Prevention)と呼ばれる個人情報保護機能が有効です。この機能により、スクリプトで書き込まれたストレージ(IndexedDBを含む)が7日間でクリアされることがあります。
ITPとは
ITPは、ユーザーのオンライン行動を追跡されないようにする仕組みです。SafariやWebKitが採用しており、以下のような動作を制御します:
- クッキーやローカルストレージの有効期間を短縮
- 一部のデータ保存を制限
IndexedDBの保存期間
IndexedDBは理論上、無期限にデータを保存可能です。しかし、ITPの影響でSafariでは保存期間が7日に制限される場合があります。このため、Remote Configのデータが定期的に削除される可能性があるのです34。
3. 結論
Firebase Remote Configは、簡単にABテストを導入できる非常に便利なツールです。ただし、IndexedDBの利用には注意が必要です。特に、ITPの影響を受けるブラウザ環境では、保存データが短期間で削除され、または手動で削除可能であること考慮してを考慮して運用を設計する必要があります。