Slide 1

Slide 1 text

New features in RemoteConfig & Analytics at Google I/O 2019 FJUG Google I/O 報告会 養命酒/@1013Youmeee

Slide 2

Slide 2 text

自己紹介 - 三堀 裕(みつほり ゆう) - 養命酒(youmeee, youmitsu) - メインはAndroid - 新宿の隣でヘルスケア系アプリを開発しています。 - Github: youmitsu - Twitter: @1013Youmeee 2 2

Slide 3

Slide 3 text

I/O 2019行ってきました 3

Slide 4

Slide 4 text

この発表で紹介すること - Google I/O 2019で紹介されたRemoteConfig, Analytics周りの技術の紹介 - セッションの内容をベースに興味を持った技術、新技術について紹介していきます 4

Slide 5

Slide 5 text

私がなぜここにいるのか - I/O 2019に参加した - 前回のFirebase Meetup#13でRemoteConfig、UserPropertyを利用したプッシュ通知 についてLTをさせていただいた - コキチーズさんと懇親会でお話しさせていただいて、I/O報告会するので登壇してみ ないかと誘われた - I/Oに関するLTは社外ではやっていなかったため良い機会だと思った みなさまに有用な情報をお届けできるように頑張ります 5

Slide 6

Slide 6 text

Firebase in I/O 2019 6

Slide 7

Slide 7 text

What’s new in Firebase - Firebaseの新機能について紹介さ れたセッション - 以下の3つのコンセプト - Build better apps - Improve app quality - Drive user engagement 7

Slide 8

Slide 8 text

8

Slide 9

Slide 9 text

Build better apps - よりアプリの実装を簡単にするための新たな機能の紹介 - ML Kit - Object Detection API, Tracking API - Auto ML Vision Edge - Firestore - Collection Group - Functions - Scheduled functions - Emulator - Remote Config Event 9

Slide 10

Slide 10 text

Improve app quality - クラッシュやANRなどが少なくするようアプリの品質を改善していく - Test Labs - Wear OS, App Bundle support - Firebase Performance Monitoring - Web support - Big query Integration - Crashlytics - Migration from fabric - Big query integration 10

Slide 11

Slide 11 text

Drive user engagement - 安定してきたらユーザーのエンゲージメントを生み出すためのビジネス施策を実施 していく - Google Analytics for Firebase - Flexible filtering - New audience builder 11

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

こちらについて詳解していきます - New Audience Builder - Realtime Propagation of Remote Config Update 13

Slide 14

Slide 14 text

New Audience Builder 14

Slide 15

Slide 15 text

Google Analytics for Firebase - Firebase向けに最適化されたGoogle Analytics - アプリの使用状況とユーザー エンゲージメントについて分析するこ とができる、無料のアプリ測定ソリューション - アプリにカスタムイベントを仕込んだり、プロパティを定義して、セ グメンテーションしたりすることも可能 15 Google Analytics for Firebase

Slide 16

Slide 16 text

Audience - ユーザーを特定の意味のある塊でまとめて管理できる - Audience Builderを使って構築する 16

Slide 17

Slide 17 text

新しいAudienceのコンセプト 17 Dynamic Evaluation Membership duration Exclusion

Slide 18

Slide 18 text

今までのAudience Builder 18

Slide 19

Slide 19 text

新しいAudience Builder 19

Slide 20

Slide 20 text

Audience Builder in new UI 〜Audienceの作成方法の選択〜 20 カスタムの条件でオーディエンス を作成する場合 Firebaseから提案されたものを 選択可能

Slide 21

Slide 21 text

Audienceに含める条件、有効期間の設定 〜例:Tutorialを始めたユーザをグループ化〜 21 ↑と↗の条件に 該当するユーザ数 グループに 含めたい条件を設定 グループに含める期 間の指定 (1~540) 最大値に設定 該当する セッション数

Slide 22

Slide 22 text

Audienceに含めない条件(除外グループ)の設定 〜例:Tutorialを終えていないユーザを除外〜 22 グループに 含めたくない条件を設定 除外された ユーザー数も 表示される 次の条件に当てはまるユーザーを 一時的に除外する 現時点で条件を満たすユーザを対象(動的) 次の条件に当てはまるユーザーを 完全に除外する 一度でも満たしたユーザを対象(静的)

Slide 23

Slide 23 text

設定可能な細かい条件 ディメンション 23 指標 イベント 【LTV】期間で指定も可能 【ディメンション】 指定あり:動的 指定なし:静的 【イベント】 期間で指定も可能 以下が選択可能

Slide 24

Slide 24 text

条件をシーケンスとして設定 〜イベントの一連の流れをまとめて条件に設定可能〜 (例)アプリを最初に開いたあと 課金をしたユーザ 24 シーケンスの追加はここから行う 時間の制約をつけることも可能

Slide 25

Slide 25 text

作成したAudienceはフィルタリングに使用可能 - Dashboard - Events - Conversions - Funnels 25

Slide 26

Slide 26 text

作成したオーディエンスをターゲットにプッシュ通知を 送信することもできる 26 作成したAudienceを 指定可能

Slide 27

Slide 27 text

- Understand and Engage Your Top Users with Dynamic Audiences - https://youtu.be/ouZkadjMn94 27 こちらのセッションでも紹介されています

Slide 28

Slide 28 text

Realtime Propagation of Remote Config Update 28

Slide 29

Slide 29 text

Firebase Remote Config - 環境変数的なConfig値をクラウドを通じてクライアントに 配信することができる - ユーザの割合や、ロケールなどの条件を使って、配信 するConfig値を変えることが可能 - ABテストにも利用できる 29 Remote Config

Slide 30

Slide 30 text

Remote Configの利用例 〜表示画像URLをOS、ロケールごとに分ける〜 French English

Slide 31

Slide 31 text

Remote Config Update Propagation - Remote Config の変更を即時にアプリ側に伝搬させ最新のConfigを取得できるよう にする仕組み - キャンペーンを打つ際など即時性が要求されるケースで有用 - Remote Config Eventを使う 31

Slide 32

Slide 32 text

Remote Config Event - Remote Configの設定更新時にCloud Functionsでイベントを受け取ることができる - Firebase Summit 2018で発表された 32

Slide 33

Slide 33 text

Firebase Cloud Functionsについて - Firebase上で関数を実行できるサービス - GCPのCloud FunctionsをFirebaseで使えるようにしたも の - 多くのイベントハンドラが用意されている - FireStore, RealtimeDatabase, Auth, Analytics, CloudStorage, Cloud Pub/Sub, Http, Remote Config 33 Cloud Functions for Firebase

Slide 34

Slide 34 text

Firebase Cloud Messaging - プッシュ通知配信基盤サービス - Firebaseコンソールでは送信クライアントが用意されてい る - Firebase AdminSDKを使うと、Cloud Functionsからも通 知を送信することができる 34 Firebase Cloud Messaging

Slide 35

Slide 35 text

実装例〜Remote Config Propagation〜 35

Slide 36

Slide 36 text

何が美味しいか - 本番環境ではfetchのキャッシュ有効時間(デフォルト12時間)が設定されるため、 RemoteConfigの更新を即時反映することが難しかった。 - RemoteConfigの値が変更された瞬間にアプリ側で新たなConfig値を取得すること が可能 - I/O19ではゲームのポイントなどを増量するキャンペーンを実施するデモにて利用さ れていた 36

Slide 37

Slide 37 text

実装してみる〜Remote Config Propagation〜 37

Slide 38

Slide 38 text

実装するもの 〜スプラッシュをクリスマス限定デザインにする〜 1. アプリ起動時にSplash画面を表示する 2. Splashの画像URL、タイトル、メッセージはRemoteConfigの値を参照 3. RemoteConfigに変更があった瞬間にアプリに通知し、新たなConfig値を取得 4. 次回アプリ起動時にSplashがクリスマス限定デザインに更新される ※Androidアプリでの実装の紹介になります 38

Slide 39

Slide 39 text

要するにこうなります 39 RemoteConfigを更新 通常時 限定デザイン時

Slide 40

Slide 40 text

①Remote Configの設定 40 RemoteConfigの更新

Slide 41

Slide 41 text

①Remote Configの設定 〜コンソールにてConfigを定義〜 41 Configの更新

Slide 42

Slide 42 text

②Remote Config Eventを受け取る 42 RemoteConfigの更新を トリガーにFunctionを実行する

Slide 43

Slide 43 text

②Remote Config Eventを受け取る 〜Functionの作成〜 43 - 関数の作成はこちらを参照 https://firebase.google.com/docs/functions/get-started?hl=ja - onUpdate()というメソッドの引数にコールバックを定義 - versionMetadataの中身は。。。 RemoteConfigのversion情報や更 新時間などの情報が入っている

Slide 44

Slide 44 text

③FunctionsからAppへConfigの更新通知 44 FCMでプッシュ通知を アプリに送信する

Slide 45

Slide 45 text

③FunctionsからFCMを送る 〜AdminSDKでプッシュ送信〜 45 通知に含めるデータを記述 ・topic: 通知の種類 (アプリ側で受け取るか否かを指定) ・data: CONFIG_STATEは RemoteConfigの更新を表すフラグ プッシュ通知を 送信

Slide 46

Slide 46 text

46 ③FunctionsからFCMを送る 〜Appで通知受け取るための準備〜 Manifestに通知受け取り用 Serviceを定義 通知受け取り用Serviceを定義

Slide 47

Slide 47 text

③FunctionsからFCMを送る 〜AppでTopicのSubscribe〜 - PUSH_RCのTopicをSubscribe - PUSH通知送信クライアントが PUSH_RCのトピックを指定している通知のみ受け取る 47

Slide 48

Slide 48 text

④AppのストレージにStaleフラグを立てる 48 Remote Configの値が 古いことを表す フラグをtrueにする

Slide 49

Slide 49 text

49 ④AppのストレージにStaleフラグを立てる 〜通知のデータからConfig更新フラグを保存 - アプリ内ストレージのStaleフラグを更新する - Android: SharedPreferences, iOS: UserDefault - Staleフラグ:RemoteConfigの値が古くなったことを表す Staleフラグをtrueにする Cloud Functionで指定した データペイロード

Slide 50

Slide 50 text

⑤最新のRemoteConfigをfetchする 50 最新のConfigを取得する

Slide 51

Slide 51 text

⑤最新のRemoteConfigをfetchする 〜RemoteConfigのキャッシュ有効時間の設定〜 51 アプリ内ストレージの Staleフラグを参照 true: 古い => 最新を取得(0ms) false: 新しい =>そのまま(12時間)

Slide 52

Slide 52 text

⑤最新のRemoteConfigをfetchする 〜最新のConfigを取得=>画面反映〜 52 取得したConfigを使って 画面反映 取得したあとは Staleフラグをfalseに戻す RemoteConfigの値を取得

Slide 53

Slide 53 text

結果こうなります 53 RemoteConfigを更新 通常時 限定デザイン時

Slide 54

Slide 54 text

注意点 - FCM経由で更新を知らせるためプッシュ通知受信をオフにしているユーザは即時反 映されない - 実際にSplashに適用する際は、レイテンシがあるので、ローカル内に画像を持たせ て、IDだけをRemoteConfig経由で渡すようにした方が良いと思います。 54

Slide 55

Slide 55 text

デモ(時間があれば) - ソースコードはこちら https://github.com/youmitsu/HatenaRssReaderApp 55

Slide 56

Slide 56 text

まとめ 56

Slide 57

Slide 57 text

まとめ - I/O19では、実際の開発ストーリーに沿ってFirebaseをアプリのグロース施策に役立 てるための方法が紹介されていた。 - より優れたアプリを開発 > アプリの品質を改善 > ユーザを分析しビジネス施策を実施 - Remote Config Eventを使うとRemote Configの変更を即時にアプリ側に伝え、新た なConfig値を取得することができる - Audience BuilderはUIが新しくなり、より柔軟かつ活用的になっている - 動的評価、除外グループ、有効期間 57

Slide 58

Slide 58 text

参考資料 - Google I/O 2019 での Firebase の新機能(Google Developers Japan) - https://developers-jp.googleblog.com/2019/06/google-io-2019-firebase.html - ユーザーリスト(Firebase ヘルプ) - https://support.google.com/firebase/answer/6317509?hl=ja - セッション動画 - Understand and Engage Your Top Users with Dynamic Audiences https://youtu.be/ouZkadjMn94 - What's New in Firebase https://youtu.be/x8qTEMkZCPs - Engage and Keep Your Users in Your App with Firebase https://youtu.be/Bg1Kb-mMnAM 58