HTML/JavaScriptとPhoneGapで作るiPhoneアプリ開発入門を読んで

富田 宏昭著「HTML/JavaScriptとPhoneGapで作るiPhoneアプリ開発入門」を土日に11日間かけて読みました。感想は次の通りです。

1. 本の構成、および感想
Chapter_01 PhoneGapについて
PhoneGapの概要、歴史的背景、必要な開発環境の説明など。

Chapter_02 開発環境のインストール
iOS SDKのインストール、PhoneGapのインストール、プロジェクトの作成方法、PhoneGap 2.0.0での変更点の説明。

Chapter_03 HTML+JavaScriptで作るアプリケーション
HTML/CSS/JavaScriptについて、JavaScriptの基本文法とDOMについて、JavaScriptの基本を学びながら「カウンタ」のアプリを作ろう、変数と配列を学びながら「くじびき」のアプリを作ろう、制御構文を使って「かけ算」のアプリを作ろう。
JavaScriptの基本文法を説明しているし、DOMツリーについて、図を使って冗長なほど丁寧に説明しているので、わかりやすい。

Chapter_04 PhoneGapで作るアプリケーション 基本編
PhoneGap/Cordovaでアプリを作るには、Cordova APIの紹介、Storage APIを使って「キッチンタイマー」のアプリを作ろう、Compass APIとCanvasを使って「コンパス」のアプリを作ろう、Geolocation APIとGoogle Maps APIを使って「地図」のアプリを作ろう、Camera APIを使って「カメラ」のアプリを作ろう。
DOMツリーを使って冗長なほど丁寧にソースコードを説明していてわかりやすい。ただし、PhoneGapってどうよと思って、本で勉強している人もいるだろうから、有料のiOS Developer Programへの登録が必要な、実機でしか動かない例を載せるのはどうもなあと感じる。カメラアプリでは、カメラのオプション設定で、sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY を記述すれば、カメラの機能は使わないで、Photosで写真アルバムを読み込んで、写真を選択してカメラアプリに戻れるので、アプリの他の機能の動作検証はできる。

Chapter_05 PhoneGapで作るアプリケーション 応用編
「jQuery」とCordova Contacts APIを使って「電話帳移行アプリ」を作ろう、外部ライブラリとFile APIを使って画像を加工するアプリを作ろう。
jQueryを使う内容になったら、難易度が上がった。他のjQueryの本を読んだ方が理解が深まるかもしれない。また、2つのアプリとも実機での動作確認が必要だが、「電話帳移行アプリ」に関しては、csvの電話帳データをMacで/Users/ユーザ名/Library/Application Support/iPhone Simulator/6.0/Applications/アプリケーションID/Documents ディレクトリにコピーすれば、シミュレータで動作確認することは可能である。また、後者のアプリはカメラを使ったアプリであるので、基本編と同じようにカメラのオプション設定を行えば、カメラを使わないで、アプリの動作確認ができる。

Chapter_06 PhoneGap開発TIPS
実機での動作確認をするための方法、PhoneGap:Buildの利用方法、JavaScriptライブラリについて、Cordovaアップデート方法について、iOS Developer Licence更新手順。
どの内容も、実際にアプリを開発し、App Storeにアプリを公開するのに役立つものだ。ただし、PhoneGap:Buildに関しては、手元に開発環境、アプリ実行環境がなくても、コーディングして、PhoneGap:Buildにアップロードすれば、アプリがビルドされるというが、手元にSDKのライブラリがないとコーディングしづらいし、Public Appsのアプリケーションは、PhoneGap:Buildに登録していないユーザでもURL直打ちでアクセスし、アプリケーションをダウンロードできるというので、あまり良い点はない感じがする。Private Appsは無料のDeveloperならアプリを1つ公開できるが、Private Appsをいくつも公開するなら、12ドル/月以上必要だ。アプリを各OS向けに開発、公開するなら、それぞれの開発環境を用意した方がコスト的にはいいし、動作検証もちゃんとできるのではと思う。

2. 本ではなくPhoneGapについて感想
jQueryを使わない場合は、UIコンポーネントにアクセスするには、document.getElementById(‘名前’)とし、jQueryを使う場合は、$(‘#名前’)などとしないといけないが、名前は文字列なので、typoの危険性を排除できず、バグが入り込みやすい。あと、本のサンプルEffectorCameraのコーディングで感じたのだが、JavaScriptやjQueryを使うと、関数が多重の入れ子になって、()や{}などの括弧の対応が取りづらく、JavaやObjective-Cに比べ、コーディングにかなりの注意を要する。これはサンプルソースが悪いのか、JavaScriptがそういうものなのかわからないが。
PhoneGapアプリの本を読んだ限りでは、JavaでAndroidアプリを開発、Objective-CでiOSアプリを開発するの比べ、開発が容易とは言いがたい。もちろん、HTMLやJavaScriptでウェブアプリを開発してきた人には使いやすいフレームワークなのかもしれないが。