iPhoneでWeb連携アプリを作る際に注意すること

RemoteTubeLite(App Store)および現在絶賛審査中の有料版を作った経験から
Web屋がiPhoneアプリを作る場合というか、
自前のサーバ側プログラムと連携するアプリを作る場合に
注意した方が良さそうなことなど書きたいと思います。
まあ、iアプリとかクライアントアプリを作ったことのある人には
概ねお馴染みの問題です。


ポイントは大雑把に
Objective-Cという言語を使用する
・ネイティブアプリである
という二点でしょう。


iPhone用アプリを開発するのには
Objective-Cという言語を使用します。
Objective-C自体はJavaっぽいC++といった感じで
それほど難しくはないですし、
CocoaフレームワークXCode + InterfaceBuilderの
開発環境も快適なのである程度いじっていれば慣れるでしょう。


それならば何が問題なのかというと
サーバ側プログラムと連携するアプリを作成する場合、
Objective-CPerl/PHPといったサーバサイドプログラムではなく
HTML + CSS + JavaScriptみたいなクライアントサイド技術みたいな立ち位置であるところです。


Objective-Cの開発がそれほど困難ではないといっても
HTML + CSS + JavaScriptで画面を作成するのよりかはだいぶ大変です。
通信をしてサーバ側からXMLなり何なりでデータを取ってきて
parseしてオブジェクトか何かに詰め込んで云々。


また、Cookieが使えないために、
セッション維持の機能は自前で実装しなければなりません。
通信はNSURLConnectionでの非同期通信が基本なので、
その辺の作法も多少慣れない感じでしたかね。


もちろん、iPhoneアプリ開発には面白いところもあります。
iPhoneアプリではSQLiteが使用できるので、
データを毎回差分だけ取ってくるような作り方が出来ます。
素材画像なんかもアプリに普通にバンドルなので、
通信は差分のテキストと都度の画像だけ。
memcached/Tokyo Cabinetみたいな
Key-Value Storageも使いやすくていいです。


サーバ側プログラムと連携するiPhoneアプリを作るというのは、
何というかアプリをサーバ側とiPhone側で二つ作るような感覚です。
あるいは画面を全てAjaxで作成するぐらいの勢いというか。
まあ、結構ヘヴィでした。