この投稿はDart Advent Calendar 2014の22日目の記事です。

MobileChromeAppsとは

Cordova上に構築されたMobile向けChromeApps開発環境です。 https://github.com/MobileChromeApps/mobile-chrome-apps

Mobile向けChromeApps APIが提供されます。 Androidでは最新のChromium WebViewを使うのがdefaultの設定です。素晴らしい。Cordova pluginが問題なく使えるとのことですが、自分で動作確認はしていません。 Cordovaと異なり、現状はAndroidとiOSのみの対応です。

また、Project構築からDeploymentとPublishまでワークフロー全体をサポートするツールがあり、少し試してみた程度ですが驚くほど快適でした。

Chrome Dev Editor

Chrome Dev EditorはDartで開発されているChromeAppです。Editorとしての機能はこれからに期待ですが、IDEとしてChromeAppの開発ワークフローをサポートしています。

Dart Chrome App create_project_in_cde

右クリックのcontext menuから cde_menu

Runで、ChromeAppが起動する run_in_cde

Deploy to MobileでUSBケーブル経由で実機にdeploy deploy_to_mobile_in_cde

なんと一度もconsoleでcommandを打たずにAndroidにUSB経由でdeploymentができました。 (consoleで操作するツールとしてはccaがあります。)

chrome-app-developer-tool (CADT)

Live EditならぬLive Deploymentを実現するツール。AndroidとiOSにインストールして使用します。上の実機deployにはこのCADTのインストールが必要です。

Live Deploymentってなによ?と思ったのですが、まさにLive Editのように、editorでsaveすると自動的にcodeが実機に反映されてreloadしてくれます。非常にWebっぽいコーディング->確認サイクルですね。素晴らしい。

ただ、このLive deploymentですがDart Projectではできませんでした。出来たとしてもRunとDeployment時に恐らくJSにcompileするプロセスが入るため結局実機への反映はlive edit感覚にはならないかと思われます。WebAppならばこれがひとつの手段としてあるのですが。というか早くDartVMがChromeに乗らないかな…(Dartium WebViewとか)。

iOS対応は?

https://github.com/MobileChromeApps/chrome-app-developer-toolのBuilding from Source (iOS or Android - instructions for iOS / Linux)の指示に従ってCADT projectを作成してplatform add ios, cordova build iosすると環境が構築出来ました。(あまり調べていない)

どちらを選ぶべきか

MobileChromeAppsは現時点ではdeveloper previewなので、シリアスなアプリに関してはCordovaを選択するのが無難でしょう。

デスクトップ版ChromeAppもコードベースを共有して開発したい場合や、完全な新規アプリならばMobileChromeAppsを試す価値はあるのではないでしょうか。
Dartの場合も、CordovaよりもDartChromeAppがメニューとしてサポートされているMobileChromeAppsに思い切って乗ってみるのがいい感じです。

StackOverFlowにMobileChromeApps開発者のAnswerがありました。 http://stackoverflow.com/questions/21684414/reasons-for-porting-a-cordova-app-to-a-mobile-chrome-app

Dartを使っているとChromeAppsとAppengineManagedVMなどで順調に自分がGoogle platformに囲い込まれていっており、それについて思うところは少しありますが、DartがWebコミュニティで孵化して盛り上がって多様な選択肢ができるまでは、Googleさんが用意するキラーフィーチャーに乗っかるのが素直でいいんじゃないかと思います。