PhoneGap(Apache Cordova)を触ってみた

いろいろありまして、Android 開発もそんなに詳しくないのに PhoneGap(Apache Cordova)に手を出すことになりました。
公式ドキュメントもあまり詳しくなかったり正しくなかったり、現在のバージョンに合った書籍も出回ってなかったりでちょっと苦労してます。

Android 版しか確認していませんが、試して感じて悩んでることなどの覚え書きです。

バージョン、対応プラットフォーム等全て 2012 年 2 月現在の情報です。

PhoneGap とは?

Nitobi という会社が開発した、クロスプラットフォームスマートフォンアプリ開発・実行環境です。
最新バージョンは 1.4.1。

対応プラットフォーム
大雑把な歴史

Nitobi は 2011 年 10 月に Adobe に買収されましたが、PhoneGap は Apache Software Foundation(ASF) へソースを寄贈され、Apache Callback という名前でインキュベーションプロジェクトになりました。

が、「名前があまりにも一般的すぎるんじゃない?」ってことで改名され、Apache Cordova になったそうです。

開発言語と開発環境

編集するファイルは、基本的には

「ネイティブアプリの中に組み込まれた Web ブラウザ機能から読み込む HTML と JavaScript

のみです。
そのため、Web エンジニアにとっては比較的敷居が低いと言えます。
また、カメラや GPS、センサー等はネイティブの API を呼び出すライブラリを通して、JavaScript から呼び出すことが可能です。

開発環境は iOS 向けなら Xcode が使えますし、Android なら Eclipse でも何でも OK なはずです。

また、Web 上で開発・ビルド可能な環境などもいくつか存在しています。

インストール

公式サイトの Get Started Guide を参照。
特に難しい点はありません。

サンプル

公式サイトの API Reference を参照。
時間を見つけて、僕もどこかにアップしたいと思います。

感想

良い点
  • Web 技術を利用
    • 画面作成が容易(HTML, CSS 使えるので)
    • ページ遷移などはリンクを貼るだけなのでとても簡単
  • 見通しの良さ
    • 機能が限定されるため、1,2 日もあれば、ほとんどの API は把握可能
    • 簡潔な API(ほとんどのメソッドで、引数が "成功時コールバック", "失敗時コールバック", "オプション")
今後の改善を期待したい点
  • 機能の限定
    • クロスプラットフォームを目指したため、使える API は非常に限定
    • Android のサービスやコンテントプロバイダ等も利用不可(中をゴニョゴニョすれば何とか…)
  • ドキュメントの不足
    • API ドキュメントの間違い
    • API ドキュメントにおけるメソッドの謎の引数(常に 0 を渡すように書かれているとか)
    • 裏の動作が見えない(DB を閉じるメソッドがないけど、どう制御しているの?とか)
  • テスト
    • WebView 内のテストが困難
      • Android の用語で説明すると、記述するコードは「Activity の中に埋め込んだ WebView の中で読み込む HTML/JavaScript
      • 現状、WebView 中のコンテンツをうまくテストする方法が思いつかない(もしかしたらあるのかも)
      • iOS 版であれば、NativeDriver で可能?(未確認)

まだまだ未成熟な感はありますが、ちょっとしたアプリケーションなら簡単に作ることができますので、いろいろ触ってみたいと思います。