Chromebook 向けアプリの最適化

現在、Google Chromebook では、Google Play ストアと Android アプリがサポートされています。このドキュメントでは、Chromebook 向けの Android アプリを最適化する方法をいくつか紹介します。

アプリのマニフェスト ファイルのアップデート

Chromebook 向け Android アプリの最適化を開始するには、マニフェスト ファイル(AndroidManifest.xml)をアップデートし、Chromebook とその他の Android 端末の主要な違い(ハードウェアおよびソフトウェアの)を明確にします。

Chrome OS バージョン M53 以降では、android.hardware.touchscreen 機能を明示的に要求しないすべての Android アプリが、android.hardware.faketouch 機能をサポートする Chrome OS 端末でも機能するようになりました。ただし、すべての Chromebook でアプリを可能な限り最適な方法で動作させるには、次の例で示されているように、マニフェスト ファイルで android.hardware.touchscreen 機能が要求されないように設定を調整します。また、マウスとキーボードのインタラクションを確認する必要があります。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          ... >
    <!-- Some Chromebooks don't support touch. Although not essential,
         it's a good idea to explicitly include this declaration. -->
    <uses-feature android:name="android.hardware.touchscreen"
                  required="false" />
</manifest>

多くの場合、異なる端末では、利用できるセンサーが異なります。Android プラットフォームがサポートするすべてのセンサーの概要については、センサーの概要を参照してください。Android の携帯型端末には GPS と加速度計が装備されている場合がありますが、すべての Chromebook でセンサーが利用できるわけではありません。ただし、センサーの機能が別の方法で提供される場合があります。たとえば、Chromebook は GPS センサーを備えていないことがありますが、Wi-Fi 接続に基づいた位置情報データは提供しています。センサーのサポートに関係なく、Chromebook でアプリを実行する必要がある場合、センサーが要求されないようにマニフェスト ファイルをアップデートする必要があります。

注: アプリに特定のセンサーは必要ないが、センサーが利用できるときはセンサーからの計測を使用する場合、アプリでセンサーからの情報の収集を試みる前に、センサーの可用性を動的に確認する必要があります。

Chromebook では、一部のソフトウェア機能がサポートされません。たとえば、カスタム IME、アプリ ウィジェット、ライブ壁紙、およびアプリ ランチャーを備えたアプリはサポート対象ではなく、Chromebook にインストールすることはできません。Chromebook で現在サポートされていないソフトウェア機能の完全なリストについては、互換性のないソフトウェア機能を参照してください。

マルチ ウィンドウ モードのサポートの活用

Chrome OS に Android アプリを実装すると、基本的なマルチ ウィンドウがサポートされます。Android は Chrome OS 上のアプリをフルスクリーンに自動的に表示する代わりに、このフォーム ファクタに適したレイアウトにアプリをレンダリングします。Google は、次の最も一般的なウィンドウ レイアウトをサポートしています。

  • 縦向き – Nexus 5 に類似してます。
  • 横向き – Nexus 7 に類似してます。
  • 最大化 – 利用可能なすべてのスクリーン ピクセルを使用します。

さらに、エンドユーザーには、使用できるすべてのレイアウトを切り替えるためのウィンドウ コントロールが提供されます。デベロッパーは正しい向きのオプションを選択することにより、ユーザーがアプリを起動すると、アプリが正しいレイアウトで表示されるようにすることができます。アプリが縦向きと横向きで使用できる場合、可能な限り、デフォルトでアプリが横向きで表示されます。設定した向きのオプションは、アプリ単位で保持されます。アプリをテストして、アプリでウィンドウ サイズの変更が適切に処理されることを確認するようにしてください。

キーボード、トラックパッド、マウスのサポート

すべての Chromebook は物理的なキーボードとトラックパッドを備えており、一部の Chromebook にはタッチスクリーンが装備されています。一部の端末はコンバーチブル型であり、ノートパソコンにもタブレットにもなります。

多くの既存のアプリでは、特別な操作をしなくても、マウスとトラックパッドのインタラクションが既にサポートされています。ただし、ユーザーが、タッチスクリーンではなく、トラックパッドを使用してアプリを操作する際のアプリの動作を調整しておくことをお勧めします。また、両方のインターフェースをサポートおよび区別する必要があります。物理的なキーボードがサポートされている場合は、アプリのユーザーにホットキーを提供することより、生産性を向上させることができます。たとえば、アプリが印刷をサポートしている場合、Ctrl+P を押して印刷ダイアログを開けるようにします。

バックアップと復元の効果的な使用

Chromebook の最も強力な機能の 1 つは、ユーザーが 1 つの端末から別の端末に簡単に移行できることです。つまり、ユーザーが 1 つの Chromebook の使用を停止し、別の Chromebook の使用を開始する場合は、ログインするだけで、すべてのアプリが表示されます。

ヒント: 必須ではありませんが、アプリのデータをクラウドにバックアップすることをお勧めします。

学校などで Chromebook を多くのユーザーと共有することもできます。ローカル ストレージは有限であるため、アカウント全体を(ストレージとともに)端末からいつでも削除できます。教育用の設定では、このシナリオに留意してください。

NDK ライブラリのアップデート

アプリが Android NDK ライブラリを使用していて、対象とする SDK バージョンが 23 以上である場合、Android 6.0(API レベル 23)以降では、テキストの再配置に互換性がないため、NDK ライブラリの ARM および x86 バージョンからテキストの再配置を削除する必要があります。特に、x86 アーキテクチャを使用する端末上でアプリを実行する場合、NDK ライブラリにテキストの再配置を残したままにすると、Chromebook との非互換性エラーが発生する場合があります。

注: NDK ライブラリを適切にアップデートする方法の詳細については、「Android 6.0 の変更点」のランタイムを参照してください。

新しい Android 機能のサポート計画

Chromebook 向け Android アプリには、最初から Android 6.0(API レベル 23)用の API が付属しています。上記のベスト プラクティスを順守すると、Android 7.0(API レベル 24)で導入されたマルチ ウィンドウの改善点との互換性がアプリで実現する可能性が高くなります。Android 7.0 で利用できる API と機能(いくつかの改善が適用されている)のサポートを計画することをお勧めします。たとえば、マルチ ウィンドウのサポートをより適切に組み込むことで、アクティビティのサイズを任意に変更し、アクティビティがより自然に見えるようにすることができます。また、アプリとマウスカーソル コントロールのドラッグ アンド ドロップ操作を行うための API も利用できます。

アプリのテスト

テストのために Chromebook でアプリを読み込むには、Chrome OS 端末でデベロッパー モードに移行し、提供元不明のアプリを許可する必要があります。端末でデベロッパー モードに移行するための詳細な手順については、Chrome OS 端末でデベロッパー モードに移行するを参照してください。端末でデベロッパー モードに移行した後、[Chrome Settings] に移動し、[security in app] 設定にある [Enable Unknown Sources] を選択します。

デベロッパー モードを有効にした後は、いくつかの方法で Chrome OS 端末に Android アプリを読み込むことができます。詳細については、「Chromebook でのアプリの読み込み」のアプリの読み込みを参照してください。

注: さまざまな Chromebook 端末と利用可能なフォーム ファクタで Android アプリが適切に機能するようにするには、ARM ベースの Chromebook、x86 ベースの Chromebook、タッチスクリーンを備えた端末およびタッチスクリーンを備えていない端末、コンバーチブル型端末(ノートパソコンにもタブレットにもなる端末)でアプリをテストすることをお勧めします。サポートされている端末の完全なリストについては、Chrome OS 端末によるアプリのサポートを参照してください。

ADB のセットアップ

ADB 接続のセットアップを試行する前に、Chrome OS をデベロッパー モードで起動して、Chromebook に Android アプリをインストールできるようにする必要があります。

警告: Chrome OS 端末をデベロッパー モードに切り替えると、端末が再起動し、端末上のすべての既存データがクリアされます。

ADB をセットアップするには、次のステップを実行します。

  1. Ctrl+D を押して端末を起動します。
  2. セットアップ プロセスを完了します。
  3. テスト アカウントにログインします。
  4. Google Play ストアのサービス利用規約に同意します。

ファイアウォールの設定

ADB の接続要求を許可するように Chrome OS のファイアウォールを設定するには、次のステップを実行します。

  1. Ctrl+Alt+T を押して Chrome OS 端末を起動します。
  2. shell」と入力して、bash コマンドシェルを開始します。
    crosh> shell
    chronos@localhost / $
    
  3. 次のコマンドを入力して、デベロッパー機能をセットアップし、ファイアウォールの設定を変更するためにディスク書き込みアクセスを有効にします。
    chronos@localhost / $ sudo /usr/libexec/debugd/helpers/dev_features_rootfs_verification
    chronos@localhost / $ sudo reboot
    
    sudo reboot コマンドで、Chromebook を再起動します。

    注: Tab キーを押して、ファイル名のオートコンプリートを有効にすることができます。

  4. 端末が再起動した後、テスト アカウントにログインし、次のコマンドを入力して、secure shell を有効にし、ファイアウォールを適切に設定します。
    chronos@localhost / $ sudo /usr/libexec/debugd/helpers/dev_features_ssh
    
    ここで、コマンドシェルを終了します。

注: Chromebook でこの手順を一度だけ実行する必要があります。

Chromebook の IP アドレスの確認

Chromebook の IP アドレスを確認するには、次のステップを実行します。

  1. 画面の右下部にあるクロック アイコンをクリックします。
  2. [Settings] をクリックします。
  3. [Settings] 領域の [Internet Connection] セクションには、利用可能なすべてのネットワークが一覧表示されます。ADB 用に使用するネットワークを選択します。
  4. 表示された IP アドレスをメモしてください。

ADB デバッグの有効化

ADB デバッグを有効にするには、次のステップを実行します。

  1. 画面の右下部にあるクロック アイコンをクリックします。
  2. [Settings] をクリックします。
  3. [Android Apps] セクションで、[Manage your Android apps in Settings] という行にある [Settings] リンクをクリックします。これにより、Android アプリの設定が表示されます。
  4. [About device] をクリックします。
  5. [Build number] を 7 回クリックして、デベロッパー モードに移行します。
  6. ウィンドウの左上部にある矢印をクリックして、メインの [Settings] 画面に戻ります。
  7. 新しい [Developer options] アイテムをクリックし、[ADB debugging] をアクティブにし、[OK] をクリックして、ADB デバッグを有効にします。
  8. 開発マシンに戻り、Chromebook の IP アドレスとポート 22 を使用して、ADB を介して Chromebook に接続します。
  9. Chromebook で、デバッグを許可するかどうかのプロンプトが表示されたら、[Allow] をクリックします。これで、ADB セッションが確立されました。

ADB デバッグのトラブルシューティング

ADB 端末は、すべてが適切に接続されているにもかかわらず、オフラインであると表示される場合があります。この問題のトラブルシューティングを行うには、次のステップを実行します。

  1. [Developer options] で [ADB debugging] を無効にします。
  2. ターミナル ウィンドウで adb kill-server を実行します。
  3. [ADB debugging] オプションを再度有効にします。
  4. ターミナル ウィンドウで adb connect の実行を試行します。
  5. デバッグを許可するかどうかのプロンプトが表示されたら、[Allow] をクリックします。これで、ADB セッションが確立されました。

その他の学習リソース

Chromebook 向けの Android アプリを最適化する方法に関してさらに学ぶ場合は、次のリソースを活用してください。