何十億人ものユーザー向けの UI とコンテンツ
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
ユーザー入力にすばやく反応するインタラクティブな UI を提供し、必要に応じて起動を遅らせるようにします。
さまざまな言語のバージョンに対応することで、アプリのローカライズを簡単に行えるように設計します。たとえば、空白、密度、順序、強調、表現の違いを許容します。また、スマートフォンの設定に沿って、日付、時刻、その他の単位が国際化されて表示されるようにしてください。
高速で応答性が高いユーザー インターフェース
アプリのパフォーマンスをユーザーがどう感じるかは、アプリの応答性によって大きく左右されます。たとえば、ユーザーとのインタラクションと鮮明な表示は、パフォーマンスの高いアプリに求められる 2 つの重要な特性です。ここでは、それらとその他の要素の速度と応答性を最適化するためのヒントを紹介します。
タップ可能なすべてのアイテムに対するタッチ フィードバック
- タッチ フィードバックにより、ユーザー インターフェースに触感が加わります。アプリでタップ可能なすべての要素にタッチ フィードバックを適用し、ユーザーにできるだけ遅延を感じさせないようにする必要があります。
-
反応性の高い操作は、ユーザーの入力に対して適切なタイミングで、わかりやすく、楽しい画面の反応を出現させることで、アプリの魅力を一層高めてくれます。
反応性の高い操作には、情報配信サービスとしてのアプリに、視覚と触覚に訴えるいくつかの反応を使って情報を伝えるという一歩進んだ体験を加える効果があります。
- 詳細については、タッチ フィードバックのカスタマイズに関する Android トレーニングをご覧ください。
UI を常にインタラクティブにする
- バックグラウンド アクティビティを実行しているときに応答しないアプリは遅く感じられ、ユーザーの満足度が低下します。バックグラウンド アクティビティにかかわらず、アプリの UI は常に応答するようにします。そのためには、ネットワーク オペレーションや負荷の高い操作をバックグラウンド スレッドで実行し、UI スレッドをできる限りアイドル状態にしておきます。
- マテリアル デザインのアプリは、コンテンツを読み込む際の視覚的な変化について、それぞれの処理を 1 つのアクティビティ インジケーターで表すことにより、最小限に抑えるようにします。
読み込み中のインジケーターでダイアログをブロックしないようにしてください。
- ビューに表示するコンテンツがない場合、空の状態が発生します。たとえば、アイテムのないリストや結果の返されない検索などが考えられます。スターター、情報共有、または関連コンテンツを使用して空の状態を避けるようにします。こういった対応ができない場合は、非インタラクティブな画像と、ユーザーが表示される内容を確認できるタグライン テキストを表示します。
- 詳しくは、アプリの応答性の維持に関する Android トレーニングをご覧ください。
低価格デバイスで 60 フレーム/秒を目標にする
- 低価格のデバイスでも、アプリが常に高速で滑らかに実行されるようにします。
- オーバードローによってアプリの速度が大幅に低下する場合があります。これは、ピクセルが 1 回のパスごとに複数回描画されている場合に発生します。たとえば、ボタンが配置された画像があるとします。オーバードローが何度か発生するのは避けられませんが、滑らかなフレームレートを実現するにはこの回数を最小限にする必要があります。最小限にするには、アプリで GPU オーバードローのデバッグを実行してください。
- Android デバイスは 1 秒あたり 60 フレーム(fps)で画面を更新します。つまり、アプリは約 16 ミリ秒で画面を更新しなければならないということになります。デバイス上のツールを使用してアプリをプロファイリングし、アプリがこの 16 ミリ秒の平均値を満たしているかどうか、またどのような場合に満たしていないのかを確認します。
- 低価格デバイスでは、アニメーションを減らすか、削除して、デバイスの CPU と GPU の負荷を軽減します。詳細については、レイアウトのパフォーマンスを改善するをご覧ください。
- ビュー階層を効率化すると、メモリ消費量を増やすことなくアプリを高速化できます。詳細については、パフォーマンスとビューの階層をご覧ください。
アプリの起動が遅いときに起動画面を使用する
- 起動画面は、アプリでユーザーが最初に接するものです。
アプリの起動中に空白のキャンバスが表示されていると、読み込み時間がより長く感じられるため、プレースホルダ UI またはブランド表示用起動画面を使用して、読み込み時間が短く感じられるようにしてください。
- プレースホルダ UI は、起動時の遷移が最もスムーズで、アプリの起動とアプリ内アクティビティの遷移の両方に適しています。
- ブランド表示用起動画面では、一時的にブランドを表示して、UI でコンテンツに焦点が絞られやすくします。
- 起動速度の低下に対処する最善の方法は、速度低下自体をなくすことです。起動時間のパフォーマンスでは、アプリの起動時間を短縮するために役立つ情報を参照できます。
ユーザー インターフェースのベスト プラクティス
- マテリアル デザインとは、古典的な優れたデザインの原則と、テクノロジーと科学のイノベーションを組み合わせた視覚言語です。マテリアル デザインによって、複数のプラットフォームとデバイスサイズの間で統一感を出すことができる、単独の基盤システムが実現できます。ユーザーがアプリの使い方を直感的に理解できるように、主要なマテリアル デザイン コンポーネントの使用を検討してください。
- すぐに使用できるマテリアル デザイン コンポーネントがマテリアル デザイン サポート ライブラリに含まれています。このコンポーネントは、Android 2.1(API レベル 7)以降でサポートされています。
ローカライズ
- 世界各地のユーザーがアプリを使用する可能性があり、ユーザーの第 1 言語がデベロッパーの第 1 言語とは異なる場合があります。ユーザーが読める言語でアプリを公開しなければ、機会を逃してしまいます。したがって、アプリを主要な地域の言語にローカライズする必要があります。
- 詳細については、さまざまな言語のサポートに関する Android トレーニングにアクセスして、ローカライズ チェックリストをご覧ください。
- Android 7.0(API レベル 24)以降、Android フレームワークで ICU4J API のサブセットが利用できるようになりました。これにより、アプリを複数の言語にローカライズできるようになります。詳しくは、ICU4J Android フレームワーク API をご覧ください。
参考情報
このトピックの詳細については、次のリソースをご覧ください。
詳細トピック
ブログ投稿
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-27 UTC。"],[],[],null,["# UI and content for billions\n\nMake sure that your app offers an interactive UI that responds quickly to user input and, if necessary, compensates for a slow launch.\nEnsure that your app is designed to be easily localized by\naccommodating the variations between languages: allow for spacing, density,\norder, emphasis, and wording variations. Also make sure that date, time, and\nother units are internationalized and displayed according to the phone's\nsettings.\n\nFast and responsive user interface\n----------------------------------\n\n\u003cbr /\u003e\n\n\nThe user's perception of app performance is formed in large part by the app's\nresponsiveness. For example, interaction with the user and a crisp display are two important\ncharacteristics of a performant app. Here you can find tips on how to optimize these and\nother aspects of an app's speed and responsiveness.\n\n### Touch feedback on all touchable items\n\n- Touch feedback adds a tactile feeling to the user interface. You should ensure your app provides touch feedback on all touchable elements to reduce the perceived app latency as much as possible.\n- [Responsive interaction](https://material.io/guidelines/motion/material-motion.html) encourages deeper exploration of an app by creating timely, logical, and delightful screen reactions to user input. Responsive interaction elevates an app from an information-delivery service to an experience that communicates using multiple visual and tactile responses.\n- For more information, see the Android training on [Customizing Touch\n Feedback](/training/material/animations#Touch).\n\n### UI should always be interactive\n\n- Apps that are unresponsive when performing background activity feel slow and reduce user satisfaction. Ensure your app always has a responsive UI regardless of any background activity. Achieve this by performing network operations or any heavy-duty operations in a background thread---keep the UI thread as idle as you can.\n- Material Design apps use minimal visual changes when loading content by representing each operation with a single activity indicator. Avoid blocking dialogs with [loading indicators](https://material.io/guidelines/components/progress-activity.html).\n- [Empty\n states](https://material.io/guidelines/patterns/empty-states.html) occur when a view has no content to show. It might be a list that has no items or a search that returns no results. Avoid empty states using starter, educational, or best match content. When these options aren't applicable display a non-interactive image and a text tagline that tell the user what they'll see when there is something to display.\n- For more information, see the Android training on [Keeping Your App\n Responsive](/training/articles/perf-anr).\n\n### Target 60 frames per second on low-cost devices\n\n- Ensure that your app always runs fast and smoothly, even on low-cost devices.\n- Overdraw can significantly slow down your app---it occurs when the pixels are being drawn more than once per pass. An example of this is when you have an image with a button placed on top of it. While some overdraw is unavoidable, it should be minimized to ensure a smooth frame rate. Perform [Debug\n GPU overdraw](/tools/performance/debug-gpu-overdraw) on your app to ensure it's minimized.\n- Android devices refresh the screen at 60 frames per second (fps), meaning your app has to update the screen within roughly 16 milliseconds. [Profile\n your app](/studio/profile/dev-options-rendering) using on-device tools to see if and when your app is not meeting this 16 ms average.\n- Reduce or remove animations on low-cost devices to lessen the burden on the device's CPU and GPU. For more information, see [Improve\n layout performance](/develop/ui/views/layout/improving-layouts).\n- An efficient view hierarchy can speed up your app without increasing the app's memory footprint. For more information, see [Performance\n and View Hierarchies.](/topic/performance/optimizing-view-hierarchies)\n\n### Use a launch screen on slow to start apps\n\n- The launch screen is a user's first experience of your application. Displaying a blank canvas while launching your app increases the perception of its loading time, so consider using a placeholder UI or a branded launch screen to reduce the perceived loading time.\n- A[placeholder UI](https://material.io/design/communication/launch-screen.html#placeholder-ui) is the most seamless launch transition, appropriate for both app launches and in-app activity transitions.\n- [Branded launch screens](/guide/topics/ui/splash-screen) provide momentary brand exposure, freeing the UI to focus on content.\n- The best way to deal with slow start speeds is not to have them. [Launch-Time Performance](/topic/performance/launch-time) provides information that may help you speed up your app's launch time.\n\nUser interface best practices\n-----------------------------\n\n- [Material Design](https://material.io/guidelines/material-design/introduction.html) is a visual language that synthesizes the classic principles of good design with the innovation and possibility of technology and science. Material Design provides a single underlying system that allows for a unified experience across platforms and device sizes. Consider using key Material Design components so that users intuitively know how to use your app.\n- Ready-to-use Material Design components are available in the [Material Design Support\n library](/topic/libraries/support-library/features#material-design). These components are supported in Android 2.1 (API level 7) and above.\n\nLocalization\n------------\n\n- Your users could be from any part of the world and their first language may not be yours. If you don't present your app in a language that your users can read, it is a missed opportunity. You should therefore localize your app for key regional languages.\n- To learn more, visit the Android training on [Supporting\n Different Languages](/training/basics/supporting-devices/languages) and see the [localization checklist](/distribute/tools/localization-checklist).\n- Starting from Android 7.0 (API level 24), the Android framework makes available a subset of the [ICU4J APIs](http://userguide.icu-project.org/), which can help you localize your app into multiple languages. For more information, see [ICU4J Android Framework APIs.](/guide/topics/resources/icu4j-framework)\n\n\u003cbr /\u003e\n\nAdditional resources\n--------------------\n\nTo learn more about this topic, view the following additional resources:\n\n### Further topics\n\n- [Keeping your app responsive](/training/articles/perf-anr)\n- [Improving layout performance](/training/improving-layouts)\n- [Introduction to animations](/training/animation/overview)\n\n### Blog posts\n\n- [Writing for global audiences](https://medium.com/google-design/writing-for-global-audiences-d339d23e9612)"]]