開発

FlutterアプリのFirebaseを再構築した話
— プロジェクト削除からリリースまで

· SEADICE

Firebaseプロジェクトが削除されてもflutterfire configureで新プロジェクトに切り替えるだけで復旧できる。テストモードのルールは30日で期限切れになるため、必ず本番用に上書きすること。

TOITEのApp Store審査に向けて作業を進めていたところ、Firebaseプロジェクトが削除されていることが発覚した。この記事では、ゼロから再構築してリリースビルドに組み込むまでの手順をまとめる。

目標

新規Firebaseプロジェクト作成・flutterfire configure実行・DB&Storageのセキュリティルール設定・リリースビルドの4ステップで完了する。

1. Firebaseプロジェクトの新規作成

console.firebase.google.comで新規プロジェクトを作成し、iOSアプリを追加してバンドルIDを登録する。これで新しいプロジェクトIDが発行される。

作成後、iOS アプリを追加してバンドルIDを登録する。

2. flutterfire configure で再設定

flutterfire configureを実行し、新プロジェクトを選択するだけでfirebase_options.dartGoogleService-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

対話形式で進む。

完了すると lib/firebase_options.dartios/Runner/GoogleService-Info.plist が自動更新される。

注意: 既存の firebase.json を使うと古いプロジェクトIDのままになる。新プロジェクトに切り替える場合は必ず n を選択すること。

3. Realtime Database を有効化する

Firebaseコンソールでデータベースを作成し、テストモードのデフォルトルールは30日で期限切れになるため、即座に本番用ルールに上書きする。

Firebase コンソール → Realtime Database → 「データベースを作成」

作成後、「ルール」タブで以下に書き換えて公開する。

{
  "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点を守れば確実だ。

← ブログ一覧に戻る