この記事は Roberto Orgiu による Android Developers - Medium の記事 " Make your app large screen ready " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
現在、Android は数十億台のデバイスで動作しています。スマートフォンはこのエコシステムの一部でしかありません。タブレット、折りたたみ式、そしてノートパソコンやデスクトップ PC までが Android アプリをサポートしているので、皆さんのアプリもさまざまなフォーム ファクタで動作することになります。
この記事では、大画面サポートを始める方法とその重要性について説明します。画面の向きの変化、アスペクト比、アダプティブ レイアウトを正確に扱うのは難しいことのように思えるかもしれませんが、新しい大画面エクスペリエンスを考えるなら、複数のフォーム ファクタに対応することでユーザーに新たなすばらしい可能性を提供することができます。
そこで私たちは、大画面デバイスを最大限に活用してもらうため、アプリの大画面対応を特に重視するように Google Play を大きく変更し、ユーザーが高品質なアプリやゲームを探し、活用できるようにしたいと考えています。さらに、Android 12L によって、デバイス メーカーは優先する画面の向きについてのアプリのリクエストを無視できるようになっています。これらの変更点は、こちらから確認できます。
すべての画面に対応することは難しく、アプリをすべての画面に対応させる際の考え方を変える必要があります。そこで、大画面サポートをいくつかのレベルに分割して考えます。アプリで提供できるサポートのレベルには、3 つの段階 (英語) があります。基本的な Tier 3 の大画面対応 では、どんな大画面デバイスでも全画面で問題なくアプリが動作することが求められます。次の段階は、アプリを大画面向けに最適化することです。Tier 2 の大画面最適化では、アプリを最適なレイアウトで表示し、拡張外部入力をサポートすることが求められます。最後に、最高のサポートレベルである Tier 1 の大画面差別化 では、大画面向けに完全に差別化したエクスペリエンスを提供します。
Tier DefinitionTier 3 Large screen readyTier 2 Large screen optimizedTier 1 Large screen differentiated
Tier Definition
Tier 3 Large screen ready
Tier 2 Large screen optimized
Tier 1 Large screen differentiated
この記事では、Tier 3 を始める方法と、アプリで大画面向けの最適化が重要な理由について説明します。
Tier 3 は、アプリが大画面デバイスで適切に動作するための第一段階です。以下のガイドに従い、アプリがすべての要件を満たすことと、ユーザーがすべての重要なフローを完了できることを確認しましょう。
縦向きのスマートフォンと横向きの大画面
構成の変化への対応は Android アプリ開発で常に基礎となるものですが、大画面デバイスでは特に重要です。先ほども述べたように、ユーザーは画面の向きを強制できます。しかし、考慮すべき構成の変化はほかにもあります。大画面では、物理キーボードの接続、ウィンドウのサイズ変更などのイベントが頻繁に発生します。新しいフォーム ファクタが利用できるようになった今、デバイスの持ち方もスマートフォンの持ち方と同じであるとは限りません。最初に考慮しなければならないのは、アプリがクラッシュせず、構成の変化の際に状態を保持しなければならない点です。これには、スクロールの位置やテキスト フィールドに入力されたテキストなどが含まれます。メディアの再生も、構成の変化が始まったときの続きから再開すべきでしょう。
これを実現する方法は複数あります。、ViewModel に状態を保存し、それを UI にプッシュすることから始めるとよいでしょう。しかし、ほかの API を使ってこれに対処することもできます。
マルチウィンドウ モードの折りたたみ式デバイス
複数のフォーム ファクタ、とりわけ大画面デバイスでは、ユーザーが一度に 1 つのアプリしか実行しないという考え方は通用しません。大画面では、ほかのアプリを一緒に実行するというのがほとんどのアプリの新基準になるはずです。そのため、この点に対応できるようにしておいた方がよいでしょう。
マルチウィンドウでは、アプリのライフサイクルについて再考し、それによって失われるリソースの喪失について調査しなければならないため、新たな課題が生まれますが、その対応も重要な一歩です。
マルチウィンドウと複数アプリの再開を進めるために、マルチウィンドウのサポートをご確認ください。
折りたたまれたデバイスと広げられたデバイスでのカメラの向き
大画面対応においては、カメラ機能を扱うことも非常に重要な作業ですが、これは特に難しい作業の 1 つでもあります。ユーザーはこのコンポーネントを、どのようなウィンドウ サイズでもあらゆる向きで利用できます。また、折りたたまれた状態でも利用できます。テーブルトップ モードなどの特殊な姿勢を活用したり、考えたことがないようなエクスペリエンスをファクタに応じて提供したりすることも検討できるでしょう。
カメラのプレビューを正しく表示し、正しい向きとアスペクト比でメディアを再生できることは、ユーザーにとって非常に重要です。そしてこの点も私たちがサポートします。今年の4月に、カメラアプリでサイズ変更可能なサーフェスを扱う際に役立つ新しい Codelabを公開しました。また、低水準 API にアクセスする必要がないなら、CameraX (英語) を使うこともできます。試してみたい方は、ExoPlayer によるメディア ストリーミングの Codelab やこちらのメディア プロジェクション API ガイドもご覧ください。
Android タブレットとキーボード、トラックパッド、タッチペン
大画面フォーム ファクタによって、ユーザーの選択肢がこれまでになく広がっていることを考えてみてください。たとえば、多くの新しいタブレットにはキーボードとトラックパッドが付属しており、ユーザーは外付け Bluetooth キーボードを使って大画面を活用するかもしれません。そのため、アプリを再起動することなく、仮想キーボードと物理キーボードを切り替えられることが重要です。
マウスとキーボードによる操作も忘れてはいけません。このような場合、タッチのサポートがない Chromebook などでは、上記のようなデバイスが唯一の入力ソースとなる場合があります。
以上のような可能性に対応する方法などについては、Android デベロッパー サイトで外部入力の処理をご確認ください。
すべての画面ですばらしいエクスペリエンスを実現するという考えは、アプリ開発の前提に疑問を投げかけるかもしれません。しかし、大画面フォーム ファクタに対応することは、アプリを堅牢で身近なものにする絶好のチャンスでもあります。Tier 3 のチェックリスト (英語) とテスト (英語) を参照し、アプリの大画面に対応するためのすべての要件を満たしていることを確認してください。そして、大画面対応に向けて次のステップを踏み出しましょう。