読者です 読者をやめる 読者になる 読者になる

API比較.com

いろんなAPIやSaaSをまとめたり比較してみたりしています

Push通知を自前でつくるか、SaaSを使うか - Amazon SNS, Urban Airship, PushWoosh, CORE PUSH, Fello を比較してみた

はじめまして。 いろんなSaaS, APIを比較してみるブログを始めてみることにしました。

今回は、スマホアプリやWebブラウザへのPush通知サービスについてまとめてみました。 サービスを作っている方に、少しでも参考になれば嬉しいです。

※各サービスの機能や価格は2016年5月の執筆時点のものです。間違いがあれば、コメントにてご指摘ください。
※こちらの記事を書いた数日後、Google I/OにてFirebaseの大幅な機能強化が発表され、GCMと連動したFirebase Notificationsなるサービスも発表されました。ぜひとも追記したいのですが、今、まとめる時間がないので、後日書きます。こちらの記事にご興味の方、よろしければFirebaseもご参考になさってみてください。

Push通知とは?

Push通知(プッシュ通知 / Push Notification)とは、ユーザのWebブラウザやインストール済みアプリに対して、メッセージを送ることを指します。ユーザがWebサイトを見ていないときや、アプリを起動していないときであっても通知できるため、「ユーザが情報を取得しにくる = Pull(プル)」と比較して「Push通知」と呼ばれます。

この記事では、Push通知を実現している仕組みと、これをサービスに導入するときに利用できる各種サービス(SaaS / Software as a Service)について解説します。

Push通知の仕組み

Push通知をユーザに気づかせるためのポップアップや、通知の履歴を参照するような機能は、WebブラウザやスマートフォンOS(Android, iOS)により提供されています。したがって、Push通知を提供するためには、WebブラウザやOSが提供する、Push通知の仕様(お作法)に則った開発が必要です。

ChromeブラウザやAndroid OS(で動作するアプリ)への通知については、GCM(Google Cloud Messaging)、iOS(で動作するアプリ)への通知についてはAPNs(Apple Push Notification Service)を使用します。裏を返せば、これらのゲートウェイサービスに対して決められた手順(HTTPやXMPP)でメッセージを送るだけで、Push通知は実現できます。今回はとくにとりあげませんが、Windows Phoneや BlackBerryにも同様のゲートウェイサービスがあります。

f:id:build_it:20160511164240p:plain

GCM利用イメージ: https://developers.google.com/cloud-messaging/gcm より引用

GCMもAPNsも、利用の流れは概ね以下のようになります。

  1. GCM or APNsにユーザ端末/ブラウザ環境を登録し、登録トークンを得る
  2. GCM or APNsに、登録トークンを指定してメッセージを送る

多くの場合、GCMやAPNsへの登録トークン(GCMではRegistration Token、APNsではDevice Tokenと呼ばれます)と、サービス側の登録ユーザIDを紐付ける運用をすることになるでしょう。このようにしておくことで、サービスの利用状況や登録情報でセグメントした単位でPush通知を送りわけることができるようになります。

ちなみに、GCMは2015年8月から、APNsをラップする形で、iOS(で動作するアプリ)へのPush通知をサポートしています。したがって、然るべき手順を踏めば、 サービス側はGCMに対応するだけでChrome, Android, iOSへのPush通知を提供することができる ようになっています。

自前でやるか、SaaS でやるか - 利用ステップ毎に設計の難易度を俯瞰

GCMもAPNsも、HTTPのエンドポイントを提供していますし、アプリ組み込み用のクライアントライブラリもありますので、最低限のPush通知の仕組みを自前でつくり上げるのは、さほど難しいことではないでしょう。

それでは、Push通知の仕組みを、自前でつくるのと、SaaSを使うのとではどちらが良いのでしょうか。 もちろん、ケースバイケースですので、「どちらが良い」「どのサービスが良い」とは言えません。 それぞれの進め方のメリットやデメリットを把握することから始めましょう。

本項では、まず、前項で挙げた、Push通知を利用する2つのステップ+αに注目し、どのようなケースで設計開発の難易度が上がるのかを見ていきます。

登録 - 登録トークンをメンテナンスし続けることが大事だが、自前でもSaaSでも手間はさほど変わらない

GCM, APNsへの登録ステップでは、ブラウザや端末の識別子を送信し、登録トークンを取得する必要があります。登録自体は単純な手順で済むのですが、 登録トークンはゲートウェイサービス側で不定期に変更されますので、サービス側は登録トークンを常に最新状態に保つ必要があります 。このため、アプリ側では、登録トークンが変更されたことを検知してサービス側に送信する機能を作りこむことになるでしょう。

また、ユーザはアプリを再インストールしたり、機種変更したりすることがあります。また、同時に複数の端末でひとつのサービスを利用するユーザも居ます。サービス側では、このような利用スタイルをとるユーザの登録トークンをどのように登録管理しておくかを設計しておく必要があります。

もし、GCMとAPNsの両方でPush通知サービスを提供するのであれば、それぞれの環境用に登録トークンの登録管理の仕組みを設計/開発することになります。SaaSによっては、似たようなインタフェースで登録トークンの登録管理ができるようなクライアントライブラリを提供しているため、それを利用することで導入のハードルを下げられることがあるかもしれませんし、前述のとおりGCM一本でまとめてAPNsに対応してしまうという方法もあるでしょう。

いずれにせよ、登録トークンの管理は、サービスのユーザIDと紐付けて管理する以上、自前で開発しても、SaaSを使っても、さほど手間は変わりません。

配信 - 配信性能を維持するためのスケーラビリティをどの程度確保しておくかがカギ

サービス運営において、実際のPush通知メッセージを送る際にネックとなってくるのは配信性能です。数百程度のユーザに対するPush通知であれば、自前で組み上げるのもさほど難しくはありませんが、 ユーザ数が急激に増加した場合など、数千、数万あるいはそれ以上のユーザにリアルタイムにPush通知を送信する必要が出てくるのであれば、配信キュー管理や非同期処理など、それなりのスケーラビリティを確保した配信システムを設計しておくことになる でしょう。

また、「登録」の項で述べたようなGCMとAPNsのクロスプラットフォームに対応する場合も同様です。SaaSによっては単一のインタフェースで通知できるようになっていますし、そもそもGCMに一本化することで対応の手間を省くという選択肢もあります。

利用状況の集計分析 - 開発優先度は下がりがちだが、機能開発段階で運用の見通しが必要

サービス運営者にとっての大きな関心事のひとつに、Push通知の効果測定があります。Push通知は、休眠ユーザを呼び起こす力をもつ強力なツールですが、タイミングやメッセージ内容によってユーザの反応はまちまちですし、あまり乱用するとPush通知自体をも拒否されかねません。

このため、Push通知を提供するサービスでは、「どのPush通知によって、ユーザがどの程度反応したのか」を把握/分析するための材料を集め、集計する仕組みを用意しておく必要があります。

サービス立ち上げのときは、ユーザへの機能提供が優先されてしまい、このような集計分析の管理機能の開発優先度は低くなりがち です。しかしながら、Push通知の効果測定では「配信内容」「アイキャッチ画像」「効果音」「時間帯」「セグメント」「ユーザリアクションをどこまで追うか」など、多くの変数が入ってきますので、どのような切り口での効果測定・仮説検証をおこなうのか、見通しだけでも立てておきたいところです。

ちなみに、利用状況のロギングや視覚化の機能については、SaaS毎の違いがもっとも大きく出るところでもあります。多くのSaaSが、ユーザ数が小規模あるいはPush通知数が一定になるまでは無償で利用できるということも見逃せません。サービスローンチまでの時間を買い、分析機能を活用して早い段階でトライアンドエラーを回す、という意味では、SaaSの導入は大きなメリットがあると言えます。

集計分析機能は、自前で開発するか、SaaSにするかの大きな分かれ目になる要素 といえるでしょう。

比較軸の整理

前項を踏まえ、あるいは掘り下げながら、Push通知サービスにSaaSを利用する場合の比較軸を整理していきましょう。 どのサービスも多様な切り口で展開されているため、なかなか同じ土台での比較は難しいのですが、本記事では比較軸を4点に整理してみました。

クロスプラットフォーム対応状況

複数OSや開発ライブラリへの対応状況を指します。 サーバアプリケーション/Native App/WebブラウザPushでのクライアントライブラリの有無や、対応言語の充実度合いなどがこれに含まれます。

今やGCM/APNsの両方に対応していないSaaSはほとんどありませんが、BlackBerryやWindows Phoneなどの別環境へのPush通知に対応したいというケースも無いわけではありません。また、UnityやPhoneGap, React Nativeなどの各種開発ツール/フレームワークでアプリケーションを開発している場合、すぐに使える公式ライブラリやSDKが提供されているのは大きな助けになるでしょう。

配信性能/導入実績

急なユーザ数増加に対して、リアルタイム性を担保しておきたいのであれば、どれくらいの配信性能(単位時間あたり)が出るのか、導入企業やサービスの実績にはどのようなところがあるのか、を確認しておきたいところです。サービスによっては、配信性能や累積配信数については、定量的な数値が公表されており、定量的な判断をしやすい指標でもあります。また、導入企業の傾向を見ることで、そのサービスの特色をうかがい知ることもできます。

管理分析機能

効果測定のために利用できる管理分析機能の充実度合いを指します。 サービスによっては、集計の視覚化だけではなく、A/Bテストのように分析手法そのもののツールを提供しているものもあります。 また、登録ユーザをグルーピングしてセグメント配信したり、日時指定で予約配信したりといった機能の充実度合いもこれに含まれます。 定量的な比較がしにくく、かつ SaaS 毎の差異が出やすい軸となります。

料金体系/費用

その名の通り、利用料金を指します。 登録ユーザ数やPush通知メッセージ数に応じた従量課金にしているサービスもあれば、様々なオプション機能を有償提供しつつも基本機能は(ユーザ数や通知数に関係なく)無償で利用できるサービスもあります。

サービス別比較

Push通知を提供しているSaaSは数多くあります。 完全無料のサービスも幾つかあるのですが、ここでは以下の条件で国内外から5つのサービスを集めてみました。

  • 有償であること
  • 料金が公開されていること(個別見積もりでないこと)
  • アプリケーションサーバのプラットフォームに依存しない(mBaaS型でない)こと

評価は筆者の主観です。あくまで参考としていただき、また、必要に応じてここに挙げられていないサービスもチェックしてみてください。

Amazon Simple Notification Service - 配信性能のスケーラビリティと価格メリットに特化するなら、ほぼ一択

f:id:build_it:20160511164243p:plain

https://aws.amazon.com/jp/sns/

項目 評価 備考
クロスプラットフォーム対応状況 iOS, Androidの他、サーバサイド向け各種言語サポートSDKあり
配信性能/導入実績 毎日数十億規模の配信実績
管理分析機能 最低限のダッシュボードのみ
料金体系/費用 100万件送信あたり1 USD

Amazon Simple Notification Service (Amazon SNS) はAmazon Web Service (AWS)のサービスラインナップのひとつとして利用できるものです。サイト上には "Powering billions of messages daily for leading brands and startups(毎日数十億のメッセージを配信)" とあり圧倒的な実績がうかがえます。料金も、100万件のPush通知あたり1ドル(転送料別途)と、他のサービスの追随を許さないレベル。想像ですが、Push通知のSaaSのなかには、バックエンドをAmazon SNSで運用しているものも多いのではないでしょうか。

圧倒的な性能とコストメリットの反面、分析管理機能はほとんどありません。WebブラウザへのPush通知をサポートするキットもありませんので、必要であれば自前でつくる必要があります。「配信性能のスケーラビリティのみ利用したい、あとは自分でつくる」というパワーユーザ向けのサービスとも言えます。

Urban Airship - 老舗で高機能。Push配信だけではなく、ユーザとのエンゲージメント向上までをサポート

f:id:build_it:20160511164246p:plain

https://www.urbanairship.com/

項目 評価 備考
クロスプラットフォーム対応状況 BrackBerry, Windowsサポート。UnityやPhoneGap向けライブラリも
配信性能/導入実績 毎日5億, 月間100億メッセージを配信。有名ブランドやメディアでの導入も多い
管理分析機能 ユーザセグメント管理、位置情報連動、A/Bテストや予約配信、リアルタイム分析の他、ユーザのアプリ利用状況分析もサポート
料金体系/費用 1,000ユーザまでは無料、それ以降は月額99 USD〜で配信無制限

Urban Airshipは2009年からサービスを提供している、クロスプラットフォーム対応Push通知SaaSの老舗です。元々はPush通知機能のみを提供していましたが、SimpleGeoやTelloなど周辺サービスを買収し、現在は、位置情報に連動させたPush通知や、初回起動やアプリ内課金などのユーザ行動までをトラッキングし分析できるような、総合マーケティングツールとしての機能までをサポートしています。

モバイルユーザ向けのエンゲージメント向上に特化しているためか、執筆時点では、Google ChromeのようなWebブラウザはサポートしていないようです。Webブラウザ向けのPush通知を予定している場合は、対応状況をご確認ください。

PushWoosh - 管理系の機能が充実。100万ユーザまでの大規模ユースも低価格で利用できる

f:id:build_it:20160511164241p:plain

https://www.pushwoosh.com/

項目 評価 備考
クロスプラットフォーム対応状況 WebブラウザPushサポート。BlackBerryやWindows Phoneに加え、UnityやPhone Gapなどの開発ツール向けのライブラリも
配信性能/導入実績 累積1000億以上のメッセージを配信
管理分析機能 有償プランにより、ユーザセグメント管理、位置情報連動、A/Bテストや予約配信、分析画面などの追加機能をサポート
料金体系/費用 100万ユーザまでは無料で通知数無制限。プリセット機能などを利用する場合は月額49 USD〜

PushWooshはPush通知特化型のSaaSです。有名メーカーやWebサービスなどでの導入実績も多く、Webサイトを見に行くと、累積配信メッセージ数が万単位で増えていく様子が見られます。基本機能は100万ユーザまで配信数無制限で利用でき、追加機能を利用していく場合は有償となる料金体系です。WebブラウザPushも手軽に利用できるサービスです。

有償機能も、一部であれば月額49 USDと比較的低コストで利用できますので、取り急ぎ配信性能のスケーラビリティのみ確保したい場合は、便利なサービスではないでしょうか。マーケティング系の機能をフルで使っていく場合は個別見積もりとなっていますので、利用できる機能の範囲がサービスのフェーズや運用体制にフィットしているかを確認してみてください。

CORE PUSH - 高速な配信性能。国内事業者による開発者向けサポートが充実

f:id:build_it:20160511164249p:plain

http://core-asp.com/

項目 評価 備考
クロスプラットフォーム対応状況 iOS, Android向けのSDKあり
配信性能/導入実績 10〜100万件/分の配信性能。事業会社などでの導入実績あり
管理分析機能 予約配信、A/Bテスト、位置情報連動、アクティブ数測定などの分析ツールあり
料金体系/費用 100ユーザまで機能制限無しで無償で利用可能。100ユーザを超えると月額9,800円〜

CORE PUSHは国内のWeb制作/開発会社である株式会社ブレスサービスにより開発運用されているサービスです。2012年から提供されているサービスで、メッセージ配信数の累積は10億通を突破したとのこと。着実に運用ノウハウをつけていることがうかがえます。配信APIは、個別メッセージであれば一度に1000件単位、同一メッセージであれば配信先上限無し(仕様上)の呼び出しに対応しています。

また、管理分析機能が充実していることに加え、「会員専用画面では24時間問い合わせができる技術サポートチームが待機しております」とのこと。日本語での技術サポートがいつでも受けられるというのは、サービス運用者にとってありがたいポイント。配信メッセージ数に対する課金軸が無いので、コスト見積もりがしやすいのも嬉しいところです。

Fello - マーケティングノウハウが注ぎ込まれた、国内事業者によるPush通知サービス

f:id:build_it:20160511164303p:plain

https://fello.net/

項目 評価 備考
クロスプラットフォーム対応状況 iOS, Android, Unity向けのSDKあり
配信性能/導入実績 月間2億通以上のメッセージを配信。国内ゲームパブリッシャーでの導入実績多数
管理分析機能 基本的な分析ツールは無償で利用可能。有償プランによりセグメント配信など追加機能あり
料金体系/費用 基本機能のみであれば、無償でユーザ数配信数無制限。セグメント管理機能やサポートを受ける場合は月額11,800円〜

Felloはアドネットワークを提供している株式会社ジーニーにより開発運用されているサービスで、国内のゲームパブリッシャーからの支持を集めているようです。WebブラウザPushには対応していませんが、Native App向けのPush通知については、基本機能のみであれば、無償で無制限に利用できます。

特徴的な機能として、SDKに、アプリ内でのお知らせ管理(未読管理&バッジ管理)の機能が含まれています。地味な機能ですが、アプリ側でつくるとなるとそこそこ手間がかかりますし、実際にアプリの起動率向上に取り組んできたサービスならではの機能だと思います。その他、A/Bテストや配信スロットル調整などの機能も開発中のようで、今後が楽しみなサービスです。CORE PUSH同様、運営が国内事業者というのも、運用においては重要なポイントです。

(番外) OneSignal

f:id:build_it:20160511164311p:plain

https://onesignal.com/

項目 評価 備考
クロスプラットフォーム対応状況 WebブラウザPush, Windows Phoneサポート。UnityやPhone Gapなどの開発ツール向けのライブラリも
配信性能/導入実績 配信性能については明記ないが、iOS向けには100倍速くなったとの記事あり
管理分析機能 ユーザセグメント管理、A/Bテストや予約配信、リアルタイムでのユーザリアクション分析が可能
料金体系/費用 完全無料

OneSignalは登録数配信数完全無制限、完全無料で使えるPush通知サービスです。

完全無料のサービスは今回の比較対象には含めないつもりでしたが、OneSignalは楽天やY Combinatorなどの強力な支援者がバックにおり、秒間100,000リクエストを捌く&事業収益はサービス単体ではなくエンタープライズ向けのカスタマイズフィーから得る(と言っている)AppleのHTTP/2 APIに対応し、iOS向けの配送性能が100倍になったという記事など、サービス運用にかける本気さが窺えるため、番外として挙げさせていただきました。

OneSignal、実は、筆者も利用しております。WebブラウザPushもサポートしていますし、A/Bテストやリアルタイム統計、データのエクスポートなど、サービス運営者に嬉しい機能が充実しており、今後に期待しているサービスのひとつです。但し、このご時世、無償で利用できる範囲が突然制限されることもありますので、利用の際は注意してください。

まとめ

WebサービスでPush通知を提供する際に活用できるSaaSとして、Amazon SNS, Urban Airship, PushWoosh, CORE PUSH, Fello それに OneSignal をそれぞれ紹介しました。

ここで挙げたサービスは、いずれも配信性能や実績については心配なさそうですので、前項に述べた以下のような点が判断ポイントになってくると思います。

  • WebブラウザPushに対応するか、Native Appのみか
  • 管理分析(マーケティング)系の機能を自分でつくるか、フィットしそうなSaaSがあるか
  • 想定ユーザ数規模と配信数にフィットする料金体系/プランがあるか

どのサービスも特色がありますし、ここで紹介しきれなかったサービスも多くあります。本稿での比較軸や内容が少しでも参考になれば幸いです。

もしこの記事が参考になったら、スターやブックマークやSNSでのシェアをいただけると、別の記事を書く励みになります!よろしくお願いします。