昔Cordova(PhoneGap)を試していた時は、今よりも大分使いにくいものだったという印象がある。
新しいプロジェクトを作るときも、~/dev_tools/phonegap-2.2.0/lib/ios/bin/create ...
みたいな感じで各デバイスのライブラリパスから同じ名前のコマンドを実行させる形だったので、「え、これ、マルチプラットフォームとかどうやるのよ」と、ユーザーを相当悩ませる感じの仕組みだった。
そのためか、PhoneGap BuildやMonacaというビルドツールが大変便利で、むしろこういうビルドツールがないとやってられない状況にあったと思う。
(知らない人向けに)Cordova(PhoneGap)とは
HTML+JavaScriptでiOSやAndroidといったスマートフォン向けのアプリを開発するためのライブラリ。歴史は長く、2012年代にかなりいろんなサイトで特集されて盛り上がっていた記憶がある。
Cordova(PhoneGap)という呼び方をしている理由は、このライブラリの経緯のややこしさに原因がある。PhoneGapを開発していたNitobi社を2011年にAdobe社が買収し、そのソースコードをAdobe社がApache財団に寄贈した。Apache財団が管理するPhoneGapはCordovaと名称が改められるのだが、Adobe社での呼び方はPhoneGapのままであり、それゆえ、Apache財団がこのライブラリを配布する場合はCordovaと呼び、Adobe社が配布する場合はPhoneGapと呼ばれているのである。
CLIが整備されて使いやすくなった
そんなCordova(PhoneGap)を最近また触ってみたところ、node.jsを用いたCLIが整備されており、かなり開発しやすい感じになっていた。そもそも、「プラットフォーム毎のプロジェクトをcreate → 開発」より、「汎用的なプロジェクトを作成 → 対応デバイス向けのライブラリをインジェクション」の方がマルチプラットフォーム向けの開発がしやすいのは当然で、しかしこのかなり大掛かりな変更を行えたのは凄いなと思える。
開発の流れ
cordova create myapp
でプロジェクトを作成。- (とりあえずiOSアプリを作るとして)
cordova platform add ios
でiOS向けライブラリをインジェクション。
これでiOS向けアプリの下準備が終わり。実際の開発では、
cordova serve
でWebサーバを起動してプレビューしながら画面開発。cordova emulate ios
でiOSシミュレータを起動して動作確認。
といった形で開発を進めることになる。また、標準のライブラリではカバーしきれないものについてはcordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git
といった形でプラグインを適時追加していく。かなり使いやすい仕組みになった。
www
ディレクトリを直接触りながら開発する場合はcordova serve
を使えば良いのだが、通常の開発ではあまり機会がないだろう。基本的にはyeomanやmiddlemanを利用して、SassやCoffeeScriptで書いたコードをブラウザで確認しつつ、www
ディレクトリにビルドしてiOSシミュレータで確認するワークローをとる。
JSフレームワークとしてAngularJSを利用する場合はGruntやBowerが使えると便利なので、自然とyeomanを選択することになるだろう。
参考:Web App with dream team; AngularJS, Cordova, Yeoman & Topcoat
環境の準備
node.jsの環境が必要なので、ない場合は整えておこう。nodebrewを利用してnode.jsのバージョン管理をできるようにしておくと便利だ。
参考:Node.js超初心者勉強会 in 大阪 まとめ(node.jsの導入の仕方が簡潔にまとめられている)
Cordovaのセットアップは本家ドキュメントに詳しい。
参考:Apache Cordova Documentation Command Line Interface
さいごに
いつもと口調が違うのは、13年ぶりの大雪が降って気分が変わったからですかね :)
そんなわけで、最近またCordova(PhoneGap)を触っているので、勉強会があったら是非お誘い下さいー。お便り待ってます!