July 2026: Bulk insert with SQL Connect, Flutter SDK, real time rollout with Remote Config, & more!
4分 44秒
Firebase 2023年7月リリースノート速報!開発効率と信頼性を高める新機能・アップデートを徹底解説
この記事は動画の内容を元にAIが生成したものです。正確な情報は元の動画をご確認ください。
ポイント
- •この記事は、2023年7月のFirebaseリリースノートから、開発効率向上、コスト削減、アプリ安定化に貢献する主要な新機能と改善点を解説します。
- •サーバーサイドAdmin SDKのスコープ指定、Flutter SDKでのFirestore計算オフロード、Android Crashlyticsのメモリ問題特定精度向上など、多岐にわたるアップデートを詳述。
- •Web向けRemote Configのリアルタイム更新やFCMのデバイスターゲティング変更も含まれ、Firebase開発者がより堅牢かつ効率的なアプリを構築するための最新情報を提供します。
2023年7月のFirebaseリリースノートが公開されました。今回のアップデートでは、バックエンドからSDKに至るまで、開発者の皆様にとって非常に重要な変更が多数含まれています。開発効率の向上、コスト削減、そしてアプリの安定性強化に貢献する新機能や改善点について、詳しく見ていきましょう。
1. Firebase Admin Node SDKの進化:関数スコープとタスクキューの改善
サーバーサイドJavaScript開発者向けに、Firebase Admin Node SDKが重要なアップデートを迎えました。新たに「関数スコープタイプ」が追加され、タスクキューメソッドが明示的なスコープ指定をサポートするようになりました。
明示的なスコープ指定による恩恵
これにより、タスクキューが現在のスコープ、グローバルスコープ、または特定の拡張機能に属するかどうかを明確に定義できるようになります。この変更は、Firebase Extensionsにおけるスコープ解決を最適化し、タスクの分離を改善します。さらに、開発者の皆様のコードを簡素化し、拡張機能としてデプロイされる場合でも、標準関数としてデプロイされる場合でも、同じコードベースで機能するように設計されています。
新しい「現在のスコープ(current scope)」を使用することで、SDKがコードの実行環境を動的に判別します。将来のアップデートとの互換性を確保するためにも、このスコープパターンを導入することを強くお勧めいたします。
2. Flutter SDKとFirestoreパイプライン:データベースでの計算処理を加速
Flutter開発者の皆様に向けて、Firestoreのデータ処理パイプラインをより強力にサポートするアップデートが提供されました。Flutter SDKは、以下の新しいパイプライン式に対応しています。
norcoalesceswitch ontimestamp difftimestamp extract
これらの式は、データベースに組み込まれた「計算ボタン」のように機能すると考えることができます。これにより、生のデータをダウンロードし、時間差の計算や条件付きロジックをローカルのJavaScriptコードで処理する代わりに、データベースサーバーに最終的な値を計算させてからデータをネットワーク経由で送信することが可能になります。
ユーザー体験とコスト削減への貢献
この機能により、ユーザーのスマートフォンから重い処理をオフロードし、バッテリー寿命の節約やデータ送信コスト(Egressコスト)の削減に貢献します。
3. Android Crashlyticsの強化:メモリ関連の問題をより正確に特定
Android 17以降を実行しているデバイス向けに、Crashlyticsが進化しました。Tombstone(クラッシュ時のシステムログ)を解析する機能が追加され、メモリ関連の終了を個別の問題としてグループ化できるようになりました。
デバッグ作業の効率化
この機能により、プラットフォームレベルの低メモリによる強制終了と、実際のアプリレベルでのメモリ不足例外(Out-Of-Memory exceptions; OOM)を区別することが可能になります。OSが単にRAMを解放するためにメモリを解放しているのか、それともアプリが実際にメモリリークを起こしているのかを正確に把握できるため、デバッグ作業の焦点を明確に定めることができます。
4. SQL Connectユーザー向けAdmin SDK:バッチインサートとallowディレクティブ
SQL Connectを利用されている皆様には、Admin SDKに二つの重要なアップデートが追加されました。
バッチインサートでデータ操作を高速化
Admin SDKが公式に「バッチインサート」をサポートしました。これにより、JSONオブジェクトや配列に対する一括挿入を単一のネットワークリクエストで行うことが可能になり、データ移行や大量データ投入のスクリプトを大幅に高速化できます。
allowディレクティブでセキュリティを強化
新しい一括書き込み機能が悪用されることを防ぐため、「allowディレクティブ」も導入されました。これにより、クライアントがバルク書き込みできるフィールドを明示的にロックダウンすることが可能です。例えば、ユーザーがプロファイル名を更新することは許可しつつ、管理用の列を変更することは厳しく防止するといった制御ができます。
また、allowディレクティブを使用して「max count」を設定することもできます。これは、単一のバッチリクエストで許可される最大アイテム数を制限するもので、悪意のあるアクターがデータベースに過剰な負荷をかけることを防ぐのに役立ちます。
5. Web向けRemote Configのリアルタイム更新:ユーザー体験を即座に同期
Web開発者の皆様でRemote Configをご利用の方に朗報です。JavaScript SDKにFirebase rollout metadataが追加され、新機能の段階的なリリース(フィーチャーロールアウト)に対するリアルタイム更新を完全にサポートするようになりました。
ユーザーへの変更適用が即座に
Firebaseコンソールで新機能を段階的にロールアウトしたり、パラメーターを変更したりする場合、ユーザーがページをリフレッシュしたりセッションを再開したりするのを待つ必要がなくなります。新しい設定はアクティブなユーザーにリアルタイムでプッシュされます。このメタデータイベントをリッスンすることで、UIの変更を即座にトリガーできるため、ABテストなども常に同期された状態を保つことができます。
6. Firebase Cloud Messaging (FCM)のデバイスターゲティング変更:より確実なメッセージ配信へ
Firebase Cloud Messaging(FCM)に関して、デバイスをターゲットにする方法の重要な変更があります。
レガシートークンからFIDへの移行
従来のトークンプロパティ、およびtoken messageとmulticast messageタイプが非推奨となりました。今後は、新しいFID messageとFID multicast messageタイプを使用して、永続的なFirebase Installation IDs(FIDs)をターゲットにする必要があります。
FIDsは、アプリのインストールに対する「永続的なIDバッジ」のようなもので、従来のデバイストークンが定期的にローテーションしたり期限切れになったりする可能性があるのに対し、より信頼性の高いルーティング先を提供します。
移行をサポートする機能
この移行を支援するため、send each for multicast関数はレガシートークンと新しいFIDsの両方をサポートするように更新されました。これにより、コードを更新している間もグループメッセージが中断することはありません。
まとめ
2023年7月のFirebaseリリースノートは、Firebaseのプラットフォーム全体の堅牢性と開発者エクスペリエンスを向上させる多数の重要なアップデートを含んでいます。
- Firebase Admin Node SDK:関数スコープとタスクキューの改善により、コードの簡素化と効率化が図れます。
- Flutter SDK:Firestoreパイプラインの強化により、データベース側での計算処理が可能になり、デバイスの負荷軽減とコスト削減に貢献します。
- Android Crashlytics:メモリ関連の問題をより正確に特定できるようになり、デバッグ作業が効率化されます。
- SQL Connectユーザー向けAdmin SDK:バッチインサートと
allowディレクティブにより、データ操作の高速化とセキュリティ強化が実現します。 - Web向けRemote Config:リアルタイム更新のサポートにより、ユーザー体験の即時同期とABテストの正確性が向上します。
- FCM:デバイスターゲティングの変更により、より信頼性の高いメッセージ配信が可能になります。
これらのアップデートを積極的に活用し、ご自身のアプリケーション開発をさらに加速させていきましょう。Firebaseは常に進化を続けていますので、今後もリリースノートを定期的にチェックしていくことをお勧めします。
参考動画
https://www.youtube.com/watch?v=n7e8WNOJnaM