現在、iPhone アプリを開発する環境としては大きく2種類の選択肢があります。
一つはアップルから公式に提供されている iPhone SDK を使用する方法、もう一つは saurik 氏によって公開されている toolchain 環境を使用する方法です。
iPhone SDK は無料で公開されていますが、作ったアプリを実機で動かそうとする場合や、配布しようとした場合には有料の iPhone Developer Program に加入する必要があります。また、iPhone SDK は OSX 用の環境しか用意されていないため開発するためには OSX が必要です。
逆に toolchain 環境は OSX 以外でも Linux やおそらく Windows でも iPhone アプリを開発することが可能ですが、この方法で作ったアプリケーションを使うためには iPhone を jailbreak する必要があります。
さて、今回はこの二つの環境どちらでも動くコードを開発する TIPS を紹介します。
インターフェースビルダーを使わない
いきなりですが、インターフェースビルダーで作成した nib ファイルは toolchain 環境で使用することができませんので、インターフェースはすべて objc のコードで書く必要があります。
最初は大変かもしれませんが、慣れればそんなに大変でもなくなります。Flex で Flex Builder を使わずに mxml 直書きしてインターフェースを作るのと同じイメージです。
AppDelegate クラスを明示的に指定する
main.m
で
int retVal = UIApplicationMain(argc, argv, nil, nil);
という部分があると思いますが、toolchain 環境ではこの Delegate 先を明示的に指定する必要があります。
int retVal = UIApplicationMain(argc, argv, nil, @"myappAppDelegate");
のような感じですね。
Info.plist の変数展開は使わない
Info.plist で ${PRODUCT_NAME}
などというような変数を使用しているかもしれませんが、これも toolchain 環境では理解してくれず、そのまま文字列として使われてしまいますので、このような変数は使用せず、ちゃんと書き直してあげる必要があります
アイコンもちゃんと作る
iPhone SDK を使用した場合はアイコンファイルを用意するだけで、iPhone用にアイコンを加工してくれるのですが、toolchain だとここも自分で加工する必要があります。
iPhoneアイコン用のpsdテンプレートなど公開されていますので、そう言ったものを利用すると楽です。
まとめ
以上のようなことに注意すれば、iPhone SDK と toolchain ハイブリッドなアプリケーションを作成することができます。
toolchain のようなオープンな環境で開発したい人や、OSX を持ってない人、AppleStoreではまだ公開できないようなアプリケーションを作成したい人などには参考になるかもしれませんね。
ただし JailBreak はくれぐれも自己責任でよろしくお願いします。