どうもCTOです。 最近は狂ったようにカレーを食べ、ビールを飲み、VALORANTをやっています。 突然ですが金曜日なのでFirebaseの話をします。
アプリ開発でのFirebase
Firebaseは言わずもがな、モバイル開発に特化したプラットフォームで、実際の機能開発に必要なものだけでなく、それを販促するためのツールがいくつか提供されています。 その中でもよく使われているものとして下記の2つがあります。
非常に強力な機能で、準備も時間もかからず無料で利用できます。 どちらも「特定のイベントでプッシュ通知やアプリ内メッセージを訴求する」機能として提供されていますが、対象ユーザーの絞り込みやトリガーの設定などは仕込みが必要な難しいパターンもあるのでそこを今回は紹介します。ここを抑えておくことで、余計なリリースをすることなく事前に必要なイベントなどを想定できるようになると思います。
条件の設定
イベントでプッシュ通知やアプリ内メッセージを訴求する際には下記を設定します。
絞り込み条件
ユーザーを絞り込んで訴求したい場合に「利用国」「アプリバージョン」などFirebaseがよしなに処理してくれる条件もありますが、それ以外のサービス・アプリ固有な条件は自前で「ユーザーオーディエンス」などのようなユーザーの分類処理を実装する必要があります。この「ユーザーオーディエンス」には「サービスで利用しているコース」や「ユーザーの状態や何かしらのクラスタ」を登録しておくことで、この絞り込みをFirebaseのいろいろな機能で利用できます。
イベントトリガー
スケジュール設定において下記のように「特定のイベントをトリガー」とすることも可能です。
この2つを組み合わせて対象ユーザーを絞り込み特定のタイミングでプッシュ通知やアプリ内メッセージを表示しますが、この提供されている仕組みだとやりやすいものとそうじゃないものがあります。
絞り込みやすい
- 国やアプリのバージョンなどFirebaseが実装することなく自動で集計してくれる条件
- サービスのコースやプラン、オプションなど明確な条件(実装は必要)
- 単一のイベント(ex.ボタンを押した)など明確な条件(実装は必要)
こういったパターンは事前の仕込みは必要なものの、Firebaseを入れておりanalyticsの機能を使ってログを見るような前提があれば特に気にするケースはないかなと思います。
絞り込みにくい
複雑なロジックの組み合わせ条件
SQLのように対象者を絞り込んでどうこうするようなことができないので、条件が組み合わさるとクライアント側で複雑な実装やキャッシュをする必要があるので、そもそもそこまでして実施すべきかどうかというところから検討が必要・・・
例えば「XXという条件の人が、YYのタイミングでZZを実施した」タイミングをトリガーとしたいときは「ZZを実施した」というイベントだけでなく、「YYのタイミングでZZを実施した」というイベントの実装が事前に必要となります。
「XXしてない」という条件
これは「XXしている」人を対象外とすることで、排他的に対象を絞り込むことが可能です。 弊社のアプリを例に取ると
例)スピーキングテストアプリのPROGOSアプリで「まだスピーキングテストを受験してない未受験の人」で絞り込みたい
- アプリ利用時にユーザーを「YY」というユーザーオーディエンスへ登録する処理を実施
- ユーザーがアプリでスピーキングテストを受験したときに、このユーザーオーディエンス「YY」からそのユーザーを除くような処理を実施
これで「YY」というユーザーオーディエンスは常に未受験の人のみとなる。
これにはあくまでイベントはトリガーであり、それの実施されたかどうかをセグメントとした送信はできないという現状のFirebaseの制約があるためこういった工夫が必要になります。 最近は Remote Config が進化し、ABテスト以上にFirebase上でのユーザーのセグメンテーション機能は進化していますが、まだまだβ版なのでとりあえずはユーザーオーディエンス機能を使うのが良いかなと思います。 (同じようにPredictionsというチャーン予測した機能がありましたが他機能にマージされました。)
さいごに
こういった運用課題とも向き合いながらメキメキ受験者数を伸ばしているプロダクトとして弊社のPROGOSアプリがあります。
あまり外で話していないこちらの開発のアレコレを8/29(月)のイベントでもお話するのでぜひ聞きに来てください。
それでは良い週末を!プシュ!