Upgrade to Pro — share decks privately, control downloads, hide ads and more …

New features in RemoteConfig, Analytics at Google I/O 2019

New features in RemoteConfig, Analytics at Google I/O 2019

FJUG Google I/O 2019報告会で発表した資料です

yu mitsuhori

June 27, 2019
Tweet

More Decks by yu mitsuhori

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  6. Firebase in I/O 2019
    6

    View Slide

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

    View Slide

  8. 8

    View Slide

  9. 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

    View Slide

  10. 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

    View Slide

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

    View Slide

  12. 12

    View Slide

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

    View Slide

  14. New Audience Builder
    14

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. 今までのAudience Builder
    18

    View Slide

  19. 新しいAudience Builder
    19

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. Realtime Propagation of Remote Config Update
    28

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. Firebase Cloud Functionsについて
    - Firebase上で関数を実行できるサービス
    - GCPのCloud FunctionsをFirebaseで使えるようにしたも

    - 多くのイベントハンドラが用意されている
    - FireStore, RealtimeDatabase, Auth, Analytics, CloudStorage, Cloud
    Pub/Sub, Http, Remote Config
    33
    Cloud Functions
    for
    Firebase

    View Slide

  34. Firebase Cloud Messaging
    - プッシュ通知配信基盤サービス
    - Firebaseコンソールでは送信クライアントが用意されてい

    - Firebase AdminSDKを使うと、Cloud Functionsからも通
    知を送信することができる
    34
    Firebase
    Cloud
    Messaging

    View Slide

  35. 実装例〜Remote Config Propagation〜
    35

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  40. ①Remote Configの設定
    40
    RemoteConfigの更新

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  56. まとめ
    56

    View Slide

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

    View Slide

  58. 参考資料
    - 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

    View Slide