Firebaseをやめた4つの理由

  • 187
    Like
  • 0
    Comment

最近、Firebaseがいいみたいになってるけど、2017年4月時点では、あんまり良くないと思っています。
そんな記事です。

前提

全ての状況で良くないわけではなくて、以下の前提がある場合です。

  • 技術者でない人、例えば企画がPush通知を送りたい。
  • ユーザをセグメント分けして、対象のセグメントだけに送りたい。
  • お金はかけたくない。

駄目だと感じたところ

セグメントが上書きされない

ほぼ、これに尽きます。

Firebaseではユーザの属性情報(例えば、職業とか性別とか)は、ユーザプロパティと呼んでいます。
これを使ってセグメント別にPushを送りたいところです。

普通の感覚だと属性が変更になれば、上書きされると思いますが、Firebaseでは積み上げ式です。

Firebaseヘルプには以下のように書いてあります。

非可変属性のプロパティを使用してください。

つまり、一度登録したユーザプロパティは変更されず、残り続けます。違うユーザプロパティを設定してもレコードが追加されるだけです。
なので、例えば、以下のストーリーのようにうまくいきません。

  1. Aさんが、アプリ上で、職業を「IT技術者」から「販売員」に変更。
  2. サービス側が、通知で「IT技術者」のための通知を送りたい。
  3. Aさんにも通知が届いてしまう。

集計が始めるのが遅すぎる

Firebaseでは、例えば、ユーザリストといって、ユーザをグループ分けできます。
例えば、「ユーザプロパティの職業=大学生 && 性別=女」を「女子大生」としてユーザリストを作り、それに対して通知を送ることができます。

ただ、これの反映が遅すぎる。まず、Firebase Console上でユーザリストを作成してもそのユーザリスト宛にすぐにPush通知を送ることができません。
作成直後は、「ユーザ数」が0です。

予想でしかないですが、おそらくユーザリストを作った後にアプリを利用したユーザが、2時間後ぐらいに反映されている感じがします。

登録制限が多すぎる

制限が多すぎます。

ユーザプロパティは公式でこのように書いてあります。

最大 25 個までアプリに設定できます。

そして、削除もできません。入力間違いは許されません。
追記:
(ちなみにプロパティには自動で登録されるものがあって、それは別枠です。具体的には、年齢層、性別、興味関心、端末情報など13項目あります。これらの情報はiosの場合、IDFAから収集しているのでユーザが許可していないと取得はされません。さらに、これらの広告に基づくデータはFirebase Notifications と Firebase Remote Config のターゲティングでは使用できません。)

ユーザリストは公式でこのように書いてあります。

最大 50 個のユーザーリストを作成できます

カスタムイベントは公式でこのように書いてあります。

.You can report up to 500 different types of Events per app and you can associate up to 25 unique parameters with each Event type.
・・・・・・
Event names can be up to 40 characters long, may only contain alphanumeric characters and underscores (""), and must start with an alphabetic character. The "firebase" prefix is reserved and should not be used.

イベント数は、最大500。これはまあいい。
パラメータ25個の制限は、無料で使うとどちらにしろ見れないので、まあいい。
厳しいのはイベント名の長さが最大40文字で、英数字とアンダースコアで書く必要があることです。

目標到達プロセスで最初の必須がない

これは通知とは関係ないですが、「なんだこれ?」と思ったので書いておきます。

例えば、新規登録直後だけ「Aボタン」を押下したことを目標にしたいのに、新規登録直後以外に「Aボタン」を押下したらカウントされます。
なので、グラフが右肩下がりになるはずなのに、途中で上がったりします。なので使うところが限られてしまいます。

ちなみに、Google Analyticsでは、最初のページを「必須」にするトグルがあるので、この問題は発生しません。

代替案

Firebaseは日々進化しているので、これらの問題点が解決されることを期待してますが、代替案を上げておきます。

通知機能であれば、OneSignalの方が遥かに優れています。

Analytics機能では、Google Analyticsで、イベントを仕込んで、属性情報をカスタムディメンションを利用し、目標到達プロセスで利用するものだけをページビューを使うことで運用しています。