Twitter 社が Android 6.0 Marshmallow の Doze モードを使用して通知機能のパフォーマンスを向上させた方法
Posted:
2016年2月5日金曜日
[この記事は Laurence Moroney、デベロッパー アドボケートによる Google Developers Blog の記事 "How Twitter used Doze in Android 6.0 Marshmallow to Improve Notification Performance" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]
昨年11 月のブログ記事で、パフォーマンスとユーザビリティの向上をユーザーにもたらすために、Google Cloud Messaging(GCM)が Android 6.0 Marshmallow の Doze(居眠り)モードと呼ばれる節電機能をどのように扱うかについて紹介しました。優先度が「標準」のメッセージの場合は、端末を Doze モードのままにしておき、優先度が「高」のメッセージの場合は端末を Doze モードから起こし、アクティブにするというものです。本機能の Android における好例とベストプラクティスについて、Twitter 社のエンジニアリング チームと話し合いました。
Twitter 社は、Doze モードの端末をアクティブにする、優先度「高」を付すべきメッセージはどれなのかについて徹底的にリサーチしました。Twitter 社で使う特定のニーズを満たすために、Twitter 社は、ダイレクト メッセージは優先度「高」で、メンションは優先度「標準」で配信する必要がありました。
Twitter 社の Android エンジニアリング マネージャーである Luke Millar 氏は次のように述べています。「Android M を使用するとバッテリーの寿命が伸び、良き市民としての責任を果たすことにつながります。この機能により、どの通知が Doze モードの端末をアクティブにし、どの通知がアクティブにしないかを指定できます。通常は、ユーザーの携帯端末が次回アクティブになるまでプッシュ通知の配信を保留するように GCM を設定します。ただし、ユーザーはダイレクト メッセージなどの一部のプッシュ通知を即座に受け取ることを求めているため、これらの通知には優先度を「高」に設定します。この機能は、これらの通知がユーザーに配信されるタイミングと方法を指定できるので便利です。」
Twitter 社のエンジニアは Doze モードをテストするため、Android デベロッパー サイトに記載されているステップを実行しました。このサイトには、adb コマンドを使用して物理端末または仮想端末で Doze モードをシミュレートする方法が示されています。Twitter 社はこの方法を使用して、メッセージングの優先度が実際の環境でどのように機能するかをテストできました。
また同社は、Twitter ハイライトを配信するなどの大きなペイロードの送信時にもう 1 つのベスト プラクティスを使用しました。それは、通知でメタデータを渡し、そのメタデータを使用してアプリを同期し、リクエストしたハイライトを取得するということです。言い換えると、通知でハイライトのコンテンツを送信せず、同期メカニズムをトリガーして、アプリのコンテンツをアップデートしました。
スタンバイ環境にあるアプリで GCM を使用する場合の詳細については、このドキュメントをご覧ください。
GCM の詳細と、Android、iOS、ウェブ アプリケーションで GCM を通知に使用する方法については、こちらの Google デベロッパー サイトをご覧ください。
Posted by Eiji Kitamura - Developer Relations Team
昨年11 月のブログ記事で、パフォーマンスとユーザビリティの向上をユーザーにもたらすために、Google Cloud Messaging(GCM)が Android 6.0 Marshmallow の Doze(居眠り)モードと呼ばれる節電機能をどのように扱うかについて紹介しました。優先度が「標準」のメッセージの場合は、端末を Doze モードのままにしておき、優先度が「高」のメッセージの場合は端末を Doze モードから起こし、アクティブにするというものです。本機能の Android における好例とベストプラクティスについて、Twitter 社のエンジニアリング チームと話し合いました。
Twitter 社は、Doze モードの端末をアクティブにする、優先度「高」を付すべきメッセージはどれなのかについて徹底的にリサーチしました。Twitter 社で使う特定のニーズを満たすために、Twitter 社は、ダイレクト メッセージは優先度「高」で、メンションは優先度「標準」で配信する必要がありました。
Twitter 社の Android エンジニアリング マネージャーである Luke Millar 氏は次のように述べています。「Android M を使用するとバッテリーの寿命が伸び、良き市民としての責任を果たすことにつながります。この機能により、どの通知が Doze モードの端末をアクティブにし、どの通知がアクティブにしないかを指定できます。通常は、ユーザーの携帯端末が次回アクティブになるまでプッシュ通知の配信を保留するように GCM を設定します。ただし、ユーザーはダイレクト メッセージなどの一部のプッシュ通知を即座に受け取ることを求めているため、これらの通知には優先度を「高」に設定します。この機能は、これらの通知がユーザーに配信されるタイミングと方法を指定できるので便利です。」
Twitter 社のエンジニアは Doze モードをテストするため、Android デベロッパー サイトに記載されているステップを実行しました。このサイトには、adb コマンドを使用して物理端末または仮想端末で Doze モードをシミュレートする方法が示されています。Twitter 社はこの方法を使用して、メッセージングの優先度が実際の環境でどのように機能するかをテストできました。
また同社は、Twitter ハイライトを配信するなどの大きなペイロードの送信時にもう 1 つのベスト プラクティスを使用しました。それは、通知でメタデータを渡し、そのメタデータを使用してアプリを同期し、リクエストしたハイライトを取得するということです。言い換えると、通知でハイライトのコンテンツを送信せず、同期メカニズムをトリガーして、アプリのコンテンツをアップデートしました。
スタンバイ環境にあるアプリで GCM を使用する場合の詳細については、このドキュメントをご覧ください。
GCM の詳細と、Android、iOS、ウェブ アプリケーションで GCM を通知に使用する方法については、こちらの Google デベロッパー サイトをご覧ください。
Posted by Eiji Kitamura - Developer Relations Team