2012年1月31日火曜日

モバイルアプリ開発、何使う?

PCクライアント版PushIt!も完成してないのになんだが、モバイルアプリ(正確にはスマホ向けというべきか)にも手を出したい今日この頃。

さて、モバイルアプリと言えば、昨今はいろいろと作り方があるので、最初を間違えると後で不良債権を抱えてしまうことになり、選び方に慎重になってしまう。

ちょっと比較をしてみた。ターゲットはiOSとAndroidだ。


  • 1. ネイティブアプリ
    言わずと知れたObjective-C(iOS)とJava(Android)である。実行速度と「オワコン」にならなさ加減では間違いない選択。しかし、なるべく手間をかけずに両方対応したいならまず外すべき選択肢。Push It!のようなツール系アプリなら実行速度をあまり気にしないので忘れても結構。

  • 2. Unity
    Mono(Windowsの.NETフレームワークのオープンソース版)を使った開発・実行環境。事前にネイティブコンパイルするので、実行速度はネイティブ並み(Javascriptでも開発できるらしいが、それもコンパイルするのかは不明)を確保しつつ、サポートプラットフォームが半端無い。ネイティブ形式にパッケージングされるのでアプリストアで売れる
    基本、ゲーム向けのフレームワークなので、ライトな用途には重量級すぎるかも?使ってみないとなんとも言えないが。移植性はわからん。

  • 3. HTML+CSS+Javascript
    言わずと知れた。アプリっぽくするにはjQuery Mobileなんかを使いつつ、キャッシュやローカルストレージを駆使してローカルでも動くようにしないとね。
    実行速度的にはまあそれなり。ツール用途で、かつデバイスの機能をフル活用しなくていいならありな選択肢。デバイス特化な機能を使わないなら移植性も高い。
    iOS向けにAppStoreで売って小遣い稼ぎしたいならなし

  • 4. PhoneGap
    基本的に3と同じだが、ネイティブ形式にパッケージングされるのでアプリストアで売れる
    デバイス機能へのブリッジもある程度用意されているので、そこそこ凝ったアプリもイケる。

  • 5. Titanium Mobile
    1と同じことを言語にJavascriptを使う、といったら良いだろうか。同じくJavascriptを使う3,4との違いはViewの部分(つまり見た目)もJavascriptで構築するところ。
    当然、ネイティブ形式にパッケージングされるのでアプリストアで売れる
    Javascriptがネイティブコードにコンパイルされるなんて情報もあるが定かではないので、実行速度は不明。
    移植性に関しても良く分からないが、ViewとI/Oをうまく切り出せれば大部分は流用できるだろう。
    どんだけ流行るか不明。

  • 6. Adobe AIR (for Mobile)
    AIRランタイムを使ったアプリをネイティブ形式にパッケージングするもの。
    思想的には2や5に近い。Flash(Flex)開発者にとっては取っ付きやすいが、そのFlashがモバイル向けから手を引いたので、衰退の予感。HTML+Javascriptでも開発できるけど、その場合は3,4でもいいわけだし。
    PCとのマルチデバイス展開もやりやすいといえばそうだが、PC向けとは(ある程度コードは共有できるけど)別物だと思った方が良い。

個人的には、実行速度的にはどれでも満足できる用途なので良しとして、1はマルチデバイス展開の点でナシ、2は重量級すぎてナシ、6はオワコンの予感でナシ、3やるくらいなら4の方が楽できる(し売れる。実際売れるかどうかは別だが)のでナシということで、残るは4,5になる。

で実際5ってどうなんですかねえ。開発者ついてるんですかねえ。
4は時々ニュースになるし、PhoneGapそのものの魅力ではないけど、UI周りではjQuery Mobileが巨大なコミュニティを持っているおかげで凝ったViewも作りやすそうなので、今後も有望なんじゃないかと思うんだけど、どうかな。

0 件のコメント: