Register now for Android Dev Summit 2019!

何十億人ものユーザーに受け入れられる UI とコンテンツ

アプリではユーザーの入力に素早く応答するインタラクティブな UI を提供し、必要なら起動の遅さを補うようにします。さまざまな言語のバージョンを考慮して、空白、密度、順序、強調、表現の違いを反映してアプリが容易にローカライズできるよう設計されていることを確認します。また、スマートフォンの設定に合わせて、日付、時刻、その他の単位がローカライズされた内容で表示されることも確認してください。

高速で応答性が高いユーザー インターフェース

アプリのパフォーマンスに対するユーザーの感じ方は、大部分がアプリの応答性の高さによって決まります。たとえばユーザーとのインタラクションと軽快な表示は、パフォーマンスの良いアプリの 2 つの重要な特性です。ここでは、それらの特性を含め、アプリのスピードと応答性のさまざまな側面を最適化するためのヒントをご紹介します。

タップ可能なすべてのアイテムにタッチ フィードバックを加える

  • タッチ フィードバックによって、ユーザー インターフェースに触感が加わります。アプリでタップ可能なすべての要素にタッチ フィードバックを適用し、ユーザーにできるだけ遅延を感じさせないようにする必要があります。
  • レスポンシブなインタラクションは、ユーザーの入力に対して適切なタイミングで、わかりやすく、楽しい画面の反応を生み出すため、アプリをより頻繁に利用するよう促すことができます。レスポンシブなインタラクションによって、アプリは、情報を提供するサービスから、視覚と触覚という複数の応答を利用したコミュニケーション体験を提供するものへとレベルアップします。
  • 詳細については、タッチ フィードバックのカスタマイズに関する Android トレーニングをご覧ください。

UI を常にインタラクティブにする

  • バックグラウンド アクティビティを実行しているときに応答しないアプリは遅く感じられ、ユーザーの満足度が低下します。アプリはバックグラウンド アクティビティにかかわらず、常に UI が反応する状態を維持する必要があります。そのためには、ネットワークの処理や負荷の高い操作をバックグラウンド スレッドで実行し、UI スレッドをできる限りアイドル状態にしておきます。
  • マテリアル デザインのアプリは、アプリがコンテンツを読み込む際の視覚的な変化を最小限にし、1 つのアクティビティ インジケーターで各オペレーションを表現します。ローディング インジケーターでダイアログをブロックしないようにしてください。
  • ビューに表示するコンテンツがないと、空の状態が発生します。たとえばリストのアイテムがない、検索結果を得られない、といった状況です。空の状態を回避するには、スターター、チュートリアル、ベストマッチなどのコンテンツを使用します。これらの表示が不適切な場合は、インタラクティブでない画像かテキストのタグラインを表示して、そこに何が表示されるはずであるかをユーザーに知らせます。
  • 詳細については、アプリの応答性を維持する方法に関する Android トレーニングをご覧ください。

低価格の端末で 1 秒あたり 60 フレームを目指す

  • 低価格の端末でも、アプリを常に高速で滑らかに動作させる必要があります。
  • オーバードローによってアプリの速度が大幅に低下する場合があります。これは、ピクセルの重ね塗りが発生した場合に生じます。たとえば、一番上にボタンが配置された画像などが該当します。オーバードローが何度か発生するのは避けられませんが、滑らかなフレームレートを実現するにはこの回数を最小限にする必要があります。最小限にするには、アプリで GPU オーバードローのデバッグを実行してください。
  • Android 端末は 1 秒あたり 60 フレーム(fps)で画面を更新します。つまり、アプリは約 16 ミリ秒で画面を更新しなければならないということになります。端末上のツールを使用してアプリのプロファイリングを実行すると、アプリがこの 16 ミリ秒の平均値を満たしているかどうか、またいつ満たしていないのかを確認できます。
  • 低価格の端末ではアニメーションを削減または削除して、端末の CPU と GPU への負荷を低減します。詳細については、レイアウトのパフォーマンスの向上に関する Android トレーニングをご覧ください。
  • ビュー階層を効率化すると、メモリ消費量を増やすことなくアプリを高速化できます。詳細については、パフォーマンスとビュー階層をご覧ください。

開始に時間のかかるアプリで起動画面を使用する

  • 起動画面は、ユーザーがそのアプリで最初に見るものです。アプリの起動中に空のキャンバスが表示されていると、読み込み時間がより長く感じられます。したがってプレースホルダ UI またはブランドを示す起動画面を使用して、読み込み時間が短く感じられるようにしてください。
  • プレースホルダ UI は、最もシームレスな起動時の遷移で、アプリの起動やアプリ内アクティビティの遷移に最適です。
  • ブランドを示す起動画面は、一瞬ブランドを表示することで、UI コンテンツへの注意をそらす効果があります。
  • スプラッシュ画面の実装の詳細については、マテリアル デザインの仕様書の起動画面のセクションをご覧ください。
  • 起動速度が遅い問題に対応する一番の方法は、軌道を遅くしている処理を行わないことです。起動時間のパフォーマンスでは、アプリの起動時間を短縮するために役立つ情報が提供されています。

ユーザー インターフェースのベスト プラクティス

  • マテリアル デザインは、優れたデザインに関する古くから知られる原則に、テクノロジーおよびサイエンスがもたらすイノベーションと可能性を融合したものです。マテリアル デザインは、さまざまなプラットフォームや端末のサイズで統一されたエクスペリエンスを実現するため、基盤となるシステムを提供します。ユーザーがアプリの使い方を直感的に理解できるように、マテリアル デザイン コンポーネントの使用を検討してください。
  • すぐに使えるマテリアル デザイン コンポーネントがマテリアル デザイン サポート ライブラリに含まれています。これらのコンポーネントは、Android 2.1(API レベル 7)以降でサポートされています。

ローカライズ

  • 世界各地のユーザーがアプリを使用する可能性がありますが、ユーザーの第 1 言語がデベロッパーの第 1 言語とは異なる場合があります。ユーザーが読める言語でアプリを表示しないと、使用してもらう機会を逃してしまいます。そのため、アプリを主要な地域の言語にローカライズしなければなりません。
  • 詳細については、異なる言語のサポートに関する Android トレーニングをご覧ください。
  • Android 7.0(API レベル 24)以降、Android フレームワークで ICU4J API のサブセットが利用できるようになっています。これによって、アプリの複数言語へのローカライズが簡単になります。詳細については、ICU4J Android フレームワーク API をご覧ください。