<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RemoteConfig</title>
	<atom:link href="https://techgrowup.net/tag/remoteconfig/feed/" rel="self" type="application/rss+xml" />
	<link>https://techgrowup.net</link>
	<description>エンジニアを強くする</description>
	<lastBuildDate>Wed, 02 Oct 2024 10:31:26 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://techgrowup.net/wp-content/uploads/2021/05/hp-icon-150x150.png</url>
	<title>RemoteConfig</title>
	<link>https://techgrowup.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Flutter開発入門34 FlutterでFirebase Remote Configを設定する方法</title>
		<link>https://techgrowup.net/flutter-firebase-remote-config/</link>
					<comments>https://techgrowup.net/flutter-firebase-remote-config/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[techgrowup]]></dc:creator>
		<pubDate>Wed, 02 Oct 2024 10:31:24 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Dart]]></category>
		<category><![CDATA[Firebase]]></category>
		<category><![CDATA[RemoteConfig]]></category>
		<category><![CDATA[アプリ開発]]></category>
		<guid isPermaLink="false">https://techgrowup.net/?p=1898</guid>

					<description><![CDATA[はじめに 　Firebase Remote Configは、Googleが提供するクラウドベースの設定管理ツールで、アプリの設定や動作をリアルタイムで変更できる強力な機能です。FlutterアプリにFirebase Re [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">はじめに</h1>



<p class="wp-block-paragraph">　<strong>Firebase Remote Config</strong>は、Googleが提供するクラウドベースの設定管理ツールで、アプリの設定や動作をリアルタイムで変更できる強力な機能です。Flutterアプリに<strong>Firebase Remote Config</strong>を導入することで、アプリのアップデートを必要とせずに、設定をサーバー側からコントロールできるようになります。たとえば、UIのカスタマイズやプロモーション情報の変更、特定機能の有効化/無効化をリモートで行うことが可能です。</p>



<p class="wp-block-paragraph">　本記事では、Flutterで<strong>Firebase Remote Config</strong>を利用する方法をステップバイステップで解説します。Remote Configを活用して、アプリの柔軟性を高め、ユーザーエクスペリエンスを向上させる手順を紹介します。</p>



<h2 class="wp-block-heading">Firebase Remote Configとは</h2>



<p class="wp-block-paragraph">　<strong>Firebase Remote Config</strong>は、アプリの設定をサーバー側から管理できるツールです。アプリのリリース後でも、簡単に設定を変更できるため、開発者はアプリを再リリースすることなく、新しい機能やデザインを実装できます。</p>



<h3 class="wp-block-heading">Firebase Remote Configの主な特徴：</h3>



<ul class="wp-block-list">
<li><strong>シンプルな実装</strong>：Firebaseコンソールから簡単に設定変更ができ、開発者がリリース後も柔軟にアプリを管理可能。</li>



<li><strong>リアルタイム設定変更</strong>：ユーザーにアプリを再インストールさせることなく、設定やUIを変更可能。</li>



<li><strong>A/Bテストとの統合</strong>：Firebase A/Bテストと組み合わせて、ユーザーごとに異なる設定をテスト。</li>



<li><strong>条件付き設定</strong>：地域や言語、デバイス、ユーザーの行動に応じて異なる設定を配信。</li>
</ul>



<div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading">前提条件</h2>



<p class="wp-block-paragraph">　Firebase AuthenticationをFlutterアプリに組み込むためには、以下が必要です：</p>



<ul class="wp-block-list">
<li><strong>Firebaseプロジェクト</strong>（Firebase Consoleで作成済み）</li>



<li><strong>Flutter SDK</strong>がインストールされている</li>



<li><strong>FlutterFire CLI</strong>が設定済み</li>
</ul>



<p class="wp-block-paragraph">　まだ完了していない方は以下の記事を参考にFirbeaseを導入してください。</p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-techgrowup wp-block-embed-techgrowup"><div class="wp-block-embed__wrapper">

<a target="_self" href="https://techgrowup.net/flutter-firebase-setup" title="Flutter開発入門29 FlutterFireを使ってFirebaseをFlutterにセットアップする方法" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://techgrowup.net/wp-content/uploads/2024/09/flutter-firebase-setup-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://techgrowup.net/wp-content/uploads/2024/09/flutter-firebase-setup-160x90.webp 160w, https://techgrowup.net/wp-content/uploads/2024/09/flutter-firebase-setup-1024x585.webp 1024w, https://techgrowup.net/wp-content/uploads/2024/09/flutter-firebase-setup-768x439.webp 768w, https://techgrowup.net/wp-content/uploads/2024/09/flutter-firebase-setup-120x68.webp 120w, https://techgrowup.net/wp-content/uploads/2024/09/flutter-firebase-setup-320x180.webp 320w, https://techgrowup.net/wp-content/uploads/2024/09/flutter-firebase-setup-376x212.webp 376w, https://techgrowup.net/wp-content/uploads/2024/09/flutter-firebase-setup.webp 1200w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">Flutter開発入門29 FlutterFireを使ってFirebaseをFlutterにセットアップする方法</div><div class="blogcard-snippet internal-blogcard-snippet">FlutterFireを使って、FlutterアプリにFirebaseをセットアップする方法を詳しく解説。Firebaseの認証、クラウド機能の導入をステップごとに説明します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://techgrowup.net" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">techgrowup.net</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.09.22</div></div></div></div></a>
</div></figure>



<h2 class="wp-block-heading">ステップ1 : <code>firebase_remote_config</code>パッケージのインストール</h2>
</div>



<p class="wp-block-paragraph">　FlutterアプリでRemote Configを使用するために、<code>firebase_remote_config</code>パッケージをインストールします。　   <code>pubspec.yaml</code>**ファイルを開いて、以下の依存関係を追加します。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="dependencies:
  firebase_core: ^3.5.0
  firebase_remote_config: ^5.1.3" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">dependencies</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">firebase_core</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">^3.5.0</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">firebase_remote_config</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">^5.1.3</span></span></code></pre></div>



<p class="wp-block-paragraph">　依存パッケージをインストールします。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="flutter pub get" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">flutter</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">pub</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">get</span></span></code></pre></div>



<h2 class="wp-block-heading">ステップ2 : Firebase Remote Configの初期設定</h2>



<h4 class="wp-block-heading">2.1 Firebaseの初期化</h4>



<p class="wp-block-paragraph">　<code>lib/main.dart</code>ファイルにFirebaseの初期化コードを追加します。<code>firebase_options.dart</code>はFlutterFire CLIで自動生成されます。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_remote_config/firebase_remote_config.dart';
import 'firebase_options.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Remote Config Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: RemoteConfigDemo(),
    );
  }
}" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">import</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;package:flutter/material.dart&#39;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">import</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;package:firebase_core/firebase_core.dart&#39;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">import</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;package:firebase_remote_config/firebase_remote_config.dart&#39;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">import</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;firebase_options.dart&#39;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">main</span><span style="color: #D4D4D4">() </span><span style="color: #C586C0">async</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #4EC9B0">WidgetsFlutterBinding</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">ensureInitialized</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">Firebase</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">initializeApp</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">    options: </span><span style="color: #4EC9B0">DefaultFirebaseOptions</span><span style="color: #D4D4D4">.currentPlatform,</span></span>
<span class="line"><span style="color: #D4D4D4">  );</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #DCDCAA">runApp</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">MyApp</span><span style="color: #D4D4D4">());</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">MyApp</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">extends</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">StatelessWidget</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">@override</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #4EC9B0">Widget</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">build</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">BuildContext</span><span style="color: #D4D4D4"> context) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">MaterialApp</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">      title: </span><span style="color: #CE9178">&#39;Remote Config Demo&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">      theme: </span><span style="color: #4EC9B0">ThemeData</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">        primarySwatch: </span><span style="color: #4EC9B0">Colors</span><span style="color: #D4D4D4">.blue,</span></span>
<span class="line"><span style="color: #D4D4D4">      ),</span></span>
<span class="line"><span style="color: #D4D4D4">      home: </span><span style="color: #4EC9B0">RemoteConfigDemo</span><span style="color: #D4D4D4">(),</span></span>
<span class="line"><span style="color: #D4D4D4">    );</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<h4 class="wp-block-heading">2.2 Remote Configのデフォルト設定とデータ取得</h4>



<p class="wp-block-paragraph">　Remote Configのデフォルト設定をコード内で設定し、Firebaseサーバーからリモート設定を取得します。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="import 'package:firebase_remote_config/firebase_remote_config.dart';
import 'package:flutter/material.dart';

class RemoteConfigDemo extends StatefulWidget {
  @override
  _RemoteConfigDemoState createState() =&gt; _RemoteConfigDemoState();
}

class _RemoteConfigDemoState extends State&lt;RemoteConfigDemo&gt; {
  final FirebaseRemoteConfig _remoteConfig = FirebaseRemoteConfig.instance;
  String welcomeMessage = &quot;Loading...&quot;;

  @override
  void initState() {
    super.initState();
    _initializeRemoteConfig();
  }

  Future&lt;void&gt; _initializeRemoteConfig() async {
    try {
      // デフォルト値の設定
      await _remoteConfig.setDefaults(&lt;String, dynamic&gt;{
        'welcome_message': 'Welcome to our app!',
      });

      // リモート設定の取得
      await _remoteConfig.setConfigSettings(
        RemoteConfigSettings(
          fetchTimeout: const Duration(seconds: 10),
          minimumFetchInterval: Duration.zero,
        ),
      );
      await _remoteConfig.fetchAndActivate();
      setState(() {
        welcomeMessage = _remoteConfig.getString('welcome_message');
      });
    } catch (e) {
      setState(() {
        welcomeMessage = &quot;Failed to fetch remote config.&quot;;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Remote Config Demo'),
      ),
      body: Center(
        child: Text(
          welcomeMessage,
          style: TextStyle(fontSize: 24),
        ),
      ),
    );
  }
}
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">import</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;package:firebase_remote_config/firebase_remote_config.dart&#39;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #569CD6">import</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;package:flutter/material.dart&#39;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">RemoteConfigDemo</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">extends</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">StatefulWidget</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">@override</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #4EC9B0">_RemoteConfigDemoState</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">createState</span><span style="color: #D4D4D4">() =&gt; </span><span style="color: #4EC9B0">_RemoteConfigDemoState</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">_RemoteConfigDemoState</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">extends</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">State</span><span style="color: #D4D4D4">&lt;</span><span style="color: #4EC9B0">RemoteConfigDemo</span><span style="color: #D4D4D4">&gt; {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">final</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">FirebaseRemoteConfig</span><span style="color: #D4D4D4"> _remoteConfig = </span><span style="color: #4EC9B0">FirebaseRemoteConfig</span><span style="color: #D4D4D4">.instance;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #4EC9B0">String</span><span style="color: #D4D4D4"> welcomeMessage = </span><span style="color: #CE9178">&quot;Loading...&quot;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">@override</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">initState</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">super</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">initState</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">_initializeRemoteConfig</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #4EC9B0">Future</span><span style="color: #D4D4D4">&lt;</span><span style="color: #569CD6">void</span><span style="color: #D4D4D4">&gt; </span><span style="color: #DCDCAA">_initializeRemoteConfig</span><span style="color: #D4D4D4">() </span><span style="color: #C586C0">async</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">try</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #6A9955">// デフォルト値の設定</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> _remoteConfig.</span><span style="color: #DCDCAA">setDefaults</span><span style="color: #D4D4D4">(&lt;</span><span style="color: #4EC9B0">String</span><span style="color: #D4D4D4">, </span><span style="color: #4EC9B0">dynamic</span><span style="color: #D4D4D4">&gt;{</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">&#39;welcome_message&#39;</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">&#39;Welcome to our app!&#39;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">      });</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #6A9955">// リモート設定の取得</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> _remoteConfig.</span><span style="color: #DCDCAA">setConfigSettings</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #4EC9B0">RemoteConfigSettings</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">          fetchTimeout: </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">Duration</span><span style="color: #D4D4D4">(seconds: </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">          minimumFetchInterval: </span><span style="color: #4EC9B0">Duration</span><span style="color: #D4D4D4">.zero,</span></span>
<span class="line"><span style="color: #D4D4D4">        ),</span></span>
<span class="line"><span style="color: #D4D4D4">      );</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #C586C0">await</span><span style="color: #D4D4D4"> _remoteConfig.</span><span style="color: #DCDCAA">fetchAndActivate</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #DCDCAA">setState</span><span style="color: #D4D4D4">(() {</span></span>
<span class="line"><span style="color: #D4D4D4">        welcomeMessage = _remoteConfig.</span><span style="color: #DCDCAA">getString</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;welcome_message&#39;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">      });</span></span>
<span class="line"><span style="color: #D4D4D4">    } </span><span style="color: #C586C0">catch</span><span style="color: #D4D4D4"> (e) {</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #DCDCAA">setState</span><span style="color: #D4D4D4">(() {</span></span>
<span class="line"><span style="color: #D4D4D4">        welcomeMessage = </span><span style="color: #CE9178">&quot;Failed to fetch remote config.&quot;</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">      });</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">@override</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #4EC9B0">Widget</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">build</span><span style="color: #D4D4D4">(</span><span style="color: #4EC9B0">BuildContext</span><span style="color: #D4D4D4"> context) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">Scaffold</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">      appBar: </span><span style="color: #4EC9B0">AppBar</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">        title: </span><span style="color: #4EC9B0">Text</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;Remote Config Demo&#39;</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">      ),</span></span>
<span class="line"><span style="color: #D4D4D4">      body: </span><span style="color: #4EC9B0">Center</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">        child: </span><span style="color: #4EC9B0">Text</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">          welcomeMessage,</span></span>
<span class="line"><span style="color: #D4D4D4">          style: </span><span style="color: #4EC9B0">TextStyle</span><span style="color: #D4D4D4">(fontSize: </span><span style="color: #B5CEA8">24</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">        ),</span></span>
<span class="line"><span style="color: #D4D4D4">      ),</span></span>
<span class="line"><span style="color: #D4D4D4">    );</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span></code></pre></div>



<h5 class="wp-block-heading">解説：</h5>



<ul class="wp-block-list">
<li><strong><code>setDefaults</code></strong>: デフォルトの設定値をアプリ内で定義。</li>



<li>setConfigSettings: 取得するときのタイムアウト等を設定。</li>



<li><strong><code>fetchAndActivate</code></strong>: Firebaseサーバーからリモート設定を取得し、アクティブ化。</li>



<li><strong><code>getString</code></strong>: Remote Configで設定した文字列を取得。</li>
</ul>



<h2 class="wp-block-heading">ステップ3 : FirebaseコンソールでRemote Configの設定を管理</h2>



<h3 class="wp-block-heading">3.1 Firebaseコンソールでパラメータを設定</h3>



<ol class="wp-block-list">
<li><strong>Firebaseコンソール</strong>で「Remote Config」を選択し、「<strong>パラメータを追加</strong>」をクリック。</li>



<li>パラメータ名を「<code>welcome_message</code>」に設定し、メッセージの内容を入力します。</li>



<li>設定を保存し、アプリをリロードすると、新しいメッセージが表示されます。</li>
</ol>



<h3 class="wp-block-heading">3.2 条件付きパラメータの設定</h3>



<p class="wp-block-paragraph">　ユーザーの地域やデバイス、アプリのバージョンに応じて異なる設定を適用するために、<strong>条件付きパラメータ</strong>を設定することも可能です。</p>



<h2 class="wp-block-heading">Firebase Remote Configの活用例</h2>



<h6 class="wp-block-heading">1. <strong>UIのリアルタイム変更</strong></h6>



<p class="wp-block-paragraph">Remote Configを使って、アプリのUIデザインやテーマカラーをリアルタイムで変更し、季節ごとやイベントに応じたデザインにアップデートできます。</p>



<h6 class="wp-block-heading">2. <strong>A/Bテストの実施</strong></h6>



<p class="wp-block-paragraph">特定のユーザーセグメントに対して異なる設定を提供し、どちらのバージョンがユーザーに好まれるかテスト可能です。</p>



<h6 class="wp-block-heading">3. <strong>プロモーションの動的表示</strong></h6>



<p class="wp-block-paragraph">特定の期間や地域に合わせて、プロモーションバナーやメッセージをRemote Configで管理し、アプリ内で表示内容を変更できます。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">　<strong>Firebase Remote Config</strong>をFlutterアプリに導入することで、アプリを再リリースすることなく、設定やデザインをリアルタイムで変更できるようになります。これにより、ユーザー体験の向上や、柔軟なプロモーションの実施が可能です。また、A/Bテストや地域別の設定変更を活用することで、よりパーソナライズされた体験をユーザーに提供することができます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://techgrowup.net/flutter-firebase-remote-config/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: techgrowup.net @ 2026-06-16 22:08:28 by W3 Total Cache
-->