Apache Cordova を使用してモバイルで Chrome アプリを実行する

モバイル版 Chrome アプリを実行するためのツールチェーンは、早期デベロッパー プレビュー版です。フィードバックがございましたら、GitHub Issue TrackerChrome アプリ デベロッパー フォーラムStack OverflowGoogle+ デベロッパー ページからお気軽にお寄せください。

パソコンとモバイルの両方で動作している Chrome アプリ

概要

Android と iOS で Chrome アプリを実行するには、Apache Cordova に基づくツールチェーンを使用します。ツールチェーンは、HTML、CSS、JavaScript を使用してネイティブ機能を備えたモバイルアプリを作成するためのオープンソースのモバイル開発フレームワークです。

Apache Cordova は、アプリケーションのウェブコードをネイティブ アプリケーション シェルでラップし、Google Play や Apple App Store からハイブリッド ウェブアプリを配布できるようにします。既存の Chrome アプリで Apache Cordova を使用するには、ccac ordova c hrome a pp)コマンドライン ツールを使用します。

補足資料

さっそく始めましょう

ステップ 1: 開発ツールをインストールする

モバイル版 Chrome アプリのツールチェーンは iOS 6 以降と Android 4.x 以降をターゲットとすることができます。

すべてのプラットフォームに対する開発の依存関係

  • Node.js バージョン 0.10.0 以降と npm が必要です。

    • Windows: nodejs.org からダウンロード可能なインストール実行可能ファイルを使用して Node.js をインストールします。
    • OS X または Linux: インストール実行可能ファイルは nodejs.org から入手することもできます。root アクセス権の必要がない場合は、nvm でインストールする方が便利な場合もあります。例:
    curl https://raw.github.com/creationix/nvm/master/install.sh | sh
    source ~/.bash_profile || source ~/.profile || source ~/.bashrc
    nvm install 0.10
    nvm alias default 0.10
    

Android をターゲットとする

Android 向けのアプリを開発する場合は、以下もインストールする必要があります。

  • Java JDK 7(以降)
  • Android SDK バージョン 4.4.2 以降
    • Android ADT Bundle にバンドルされている Android SDK と Android デベロッパー ツールをインストールします。
    • sdk/toolssdk/platform-toolsPATH 環境変数に追加します。
    • OS X: Android SDK に付属する Eclipse のバージョンには JRE 6 が必要です。Eclipse.app を開いたときに JRE 6 のインストールが求められない場合は、Mac App Store から入手してください。
    • Linux: Android SDK には 32 ビットのサポート ライブラリが必要です。Ubuntu では、apt-get install ia32-libs でこれらを取得します。
  • Apache Ant
    • apache-ant-x.x.x/binPATH 環境変数に追加します。

iOS をターゲットに設定

なお、iOS 開発は OS X 上でのみ実施できます。加えて、以下をインストールする必要があります。

  • Xcode 5(以降)(Xcode コマンドライン ツールを含む)
  • ios-deploy(iOS デバイスへのデプロイに必要)
    • npm install -g ios-deploy
  • ios-sim(iOS Simulator へのデプロイに必要)
    • npm install -g ios-sim
  • 省略可: iOS デベロッパーとして登録する
    • これは、実際のデバイスでのテストやアプリストアへの送信に必要です。
    • iPhone/iPad シミュレータのみを使用する場合は、登録をスキップできます。

cca コマンドライン ツールをインストールする

npm を介して cca をインストールします。

npm install -g cca

後で新しいリリースでツールチェーンを更新するには: npm update -g cca

コマンドラインから次のコマンドを実行して、すべてが正しくインストールされていることを確認します。

cca checkenv

出力された cca のバージョン番号と、Android または iOS の SDK のインストール確認が表示されます。

ステップ 2: プロジェクトを作成する

YourApp という名前のディレクトリにデフォルトのモバイルアプリ プロジェクトを作成するには、次のコマンドを実行します。

cca create YourApp

すでに作成した Chrome アプリをモバイル プラットフォームに移植する場合は、--link-to フラグを使用してシンボリック リンクを作成します。

cca create YourApp --link-to=path/to/manifest.json

既存の Chrome アプリのファイルをコピーするには、--copy-from フラグを使用します。

cca create YourApp --copy-from=path/to/manifest.json

まだ Chrome アプリをお持ちでない場合は、モバイル サポート付きの Chrome アプリのサンプルのいずれかを試してみる。

ステップ 3: 開発

アプリケーションをビルドして実行できる方法は 2 つあります。

  • 方法 A: コマンドライン、cca ツールを使用する。
  • 方法 B: Eclipse や Xcode などの IDE を使用する。IDE の使用は完全に任意です(ただし、多くの場合は、ハイブリッド モバイルアプリの起動、構成、デバッグに役立ちます)。

オプション A: コマンドラインを使用して開発とビルドを行う

cca で生成されたプロジェクト フォルダのルートから、次のコマンドを実行します。

Android

  • Android Emulator でアプリを実行するには: cca emulate android
    • 注: テストを行うには、エミュレータをセットアップする必要があります。これを設定するには、android avd を実行します。android を実行して、追加のエミュレータ イメージをダウンロードします。Intel イメージの実行を高速化するには、Intel の HAXM をインストールします。
  • 接続された Android デバイスでアプリを実行するには: cca run android

iOS

  • iOS Simulator でアプリを実行するには: cca emulate ios
  • 接続された iOS デバイスでアプリを実行するには: cca run ios

オプション B: IDE を使用して開発とビルドを行う

Android

  1. Eclipse で、[File] -> [Import] を選択します。
  2. [Android] > [Existing Android Code Into Workspace] を選択します。
  3. cca で作成したパスからインポートします。
    • インポートするプロジェクトが 2 つ(そのうちの 1 つが *-CordovaLib)必要があります。
  4. [Play] ボタンをクリックしてアプリを実行します。
    • (すべての Java アプリケーションと同様に)実行構成を作成する必要があります。通常、初回になると自動的に入力を求めるメッセージが表示されます。
    • 初回はデバイス/エミュレータを管理する必要があります。

iOS

  1. ターミナル ウィンドウで次のように入力して、Xcode でプロジェクトを開きます。

    cd YourApp
    open platforms/ios/*.xcodeproj
    
  2. 適切なターゲットを作成していることを確認します。

    左上([Run] ボタンと [Stop] ボタンの横)には、ターゲット プロジェクトとデバイスを選択するためのプルダウンがあります。CordovaLib ではなく YourApp が選択されていることを確認します。

  3. 再生ボタンをクリックします。

アプリのソースコードに変更を加える

HTML、CSS、JavaScript ファイルは、cca プロジェクト フォルダの www ディレクトリにあります。

重要: www/ を変更した後は、アプリケーションをデプロイする前に cca prepare を実行する必要があります。コマンドラインから cca buildcca run、または cca emulate を実行している場合は、準備手順が自動的に行われます。Eclipse または Xcode を使用して開発している場合は、cca prepare を手動で実行する必要があります。

デバッグ

モバイル版 Chrome アプリは、Cordova アプリをデバッグすると同じ方法でデバッグできます。

ステップ 4: 次のステップ

モバイルアプリが正常に機能するようになったので、モバイル デバイスでのエクスペリエンスを向上させるさまざまな方法を紹介します。

モバイル マニフェスト

Chrome アプリの設定の中には、モバイル プラットフォームにのみ適用されるものがあります。これらを格納するために www/manifest.mobile.json ファイルを作成しました。特定の値は、プラグインのドキュメントとこのガイド全体で参照されています。

必要に応じて値を調整してください。

アイコン

モバイルアプリは、デスクトップの Chrome アプリよりもアイコンの解像度が多少高くなければなりません。

Android の場合、次のサイズが必要です。

  • 36px、48px、78px、96px

iOS アプリの場合、必要なサイズは、iOS 6iOS 7 のどちらをサポートしているかによって異なります。最低限必要なアイコン数は次のとおりです。

  • iOS 6: 57px、72px、114px、144px
  • iOS 7: 72px、120px、152px

完全なアイコンリストの場合、manifest.json ファイルは次のようになります。

"icons": {
  "16": "assets/icons/icon16.png",
  "36": "assets/icons/icon36.png",
  "48": "assets/icons/icon48.png",
  "57": "assets/icons/icon57.png",
  "72": "assets/icons/icon72.png",
  "78": "assets/icons/icon78.png",
  "96": "assets/icons/icon96.png",
  "114": "assets/icons/icon114.png",
  "120": "assets/icons/icon120.png",
  "128": "assets/icons/icon128.png",
  "144": "assets/icons/icon144.png",
  "152": "assets/icons/icon152.png"
}

アイコンは、cca prepare を実行するたびに、各プラットフォームの適切な場所にコピーされます。

スプラッシュ画面

iOS のアプリでは、アプリの読み込み中に短いスプラッシュ画面が表示されます。デフォルトの Cordova スプラッシュ画面のセットは platforms/ios/[AppName]/Resources/splash に含まれています。

必要なサイズは次のとおりです。

  • 320 x 480 ピクセル + 2 倍
  • 768 x 1,024 ピクセル + 2x(iPad 縦向き)
  • 1024 x 768 px + 2x(iPad の横向き)
  • 640 x 1,146 ピクセル

現在、スプラッシュ画面の画像は cca によって変更されていません。

ステップ 5: 公開する

プロジェクトの platforms ディレクトリには、完全なネイティブ プロジェクトが 2 つ(Android 用と iOS 用)あります。これらのプロジェクトのリリース バージョンをビルドして、Google Play や iOS App Store に公開できます。

Play ストアに公開

Android アプリを Play ストアに公開するには:

  1. 2 つの Android バージョン ID を更新してから、cca prepare を実行します。

    • android:versionNamewww/manifest.jsonversion キーを使用して設定されます(これにより、デスクトップのパッケージ化アプリのバージョンも設定されます)。
    • android:versionCode は、www/manifest.mobile.jsversionCode キーを使用して設定されます。
  2. platforms/android/ant.properties を編集(または作成)して、key.store プロパティと key.alias プロパティを設定します(Android デベロッパー ドキュメントを参照)。

  3. プロジェクトをビルドします。

    ./platforms/android/cordova/build --release
    
  4. platforms/android/ant-build/ 内にある署名済みの .apk を見つけます。

  5. 署名したアプリを Google Play デベロッパー コンソールにアップロードします。

iOS App Store に公開する

  1. www/manifest.mobile.jsCFBundleVersion キーを設定してアプリのバージョンを更新し、cca prepare を実行します。
  2. platforms/ios ディレクトリにある Xcode プロジェクト ファイルを開きます。

    オープン プラットフォーム/ios/*.xcodeproj

  3. Apple の App Distribution ガイドに沿って対応します。

特記事項

Chrome アプリを初めて使用する場合の最大の問題は、一部のウェブ機能が無効になっていることです。ただし、そのうちのいくつかは現在 Cordova 内で動作します。

モバイルでは、Chrome アプリをそのままでは機能しないことがあります。モバイルへの移行に関する一般的な問題には、次のようなものがあります。

  • 小画面(特に縦向き)でのレイアウトの問題。
    • おすすめの修正: CSS メディアクエリを使用して、小さい画面向けにコンテンツを最適化します。
  • chrome.app.window を介して設定された Chrome アプリのウィンドウ サイズは無視され、デバイスのネイティブ サイズが使用されます。
    • 推奨修正: ハードコードされたウィンドウ サイズを削除し、さまざまなサイズを念頭に置いてアプリを設計してください。
  • 小さいボタンやリンクは指でタップしにくい。
    • おすすめの修正: タップ ターゲットを 44×44 ポイント以上に調整します。
  • マウスホバーに依存している、タッチ スクリーンにはない予期しない動作
    • 推奨修正: カーソルを合わせるだけでなく、タップ時にプルダウンやツールチップなどの UI 要素を有効にします。
  • 300 ミリ秒のタップ遅延。

サポートされている Chrome API

次のような Chrome アプリの主要な API をモバイル版 Chrome アプリで利用できるようにしました。

  • identity - OAuth2 を使用してユーザーのログイン
  • 支払い - モバイルアプリでバーチャル アイテムを販売
  • pushMessaging - サーバーからアプリにメッセージを push する
  • sockets - TCP と UDP を使用してネットワーク上でデータを送受信
  • 通知(Android のみ)- モバイルアプリからリッチ通知を送信します。
  • storage - Key-Value データをローカルで保存および取得
  • syncFileSystem - Google ドライブでサポートされるファイルを保存および取得します。
  • アラーム - タスクを定期的に実行します
  • idle - マシンのアイドル状態の変化を検出します。
  • power - システムの電源管理機能をオーバーライドします。

ただし、すべての Chrome JavaScript API が実装されているわけではありません。また デスクトップ版 Chrome の一部の機能は モバイルでは利用できません

  • <webview> タグなし
  • IndexedDB なし
  • getUserMedia() がない
  • NaCl 不使用

進行状況は [API ステータス] ページで確認できます。

Chrome アプリ デベロッパー ツール

Android 向け Chrome アプリ デベロッパー ツール(ADT)はスタンドアロンの Android アプリで、前述のように開発ツールチェーンを設定しなくても Chrome アプリをダウンロードして実行できます。Android デバイスで既存の Chrome アプリ(すでに .crx としてパッケージ化されているもの)を簡単にプレビューする場合は、Chrome ADT を使用します。

Chrome ADT for Android は現在、プレアルファ版リリースです。試してみるには、ChromeADT.apk リリースノートでインストールと使用方法をご確認ください。