【マルチデバイス対応したプッシュ通知インフラ】 Windows Azure 通知ハブのご紹介(その1)

【マルチデバイス対応したプッシュ通知インフラ】 Windows Azure 通知ハブのご紹介(その2)

【マルチデバイス対応したプッシュ通知インフラ】 Windows Azure 通知ハブのご紹介(その3)

 

先日、Windows Azure 通知ハブのプレビューが公開されました。このサービスは、プッシュ通知のメッセージを数百万のデバイスに効率的にルーティングできる、スケーラブルなマルチプラットフォームのプッシュ通知のインフラを提供します。これまで、Windows Azure ではモバイルサービスのサブセットとしてプッシュ通知が含まれていましたがスケーラビリティや可用性、汎用性、機能的な側面で課題がありました。Windows Azure 通知ハブでは”プッシュ通知に特化”して、よりスケーラビリティや汎用性を向上、機能強化したインフラを提供します。現時点ではプレビューとして公開していますが、こちらに記載がある通り、製品は今年半ばの GA(正式リリース) を予定しています。

なお、Windows Azure 通知ハブについては テーマを 2 回に分けてご紹介します。今回は概念的なことを、次回は具体的な実装です。

 

プッシュ通知とは?

アプリをインストールしてさえいれば、アプリを起動しなくても、サーバーサイドからリアルタイムになんらかの通知を送る仕組みのことです。例えば”本日の天気”や”今日のお勧めレシピ”、”新着ニュース”、”メールの新着”などの通知が考えられます。アプリケーションはダウンロード数ではなく、使われてこそ価値があります。インストールされたとしても、その存在を忘れられるようなアプリでは寂しいですよね。

これはアプリの種類にも依存すると思いますが、通知を実装することでアプリ起動数が通常時と比較し 60% 増になったという調査結果もあるようなので、まずはご自身が開発したアプリでは、そもそも通知が必要なのか?どういった通知が適しているだろう?と一考してみることをお勧めします。

ちなみに、Windows 8、Windows Phone だけでなく、iOS、Android も含め実装や表示方法こそ違え、概ね同じような通知機能を実現できます。そのため、下記のようにそれぞれのベンダーが通知サービスを提供しています。

OS プッシュ通知サービス(PNS)
Windows 8 Windows Push Notification Services (WNS)
Windows Phone Microsoft Push Notification Service (MPNS)
iOS Apple Push Notification Service(APNS)
Android Google Cloud Messaging (GCM)

 

通知の仕組みと通知ハブ

そもそもベンダーに関わらず通知を行うための仕組みは概ね同じです。まずは一般論をおさらいしておきましょう。

 

■通知を行う前の準備

クライアントへ通知を行うための Channel URI や Device Token などを PNS から取得します。それを自社サービスに送りデータを保存しておきます。

image

 

■実際に通知を送る

通常なんらかのイベントをもとに通知を発行します。例えば バッチ処理だったり、Web アプリに通知メッセージを入力してボタンを押す、、などが考えられます。サービスは保存している Channel URI や Device Token をメッセージに乗せて PNS へ通知をリクエストします。この際、ブロードキャストで全ユーザーに通知を送ることも出来ますが、ユーザーの特性に合わせてマルチキャストすることも出来ます。

しかし、マルチプラットフォームへの対応を考えた場合、WNS、MPNS、APNS、GCM ではプロトコルが異なるため、それぞれ個別に実装する必要があります。同様の処理をするにも関わらず、これは非常に面倒です。

image

 

■実際に通知を送る(マルチプラットフォーム対応)

そこで、プロトコルの違いを吸収するために中間層を設けて対応したりします。

この場合 自社アプリサービスは PNS 毎のプロトコルの違いを意識することなく、通知を行うことが出来ます。

image

ただし、この仕組みを用いても、何千、何万人ものモバイルユーザに通知を同時に送るための、スケーラブルなプッシュ機能を構築するのは非常に大変です。

■実際に通知を送る(Windows Azure 通知ハブ)

では最後に Windows Azure 通知ハブについてご説明します。

Windows Azure 通知ハブはマルチデバイスに対応した通知サービスで、ここまで説明したような、自社アプリサービスや中間層での通知のための共通した実装が含まれています。また、非常にスケーラブルで効率的なルーティングメカニズムが導入されているため、何千、何万人ものモバイルユーザーに対してよりリアルタイムに近いメッセージを通知できるのが特徴です。ブロードキャストだけでなく、タグベースのマルチキャストにも対応しているため、ユーザーの属性によって通知内容を変えることも出来ます。タグには、アプリ特有の文字列(例:ユーザID、お気に入りのスポーツチーム、位置情報など)を含む事が出来ます。例えば、ユーザーの位置情報から、最適なお天気情報を通知できます。Windows Azure 以外の様々なプラットフォームと統合出来るので、プッシュ通知の基盤として非常に便利です。

※ 20013/2 時点ではWindows 8アプリ、iOSアプリにプッシュ通知を送ることが出来ます。Android および Windows Phone へのサポートはまもなく追加予定です。

image

 

 

参考

Windows Azure Notification Hub使用によりブロードキャストプッシュ型通知を何百ものモバイルデバイスへ

・[msdn]Windows Azure Service Bus Notification Hubs