見かけは同じように見えるプッシュ型情報配信、その内側はいろいろ

携帯電話やスマートフォンなどが普及したことで「仕事のメールや友だちからのLINEトークなどが、何もしなくても自分のスマホに降ってくる」「パソコンのWebブラウザで変更したスケジュールや連絡先がすぐにスマホにも反映される」など、このような便利さもすっかり当たり前になりました。一方で、人によっては、時に煩わしく感じることもあるでしょうが…...。

この「情報を取りに行く操作をしなくても向こうからやってくる」という配信方法を「プッシュ型情報配信」と呼ぶことがあります。スマートフォンでは当たり前のようにプッシュ型情報配信が行われますが、その裏側がどんな仕組みになっているかはスマホを普通に使っている限りまず意識されないでしょう。そこで、今回の「スマホのちょっと深いとこ」は、このプッシュ型情報配信について取り上げていきたいと思います。

プッシュ型情報配信を用いるアプリは、表向きはどれも似たように振る舞います。新しい情報を受信すると通知音が鳴って画面に通知テキストが表示され、アイコンに新着数を表すバッジが付いたりします(*1)。しかし実際にはプッシュ型情報配信を行う方法が複数存在し、アプリや利用目的によって使い分けられています。以下でいくつか紹介していきましょう。

*1: 連絡先やスケジュールのように、見かけ上は何も通知されず、裏で黙ってデータ更新する場合もあります。

【1. ケータイメールやSMS】

スマートフォン普及以前の従来型携帯電話(フィーチャーフォン、いわゆるガラケー)において、受信するとすぐに端末が鳴って内容を確認できるショートメール(SMS)やケータイメールはプッシュ型情報配信の代表例でした。スマートフォンにおいても、携帯電話各社が提供するSMSやケータイメールについては同じ仕組みになっています(*2) 。携帯電話ネットワークを利用する方法のため、インターネット接続がない場合も通知だけは受け取れるメリットがありますが、反面携帯電話のネットワークに強く依存しているため、原則として携帯電話事業者以外は利用が難しい方法です。

*2: iOSの「メッセージ」においてはケータイメール(SMS/MMS)と、Appleが提供するメッセージサービス「iMessage」の両方が利用されます。

push_notification_001
ケータイメールやSMSの仕組みはスマホに引き継がれている
(写真はNTTドコモの「spモードメール」)

余談ですが最近ではKDDIが自社のケータイメール(@ezweb.ne.jp)をiPhone/iPadユーザー向けに後述する「Exchange」方式で提供したり、ソフトバンクモバイルが自社のケータイメール「S!メール(MMS)」をパソコンやタブレットなどから送受信できるサービスを開始(8/29予定)するなど新しい動きが見られます。NTTドコモも自社のケータイメールについて、データをインターネット(クラウド)上に置くことでパソコンでの利用も可能とする「ドコモメール」を10月下旬より提供開始予定です。

【2. 端末とメールサーバーが直接通信する方法】

スマートフォンで電子メールを読んだり送受信したりするためには、インターネット上の「メールサーバー」と呼ばれるコンピューター(サーバー)と通信をする必要があります。この通信の仕方を工夫して、メールをリアルタイムに端末に受信させるやり方です。

この「通信の仕方」には「Exchange」や「IMAP IDLE」などの方法が存在します。メールのリアルタイム受信を実現するためには、メールサーバーと端末の両方がこの通信の仕方に対応している必要があります。現状iOSやAndroidのメールアプリがExchangeに対応しているほか、IMAP IDLEに対応しているメールアプリも存在します。一方有名なメールサービスでは、GmailがIMAP IDLEに(*3)、MicrosoftのOutlook.comがExchangeに対応しています。

*3: もともとGmailはExchangeもサポートしていましたが、現在はWindows Phone向け(2013年12月31日まで)を除きサポートを停止しています。

push_notification_002
iPhoneのメールアプリはExchangeをサポート

【3. Apple/Googleのプッシュ通知】

iOSを提供しているApple、Androidを提供しているGoogleの両社は、端末にプッシュ型情報配信を行う方法を提供しています。iOSではAPNs(Apple Push Notification service)、AndroidではGCM(Google Cloud Messaging)と呼ばれており、特定の端末に対して通知(*4)を送り込むことが可能です。アプリ開発者が無料(*5)で利用でき、利用方法の資料も公開されているため、多くのアプリで活用されています。

*4: この方法で行われるプッシュは「プッシュ通知」と呼ばれることが多いです。

*5: アプリを公開するために開発者ライセンスの購入などの費用は必要になりますが、プッシュ通知機能を利用するためにAppleやGoogleに追加費用を払う必要はないという意味です。

push_notification_004
プッシュ通知を組み込むための資料が開発者に公開されている
(Googleの開発者向けページより)

この方法ではプッシュ通知を行いたいサービス(例えばチャットを管理しているサーバーなど)がAppleやGoogleのサーバーに対してプッシュ通知を送るよう依頼し、実際に送る処理はAppleやGoogleのサーバーが行います。iPhoneをKDDIから買おうとSoftBankから買おうと、Android端末のメーカーがソニーであろうとサムスンであろうと、使っているアプリが何であろうと、APNsやGCMを用いたプッシュ通知ではAppleやGoogleに頼っているわけです(*6)。

*6: ただしAndroidは実装の自由度が高く、独自のプッシュ通知を実装することも理論上可能であるため、プッシュ通知対応のアプリが必ずしもGCMを利用しているとは限らない点に注意が必要です。

push_notification_003
今や多くのアプリがプッシュ通知を活用している

【4. 緊急地震速報】

受信する機会がないに越したことはありませんが、緊急地震速報もある意味プッシュ型情報配信と言えます。緊急地震速報ではCBS (Cell Broadcast Service) 、BC-SMS(Broadcast SMS)、ETWS(Earthquake and Tsunami Warning System)といった配信方法が用いられます。これらの方法においてはあるエリア内の複数の端末に対して一斉に配信が行われ、かつネットワークから端末への片方向通信で配信が完結します。そのため災害時に懸念されるネットワークの混雑状態(輻輳)を原理上招かない特徴があります。

push_notification_005
緊急地震速報は命に関わる情報をネットワークを混雑させずに配信できる

【番外編:アプリがプッシュ型情報配信されているように振る舞う方法】

iOSやAndroidには、プッシュ型情報配信が行われたかのようにアプリ自身が振る舞う方法が提供されています。つまりアプリが自分で情報を更新した時などに、プッシュ型情報配信と同じ方法でユーザーに通知を行うわけです。この場合必ずしもネットワークから情報がプッシュされているとは限らないのですが、利用者から見れば同じように見えます。

今回紹介したプッシュ型情報配信をまとめると以下のようになります。

No. 方法 特徴 利用例
1 ケータイメール、SMS フィーチャーフォンから継続して利用されている。携帯電話会社以外の利用は現実的には難しい ケータイメール、SMSなど携帯電話会社が提供するサービス
2 Exchange、IMAP IDLE メールのリアルタイム受信を実現。メールサーバーと端末のメールアプリが両方対応している必要がある iOS、Android、Hotmail、Gmailなど
3 APNs、GCM AppleやGoogleのサーバーを介して配信。アプリ開発者に利用のための資料が公開されている。サービス利用に追加コストがかからない Facebook、Twitter、LINEなど様々なアプリ
4 CBS、BC-SMS、ETWS ネットワークを混雑させず、複数端末への一斉配信が可能 緊急地震速報など

普段何気なく使っているスマホのプッシュ型情報配信ですが、その裏で様々な仕組みが動いている様子をイメージしていただけたでしょうか。実際のサービスではこれらの仕組みを更に活用して、アプリ利用者がより便利にアプリを活用できるようアプリ開発者達が様々な工夫をこらしています。あなたのスマホがピロンと鳴った時、ちょっとでもそんなことを思い出していただければ開発者の端くれとして至上の喜びです。


■関連リンク
エスマックス(S-MAX)
エスマックス(S-MAX) smaxjp on Twitter
S-MAX - Facebookページ
Local and Push Notifications for Developers(Apple Developer)
Google Cloud Messaging for Android(Android Developers)
連載『吉川英一の「スマホのちょっと深いとこ」』記事一覧 - S-MAX
今日の気分はバリいくつ?