PUSH通知機能を実装するときによく聞くFirebaseってなに？ 既存ASPとの違いや選び方は？

# はじめに
アプリにPUSH通知を実装する際にFirebaseとASPサービスどちらがいいの？と良くアプリ開発時に話題に上るので調べてみました。

## Firebaseってなに？
Firebase はアプリ構築という手間のかかる作業をサポートする Backend as a Service（BaaS）です。
（公式より引用 [Firebase](https://firebase.google.com/?hl=ja)）

具体的にどんな機能が使えるかと言うとFirebaseには、分析機能、クラッシュレポート、ストレージ、ディープリンク、プッシュ通知(ここです！)、広告挿入（Admob）によるマネタイズ…など、数多くの機能が入っており、その他の機能もありすぎて記述しきれません。

## 利用するには？
webから会員登録 をしてアプリを登録。その後に発行されたSDKをアプリに実装すると言った良くある流れです。下記画像はFirebaseを利用し始めたときの管理画面です。

![Test_PJ_–_Dashboard_–_Firebase_console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436544/68a0cf8c-301e-085f-34e4-6eeca3ca976e.png)

TOPページには分析結果が表示されます。左部にあるメニューバーから各機能に遷移可能です。

## 費用は？
公式サイトの料金表を見ると3つのプラン(Spark/Flame/Blaze)の3プランが用意され、利用出来る機能に差があります。それ以外の差はデータ・ストレージの容量制限、同時接続数やデータ転送量等です。

(Firebase料金プラン　[料金プラン](https://firebase.google.com/pricing/))

![Firebase_Pricing_ _ _Firebase.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436544/d2141bef-1121-50e8-6894-2d670d3b20e0.png)

また、今回のポイントであるプッシュ通知は全プラン無料になっています。＃ここがASPとどちらがイイ？と言うときに良く話にあがる要因ですね。

その他の無料の主要項目については以下になります。

A/B テスト
Analytics
App Indexing
Cloud Messaging（FCM）
Crashlytics
Dynamic Links
パフォーマンス監視
Predictions
Remote Config

分析やディープリンク、クラッシュレポート、プッシュ通知が無料なのでは凄いですね。

# 既存ASPとの違いは？
ここが今回の記事の主パートになります。

## なんと言ってもコスト面
まずはなんと言っても金額が無料と言う事でしょうか。
各社ASPサービスでも無料トライアルはあれど、月額無料と言うとことは有りません。

## Firebase Notifications でできること
管理画面はいたってシンプルです。
Firebase Notifications によるプッシュ通知機能の特徴としては下記の点があります。基本的な配信は網羅していると言えるでしょう。

・配信予約
プッシュ通知時間と文言を予め入稿し、自動で配信が可能

・セグメント配信
プッシュ通知を誰に配信するか指定が可能

・リッチプッシュ
画像・URL付きのプッシュ通知が可能

・定期配信
毎日または特定曜日と言った指定を行って配信が可能

・カスタムデータ
配信に任意のパラメータを付与する事が可能です。

・通知音
通知音有無を指定できます。

### 既存ASPとの比較

ASPの代表的なサービスと機能比較を以下の表のように行いました。どのASPも上記Firebase Notificationで行えることはおおよそ可能でした。上記以外の機能比較を下記に記します。

| 名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| Appvisor Push| GrowthPush| Repro App| Firebase Notification               |
|--------------------------|---------------|------------|-----------|--------------------------------------|
| 無料トライアル           | ○             | ○          | ×         | -<br>無料                          |
| WEBプッシュ              |               | ○          |           | ○                                    |
| セグメントPUSH           | ○             | ○          | ○         | ○<br>要Firebase Analytics                |
| 絵文字入り配信           | ○             | ○          |           | ×                                    |
| リッチプッシュ           | ○             |            | ○         | ○                                    |
| スケジュール配信         | ○             | ○          | ○         | ○                                    |
| プリセット配信<br>(定形配信) | ○             |            | ○         | ×                                    |
| 配信速度制御&nbsp;             | ○             | ○          | ？        | ×                                    |
| 効果測定                | ○             | ○          | ○         | ○<br>要Firebase Analytics                |
| API                      | ○             | ○          | ？        | △<br>Firebase Cloud Messaging(FCM)を利用 |
| 保守サポート             | ○             | ○          | ○         | 無し<br>WEBベースで調査                |
| 開発要望                 | ○             | ？         | ？        | 不可                                 |
| 初期費用                   | 必要<br>7.5万          | 不要       | 不明      | 無料                                 |
| コスト                   | 25万MAUまで5万          | ・100ユーザまで無償<br>・2.5万Uまで月1.2万<br>・10万Uまで月2.8万<br>・25万Uまで月12万       | 不明      | 無料                                 |

## リンク
![logo_appvisor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436544/8da36463-c2fb-2b98-a7cf-db5ad0b1996e.png)


[iPhone,Androidアプリのプッシュ通知サービス(ASP)の決定版 | Appvisor push](https://app-visor.com/)

![growthpush02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436544/718ecb8d-862f-cf16-20a1-a749efb79ccc.png)
[サービス開発者のためのプッシュ通知サービス・ASP Growth Push(グロースプッシュ) | Growth Push](https://growthpush.com/))

![repro_logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436544/421ff102-9707-2def-6f09-4451ada48fef.png)
[59カ国6,500件以上で利用されるカスタマーエンゲージメントプラットフォーム Repro | Repro](https://repro.io/
))

## Firebaseと既存ASP利用で意識したいこと
PUSH配信に関して基本的な機能は上記の通り、Firebaseでも備わっており、あまり違いはありません。

特筆するのであれば下記の2点が挙げられます。

### (1)APIの利用
管理画面を使わず、APIを利用して配信するのであればFirebase Notificationではなく、Firebase Cloud Messaging(FCM)を利用し、REST APIと言われる独自のAPIを使用する必要があります。

(REST APIの説明ページ　[REST API のインストールと設定](https://firebase.google.com/docs/database/rest/start?hl=ja))

### (2)不具合対応
無料であるために不具合が起きた際に自前で調査を行わなければならなかったり、OSアップデート時の新OSへの対応方法も調査する必要があります。また、Firebase側で仕様変更があった場合も対応が必要になりますね。

## 最後に
その他国内ASPの比較は以下にまとめてあるので参照下さい。
(2019年度版　プッシュ通知ASPサービス比較　[リンク](https://qiita.com/h22/items/32f07a49152f978136d1))