FlutterアプリのFirebaseを再構築した話
— プロジェクト削除からリリースまで
Firebaseプロジェクトが削除されてもflutterfire configureで新プロジェクトに切り替えるだけで復旧できる。テストモードのルールは30日で期限切れになるため、必ず本番用に上書きすること。
TOITEのApp Store審査に向けて作業を進めていたところ、Firebaseプロジェクトが削除されていることが発覚した。この記事では、ゼロから再構築してリリースビルドに組み込むまでの手順をまとめる。
目標
新規Firebaseプロジェクト作成・flutterfire configure実行・DB&Storageのセキュリティルール設定・リリースビルドの4ステップで完了する。
- 新しいFirebaseプロジェクトを作成する
flutterfire configureでfirebase_options.dartを再生成する- Realtime Database と Storage を有効化し、本番用セキュリティルールを設定する
- ビルドしてTransporterでアップロードできる状態にする
1. Firebaseプロジェクトの新規作成
console.firebase.google.comで新規プロジェクトを作成し、iOSアプリを追加してバンドルIDを登録する。これで新しいプロジェクトIDが発行される。
作成後、iOS アプリを追加してバンドルIDを登録する。
2. flutterfire configure で再設定
flutterfire configureを実行し、新プロジェクトを選択するだけでfirebase_options.dartとGoogleService-Info.plistが自動更新される。既存のfirebase.jsonを使うと古いIDのままになるため必ず「n」を選ぶこと。
dart pub global activate flutterfire_cli
export PATH="$PATH":"$HOME/.pub-cache/bin"
プロジェクトルートで実行する。
cd /path/to/your/flutter/app
flutterfire configure
対話形式で進む。
- 既存の
firebase.jsonを使うか → n(新プロジェクトに切り替えるため) - プロジェクトを選択 → 作成した新しいプロジェクトを選ぶ
- 対象プラットフォーム → iOS のみ選択
完了すると lib/firebase_options.dart と ios/Runner/GoogleService-Info.plist が自動更新される。
注意: 既存の firebase.json を使うと古いプロジェクトIDのままになる。新プロジェクトに切り替える場合は必ず n を選択すること。
3. Realtime Database を有効化する
Firebaseコンソールでデータベースを作成し、テストモードのデフォルトルールは30日で期限切れになるため、即座に本番用ルールに上書きする。
Firebase コンソール → Realtime Database → 「データベースを作成」
- ロケーション:
asia-southeast1(シンガポール、日本から最も近い) - モード: テストモードで開始(後でルールを上書きする)
作成後、「ルール」タブで以下に書き換えて公開する。
{
"rules": {
"problems": {
".read": true,
".write": true
}
}
}
テストモードのデフォルトルールは30日で期限切れになるため、必ず上書きする。
4. Storage を有効化する
Storageをasia-southeast1で有効化し、storage.rulesでセキュリティルールを設定してfirebase deploy --only storageでデプロイする。
Firebase コンソール → Storage → 「始める」→ 同じく asia-southeast1 を選択。
セキュリティルールは storage.rules ファイルで管理する。
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /problems/{allPaths=**} {
allow write: if request.resource.size < 10 * 1024 * 1024
&& request.resource.contentType.matches('image/.*');
allow read: if true;
allow delete: if true;
}
}
}
CLIでデプロイする。
firebase deploy --only storage --project toite-ai
5. ビルドして確認
flutter build ipa --releaseがエラーなく通ればFirebaseの再接続は完了だ。その後TransporterでアップロードしてApp Store Connectで確認する。
flutter build ipa --release
まとめ
flutterfire configureで新プロジェクトに切り替えるだけで復旧できる。既存firebase.jsonを使わない・テストルールを本番用に上書きする、この2点を守れば確実だ。
- 既存の
firebase.jsonを使わず新規設定を選ぶ - テストモードのルールは必ず本番用に上書きする(30日で期限切れになるため)