iPhoneアプリ作成環境の比較

iPhoneアプリを作る10の方法 – もぎゃろぐを比較表にしてみた。

#compare_iphone_development_table{
border:1px black solid;
}
#compare_iphone_development_table td{
border:1px black solid;
padding: 2px 10px 2px 2px;
}

デザイナさん? iPhoneぽいUI ネイティブUI カメラやファイルアクセス AppStore
HTML/CSS/JS 可能 ×
jQTouch 可能 ×
jQuery Mobile 可能 ×
SenchaTouch 難しいのでは ×
PhoneGap まだマシ 自前 カメラなどごく一部
Flash(Packager for iPhone) ありうる
Titanium Mobile たぶん無理
MonoTouch 無理
ObjectiveC 無理

説明

デザイナさん?

 普段PC向けや携帯向けWEBサイトの制作をしているデザイナさんでも扱いきれるかどうか。もちろん、デザイナさんにもピンキリあって、C#をバリバリ書くデザイナさんがいないとは限らないんだけど、そんなのは(ry

iPhoneぽいUI

 ON/OFFがスライドするチェックボックスとか、右端に矢印のついたリストとか、そういうiPhoneぽい見た目のUIを実現する仕組みがあるかどうか。
iQueryMobileは、jQtouchと同じ仕組みでUIをつくってくれるんだけど、iPhoneではなくて、スマートフォン全般をターゲットにしたUIになるので、△にしてある。

ネイティブUI

 「iPhoneぽいUI」に近いんだけど、iOSが持っているネイティブのUIを使うかどうか。
jQTouchは、画像を使って頑張ってiPhoneぽい見た目を再現してくれるんだけど、同じものではないから、テキストボックスをタッチしたときに開くキーボードの種類とか、チェックボックスをタッチしたときの動きとか、微妙な部分ではどうしても普通のアプリとちょっと違う動きになってしまう。
この違いを埋めようとし始めるとものすごく大変な開発になってしまうから、そんなことをするくらいならネイティブUIを使える環境を選ぶべき。そういう事は気にしない、見た目が同じであればいい、ということであればjQTouchがお手軽で便利です。

カメラやファイルアクセス

カメラ機能や、iOSのファイルシステム上にファイルを保存するといったことができるか。
×になっている環境でも、例えばGPSとかsqliteデータベースは、HTML5の機能で使うことができる。でも、例えばデータベースに最初からデータを入れておきたいとか、カメラで撮影した写真をサーバに上げたいといった機能を実現するためには、ここが◯になっている環境である必要がある。
Packager for iPhoneは、原理的にはカメラだって使えていいはずなんだけど、この記事を書いた時点ではまだ対応出来ていない

AppStore

作ったアプリをAppStoreで販売してもらうことができるかどうか。
AppStoreで販売できないのはひとつの弱点だけど、AppStoreに登録するためにはAppleの審査が必要だったり、バージョンアップに時間がかかったりしてしまうので、場合によっては、ブラウザで動かせる他の環境を使って気軽にユーザーさんに使ってもらうという選択肢もアリだと思います。

iPhoneアプリを作る10の方法

第2回関西アンカンファレンスでしゃべってきました。

.prezi-player { width: 550px; } .prezi-player-links { text-align: center; }

友達に頼む

  • 技術的詳細を知らなくても機能を実現することが出来る
  • 愛と勇気しかお友達のいない方には向かない
  • レベニューシェアという手もあるよ

プロに頼む

  • lancersオススメ。過去の履歴が残るので発注価格の参考になる
  • 普通に発注すると、バージョンアップのたびに開発費用がかかる点に注意

ObjectiveC

  • Appleが認める正式な開発言語
  • なんでもできるから、これで開発できる人はそうするのが一番
  • めんどくさすぎだろjk…

Flash

  • FlashCS5からiPhoneアプリを作ることができる
  • デザイナさんとかは、Flashから入れるのでわかりやすいかも
  • 一度Appleの規約改正でNGにされた。その後再改正されて、現在は通るらしい。
  • でも、正直いつまただめになるかと思うと不安で不安で・・・

HTML+CSS+JavaScript

jQTouch

  • iPhoneブラウザで見てもらう
  • 1ページに複数ページの内容を書くなど、ちょっと違うけどまだまだ普通のWEB開発の範疇
  • HTML+CSS+JavaScriptでできること(GPS,ローカルキャッシュなど)は当然できる
  • カメラとかファイルアクセスはできない
  • iPhoneぽいUIにすることができる
  • AppleStoreに登録することはできない

jQueryMobile

  • みんな大好きjQueryをつかって、iPhone/Android/SymbianなどのブラウザでUIを実現しよう
  • まだベータ版。今月あたりに正式リリース?
  • 理屈上は、JavaScriptすら動かない環境でも見られるサイトになるそうだけど、その割にjQueryをロードしないといけないとか、正直まだよくわからない
  • jQTouchに比べて、幅広い環境で動くらしい
  • JavaScriptなので、カメラとかファイルアクセス、AppStoreはNG。

SenchaTouch

  • iPhone/Android向けライブラリ
  • jQTouch以上にリッチなUIが実現できる
  • キャンバス描画ができるので、ソリティアみたいなゲームも登場している
  • HTMLとCSSもつかうけど、bodyタグ空っぽのところに、JavaScriptで部品を挿入していくプログラミングスタイル。デザイナさんには厳しいかも。
  • JavaScriptなので、カメラとかファイルアクセス、AppStore登録はできない

PhoneGap

  • WEBページをiPhoneアプリにしてくれる仕組み。WEBKitブラウザを使って表示する
  • カメラとかファイルアクセスのためのAPIも用意してくれる
  • UIはjQTouchと組み合わせるのが一般的だと思う
  • 当然、AppStore登録が可能

TitaniumMobile

  • mogyaイチオシ!
  • JavaScriptでプログラムを書くと、iPhoneとAndroidのプロジェクトに変換、ビルドしてアプリを作る
  • PhoneGapのようにWebKitでHTML,CSS,JavaScriptのページを使うことも可能
  • カメラやファイルアクセスのためのAPIも用意されていて使うことが可能
  • AppStore登録も可能
  • HTMLやCSSは出番が無くなって、完全にJavaScriptプログラミングの世界なので、デザイナさんとかは無理だと思う
    一応、PhoneGapみたいな使い方もできないことはない

あと、発表後のQAで、.NET FrameworkをつかってiPhoneアプリを作るMonoTouchというのもあるよ、と教えていただきました。
今軽く見た感じだと、TitaniumMobileよりもっとObjectiveCよりで、ObjectiveCの開発環境から言語がC#に置き換わった、という感じでしょうか。開発環境が有償なのが注意点になりそうですね。

(2011-01-15追記)動画が公開されました。