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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  6. Firebase in I/O 2019
    6

    View full-size slide

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

    View full-size slide

  8. 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 full-size slide

  9. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  12. New Audience Builder
    14

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  16. 今までのAudience Builder
    18

    View full-size slide

  17. 新しいAudience Builder
    19

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  26. Realtime Propagation of Remote Config Update
    28

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  31. 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 full-size slide

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

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

    View full-size slide

  33. 実装例〜Remote Config Propagation〜
    35

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  55. 参考資料
    - 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 full-size slide