winChain を使って iPhone の GUI アプリを作成してみる。winChain には winChain Template Builder.exe というソースコードのテンプレートを作成してくれるアプリが同梱されているのでコレを使おう。
1) winChain Template Builder.exe を起動する。

2) 必要な項目を指定して[Create Template]ボタンをクリックする。

テンプレートが作成されると以下のメッセージが表示される。
![]()
[OK]ボタンを押してメッセージを閉じ、[X]アイコンをクリックしてソフトを終了する。
指定したディレクトリにプロジェクト名のサブディレクトリが作成されて、その中にテンプレートのファイル群が作成されると思いきや、実際にはプロジェクト名のサブディレクトリは作成されず、指定ディレクトリ直下にテンプレートのファイル群が作成される。これで合っているのかなと思ってビルドしてみると、Makefile 中で指定されているファイルのパスと実際のファイルの所在が一致していないためにビルドはコケる。どうやら winChain Template Builder のバグっぽい。
3) プロジェクト名のサブディレクトリを作成して、そこへテンプレートのファイル群を移動する。上の例だと C:\cygwin\iphone-apps にテンプレートのファイル群が作成されているので、helloapps サブディレクトリを作成してこれらのファイルを移動する。
デフォルトの Makefile のままビルドするとルートディレクトリ直下に helloapp.app というディレクトリが作成されてしまう。開発者の好みだと思うが、僕はプロジェクトにサブディレクトリを作って実行モジュールを格納したいので Makefile を変更しておこう。
4) Makefile 中に BUILT_PRODUCTS_DIR の定義を追加する。
INFOPLIST_FILE=Info.plist SOURCES=\ main.m \ helloapp.m CC=/usr/local/bin/arm-apple-darwin-gcc CFLAGS=-g -O2 -Wall LD=$(CC) LDFLAGS=-lobjc -framework CoreFoundation -framework Foundation -framework UIKit -framework LayerKit PRODUCT_NAME=helloapp SRCROOT=/iphone-apps/helloapp BUILT_PRODUCTS_DIR=$(SRCROOT) ←追加 WRAPPER_NAME=$(PRODUCT_NAME).app (以下省略)
5) cygwin のシェルを開いてプロジェクトのディレクトリ(/iphone-apps/helloapp)へ移動し、ソフトをビルドする。
$ make
ビルドに成功すると helloapp.app サブディレクトリが作成され、実行モジュール(helloapp)と Info.plist が格納されているはず。
6) iPhone の /Applications ディレクトリへ helloapp.app フォルダ丸ごとコピーする。
7) アプリアイコンを追加するために iPhone のメイン画面を強制リフレッシュする方法がわからないので iPhone を再起動する。
再起動後はメイン画面に helloapp アイコンが追加されているはず。
8) helloapp アプリを実行する。
テンプレートのまま何も処理を追加していないので何もしないけど。
なんとか GUI アプリも作成することができた。凝ったアプリを作るならば iPhone SDK に勝る環境は無いだろうけど、簡単なコマンドラインソフトを書くとか、ニーズによってはオープンソースの開発環境の方が役立つこともあるかもしれない。winChain はいかんせん完成度が低い(バグもあるし)のが残念だけど、やる気になれば Mac を持っていない人でも iPhone アプリが開発できるのは魅力かも。というか、Apple が Windows 版 iPhone SDK をリリースしてくれるといいんだけどな。