flutter-firebase について
flutter-firebaseは、FlutterアプリでのFirebase設定と主要サービスの構成を扱う開発スキルです。認証、Firestore、通知、クラッシュレポート、分析、Remote Configに加え、セキュリティとテストの指針を示します。
主な機能
- 01Firebase初期化とflavor設定
- 02Repositoryを介した認証パターン
- 03型付きFirestoreアクセスとバッチ書き込み
- 04FCM通知の各状態への対応
- 05CrashlyticsとAnalyticsの設定
- 06Remote Configの初期値と取得方針
活用シーン
- 01FlutterアプリでFirebaseサービスを設定
- 02AuthRepositoryを通じた認証処理の整理
- 03Firestoreで型付きデータを永続化
- 04通知、クラッシュレポート、分析の設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dhruvanbhalara/ skills --skill flutter-firebaseインストール後、Claude Code で/flutter-firebaseを入力して読み込まれたか確認します。
詳細
Firebase のセットアップ
- 初期化には
firebase_coreを使用します。runApp()の前にFirebase.initializeApp()を呼び出してください - プラットフォーム固有のセットアップには
flutterfire configureを使用します - フレーバーごとに個別の Firebase プロジェクトを使用します(
app-configスキルを参照) - 一貫した DI のために、
injectableを介して Firebase サービスを登録します
認証
- ユーザー管理には
firebase_authを使用します - すべての認証呼び出しを
AuthRepositoryでラップします。BLoC や UI でFirebaseAuthを直接使用しないでください - 少なくともメールアドレス/パスワード、Google サインイン、Apple サインインをサポートします
AuthBloc内のFirebaseAuth.instance.authStateChanges()ストリームを介して認証状態の変化を処理します- 認証トークンは
flutter_secure_storageを介して保存します。SharedPreferencesやソースコードには決して保存しないでください - 適切なサインアウトを実装します。ローカルキャッシュをクリアし、ログイン画面に遷移し、ユーザー固有の BLoC を破棄します
Firestore
- リモートデータの永続化には
cloud_firestoreを使用します - DataSource はすべての Firestore 呼び出し(
get、set、update、delete、snapshots)をラップします fromFirestore/toFirestoreファクトリメソッドを備えた型付きモデルクラスを使用します- 型安全なコレクション参照には
.withConverter<T>()を優先します - 複数ドキュメントの操作にはバッチ書き込みを使用します。複数の逐次書き込みは決して行わないでください
- オフライン永続化を実装します(モバイルではデフォルトで有効)
セキュリティルール
- クライアント側の検証だけに決して頼らないでください。Firestore セキュリティルールでルールを適用します
- デフォルト拒否:
allow read, write: if false;から始めて、必要なものだけを開放します - 認証済みユーザー専用のコレクションでは、常に
request.auth != nullを検証します - デプロイ前に Firebase Emulator Suite でルールをテストします
プッシュ通知(FCM)
- プッシュ通知には
firebase_messagingを使用します - 通知権限は早めに、しかし丁寧にリクエストします(リクエストする前にその価値を説明します)
- フォアグラウンド、バックグラウンド、終了状態のメッセージを個別に処理します
- サーバー側でのターゲティングのために、FCM トークンを Firestore のユーザードキュメントに保存します
onTokenRefreshストリームでトークンを再登録します
Crashlytics
- クラッシュレポートには
firebase_crashlyticsを使用します - staging および production フレーバーでのみ有効にします。dev では無効にします
- Flutter エラーを記録します:
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError PlatformDispatcher.instance.onErrorを介して非同期エラーを捕捉します- ユーザーコンテキスト用のカスタムキーを追加します:
Crashlytics.instance.setCustomKey('userId', id)
アナリティクス
- ユーザー行動のトラッキングには
firebase_analyticsを使用します - 説明的な名前で意味のあるイベントをログに記録します:
analytics.logEvent(name: 'purchase_completed') - セグメンテーション用のユーザープロパティを設定します:
analytics.setUserProperty(name: 'plan', value: 'pro') GoRouter内のFirebaseAnalyticsObserverを介して画面ビューをトラッキングします- アナリティクスイベントに PII(メールアドレス、パスワード、電話番号)を決して記録しないでください
Remote Config
- フィーチャーフラグと A/B テストには
firebase_remote_configを使用します - ローカルで適切なデフォルト値を設定します。アプリは Remote Config を取得しなくても動作しなければなりません(MUST)
- アプリ起動時にタイムアウトのフォールバックを付けて取得およびアクティベートします
- スロットリングを避けるために、値をキャッシュし、最小取得間隔を守ります
コメント
Markdown 対応