mcpField
F
firebase-remote-config

firebase-remote-config

github.com/evanca開発663167 回インストール3 週間前に更新
リポジトリ

firebase-remote-config について

Flutter で Firebase Remote Config を利用するためのガイドです。パラメーター管理、値の取得と有効化に加え、リアルタイム更新、ターゲティング、テストを扱います。

主な機能

  1. 01パラメーターのデフォルト値と型付き取得
  2. 02リモート値の取得と有効化
  3. 03リアルタイム設定変更の監視
  4. 04ターゲティングと A/B テストの設定
  5. 05スロットリングとオフライン時のフォールバック

活用シーン

  1. 01アプリ更新なしで機能フラグを変更
  2. 02アプリ起動時に更新設定を適用
  3. 03設定変更後に UI を更新
  4. 04選択したユーザー層向けの値をテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/evanca/flutter-ai-rules --skill firebase-remote-config

インストール後、Claude Code で/firebase-remote-configを入力して読み込まれたか確認します。

詳細

Firebase Remote Config スキル

このスキルでは、Flutter アプリケーションで Firebase Remote Config を正しく使用する方法を説明します。

使用する場面

次のような場合にこのスキルを使用します。

  • アプリを更新せずに、フィーチャーフラグやリモート設定を実装する場合。
  • パラメーターのデフォルト値を管理し、リモートの値を取得する場合。
  • 即時反映が可能なリアルタイム設定更新を実装する場合。
  • A/B テストやユーザーセグメントに対する条件付きターゲティングを設定する場合。

1. セットアップと設定

flutter pub add firebase_remote_config
flutter pub add firebase_analytics  # required for conditional targeting of app instances
import 'package:firebase_remote_config/firebase_remote_config.dart';

final remoteConfig = FirebaseRemoteConfig.instance;
  • ユーザープロパティとオーディエンスターゲティングのために、Firebase プロジェクトで Google Analytics を有効にします。
  • Remote Config REST API が無効になっていないことを確認します。SDK はこの API に依存しています。
  • macOS では、Xcode でキーチェーン共有を有効にします。

設定を構成します。

await remoteConfig.setConfigSettings(RemoteConfigSettings(
  fetchTimeout: const Duration(minutes: 1),
  minimumFetchInterval: const Duration(hours: 1),
));

2. パラメーターの管理

アプリ内のデフォルト値を設定します(バックエンドに接続する前に、アプリが意図したとおりに動作するようにします)。

await remoteConfig.setDefaults(const {
  "feature_new_onboarding": false,
  "max_retry_attempts": 3,
  "welcome_message": "Hello, world!",
  "promo_discount_pct": 0.0,
});

型に応じたゲッターで値を読み取ります。

final showNewOnboarding = remoteConfig.getBool("feature_new_onboarding");
final maxRetries = remoteConfig.getInt("max_retry_attempts");
final welcomeMsg = remoteConfig.getString("welcome_message");
final discount = remoteConfig.getDouble("promo_discount_pct");
  • Remote Config のキーや値に機密データを保存することは絶対に避けてください。エンドユーザーがアクセスできる可能性があります。
  • Firebase コンソールでは、アプリ内で使用するパラメーターと同じ名前を定義します。
  • 関連するパラメーターは共通のプレフィックスでグループ化します(例:login_timeout、login_attempts_max)。

3. 取得と有効化

await remoteConfig.fetchAndActivate();
  • fetchAndActivate() を使用すると、1 回の呼び出しで値を取得して適用できます。
  • または、値が反映されるタイミングを制御するために、fetch() と activate() を別々に呼び出します。
  • 快適なユーザーエクスペリエンスを実現するために、適切なタイミング(例:アプリの起動時)で取得した値を有効化します。
  • remoteConfig.lastFetchStatus を確認し、取得が成功、失敗、またはスロットリングされたかを判定します。
  • 取得に失敗しても適切に処理できるようにします。取得に失敗した場合は、デフォルト値が自動的に使用されます。

4. リアルタイム更新

remoteConfig.onConfigUpdated.listen((event) async {
  await remoteConfig.activate();
  // event.updatedKeys contains the changed parameter names
  if (event.updatedKeys.contains("feature_new_onboarding")) {
    // Refresh UI based on the new value
  }
});
  • リアルタイム Remote Config は Web では利用できません。
  • 新しい設定値が有効化されたら、UI の状態を更新します。
  • リアルタイム更新によって、ユーザーが操作中のワークフローが中断されないようにします。

5. スロットリングとパフォーマンス

  • アプリが短時間に何度も取得すると、取得呼び出しはスロットリングされます。
  • 本番環境におけるデフォルトの最小取得間隔は 12 時間です。
  • 開発時にはより短い間隔を使用します。ただし、デバッグビルドでのみ使用してください。
await remoteConfig.setConfigSettings(RemoteConfigSettings(
  fetchTimeout: const Duration(minutes: 1),
  minimumFetchInterval: const Duration(minutes: 5),
));
  • 多数のユーザーがいる場合は、サービス側のクォータ制限に注意してください。

6. テストとデバッグ

  • 新しいアプリのデプロイを行わずに設定をテストするには、Firebase コンソールで条件付きの値を使用します。
  • ユーザーセグメントごとに異なるパラメーター値を指定して、A/B テストを実装します。
  • デフォルト値とリモート値の両方でアプリをテストします。
  • 実行時の設定変更が適切に処理されることを確認します。
  • デフォルト値への適切なフォールバックを確認するため、オフライン時の動作をテストします。

参考資料

コメント