Firebase Instance IDの非推奨とInstallation IDへの移行
はじめに
Firebaseを長年利用している開発者にとって、Firebase Instance ID (IID) は馴染み深いものでした。しかし、このInstance IDは現在非推奨となり、Firebase Installation ID (FID) への移行が推奨されています。
本記事では、この変更の背景と、具体的な移行方法について解説します。
Firebase Installation ID (FID) とは何か
Firebase Installation ID (FID) は、Firebase Installationsサービスによって提供される、Firebaseアプリのインストールインスタンスごとに一意のIDです。Instance IDと同様に、特定のアプリインストールを識別するために使用されますが、よりプライバシーを重視し、現代のアプリ開発の要件に合わせて設計されています。
Instance IDがデバイス全体で共有される可能性があったのに対し、FIDはアプリのインストール単位で独立している点が大きな違いです。
なぜ移行が必要になったのか
Instance ID APIの非推奨化は、主に以下の理由によるものです。
- プライバシーの強化: ユーザーのプライバシー保護に関する要求が高まる中、より限定的なスコープでIDを管理する必要が出てきました。
- APIの簡素化: Firebase全体のAPIサーフェスを整理し、開発者がより直感的に利用できるようにする目的があります。
- 将来の拡張性: 新しいプラットフォームやデバイスへの対応を見据え、より柔軟なID管理の仕組みが必要とされました。
移行方法
多くのアプリでは、Firebase関連のSDKを最新バージョンに更新するだけで、自動的にInstallation IDが使用されるようになります。明示的にInstance ID APIを呼び出していない場合は、特別な対応は不要です。
しかし、FCMの登録トークン取得などで、以下のように FirebaseInstanceId
を直接参照しているコードがある場合は、修正が必要です。
修正が必要なコードの例 (Android/Kotlin)
// 修正前のコード
FirebaseInstanceId.getInstance().instanceId
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
// エラー処理
return@addOnCompleteListener
}
val token = task.result?.token
// トークンを利用する処理
}
修正後のコードの例 (Android/Kotlin)
FCMの登録トークンは FirebaseMessaging
を介して取得するのが現在の推奨方法です。
// 修正後のコード
FirebaseMessaging.getInstance().token
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
// エラー処理
return@addOnCompleteListener
}
val token = task.result
// トークンを利用する処理
}
iOSやFlutterなど、他のプラットフォームでも同様に、FirebaseMessaging
を介してトークンを取得するようにコードを修正する必要があります。
まとめ
Firebase Instance IDからInstallation IDへの移行は、プライバシーとAPIの近代化を目的とした重要な変更です。ほとんどの場合はSDKのアップデートで対応可能ですが、Instance ID APIを直接利用している箇所はコードの修正が必要となります。
Firebaseの公式ドキュメントを確認し、自身のプロジェクトが正しく対応できているか、この機会に一度確認してみることをお勧めします。
Discussion