TwitterがAndroid 6.0 MarshmallowのDoze機能を活用して通知性能を向上させた方法
Android 6.0 Marshmallowには、Dozeという新しい機能が追加されました。この機能は、スマートフォンが使用されていないときにバッテリーの寿命を延ばすために、アプリの動作を制限するものです。特に、Google Cloud Messaging(GCM)との組み合わせによって、通知のパフォーマンスや使いやすさが飛躍的に向上しています。ここでは、実際にこの機能を活用したTwitterのアプローチをご紹介します。
Dozeと通知の優先順位
Twitterのエンジニアリングチームは、どの通知に高い優先順位を付けるべきかを徹底的に研究しました。彼らのニーズに応じて、**ダイレクトメッセージ**は高優先度で配信し、**メンション**通知は通常優先度としました。これにより、ユーザーはバッテリーを節約しながらも必要な通知を受け取ることができます。
TwitterのAndroidエンジニアリングマネージャー、ルーク・ミラー氏は次のように述べています。「Android Mでは、バッテリー寿命を節約するためにより良い市民であるための能力が向上しました。この機能により、どの通知がDoze状態でデバイスを目覚めさせるか、またどの通知がそうならないかを指定できます。通常、私たちはGCMに通知を次回ユーザーの電話が起動するまで待機させるよう指示します。ただし、ユーザーはダイレクトメッセージのようなプッシュ通知をすぐに受け取ることを期待しているため、それらは高優先度として設定しました。」
Dozeのテスト方法
Twitterのエンジニアは、Android Developersサイトに記載された手順に従ってDozeのテストを行いました。具体的には、adb(Android Debug Bridge)コマンドを使用して、物理デバイスまたは仮想デバイスでDozeをシミュレートしました。この方法により、彼らは実際の環境でメッセージの優先順位がどのように機能するかをテストすることができました。
大きなペイロードの取り扱い
もう一つのTwitterが実施したベストプラクティスは、より大きなペイロードを送信する際のアプローチです。たとえば、Twitter Highlightsを配信する際には、通知でメタデータを渡し、アプリが必要なハイライトを取得するための同期機構をトリガーする形をとりました。つまり、ハイライトの内容を通知で直接送信せず、アプリ内でコンテンツを更新するようにしているのです。
まとめ
Twitterの取り組みからは、AndroidのDoze機能がどのようにしてアプリの通知パフォーマンスを改善できるかが分かります。正しい優先順位を設定することで、ユーザーは大切な通知を見逃すことなく、バッテリーの節約につながります。
なお、GCMを利用したアプリのスタンバイ環境での活用方法については、公式ドキュメントを参照することをお勧めします。Google Developersサイトでは、Android、iOS、Webアプリケーション向けにGCMを使用する方法について、詳細な情報が掲載されています。