iPhone開発ツールの振り返り

iPhoneアプリ開発を一通りやってみて、開発の手法やツールなどをまとめると共に、より良い方法がないかをリストアップする。

やり方

  • ドットバイドットの画面設計と画面遷移のドキュメント化、
  • UIはなるべく薄く作ること、

iPhoneは画面デザインが大切だから、ドットバイドットの画面設計とどんな操作でどんな表示遷移や機能が提供されるかを、絵に描くのが最重要。ちゃんとした画面設計に基づくコーディングは、完成形が明確になっているからとても楽。
iPhoneのUIはMVCパターンを採用している。何も考えずにコードを書くと、コントローラーにロジックを入れてしまい、スパゲッティーにしてしまう可能性あり。これにはModel-View-ViewModelパターンを取り入れるのが有効で、UIControllerはViewModelのPropertyChangedイベントの反映と表示アニメーション制御だけを担当させると、見通しのいいコードになる。

課題

  • 開発速度を上げる、
  • Androidなど他のプラットホームへの展開、

前者は開発の永遠の課題なので、ここではパス。後者は、言語やライブラリという手段の問題なので、さらに深く掘り下げる。

ツールの候補を上げる

MonoTouchを使ってiPhoneアプリを作ったが、標準のツール以外のものを列挙する。

現状

[,w200]
ドットバイドットの画面データを再利用するには、ベクターグラフィクスで作成することが必須です。それは開発で多用するアイコンを、ちょっとサイズ変更しただけでディザのために再利用不可能になることがあるからです。今回は、フリーでSVG形式のドローソフト InkScapeを使い、左の画面のようなドットバイドットなプロトタイプ画面を作成しました。

JavaScript

JavaScriptはウェブブラウザにエンジンが搭載されているうえ、iPhoneAndroidWebKit由来で振る舞いも(多分)近い。デスクトップを含めて機種横断の実行エンジンになりうる。ネイティブアプリにするのは、ブラウザコントロールを埋め込んでスクリプトを読み込ませればよいだけで簡単。
開発言語に、JavaScriptそれ自体を採用するのはよくない。言語自体が開発効率がでないうえブラウザ依存性など開発本来以外の労力が大きすぎる。このための開発ツールは:

GWT Projectは、JavaJavaScriptコンパイルするもの。普通のUI開発と同じくボタンなどのWidgetを配置してイベント定義で処理を入れていく。iPhoneでは、特徴的なテーブルの編集機能やアニメーションが十分サポートできないため、用途は限定される(かもしれない)。iPhoneっぽいスタイルもあり実利用可能レベル。
C#のILをJavaScriptコンパイルする jsc (c# to javascript) 。実際にiPhoneで試したが、問題なく動く。ただしタッチ操作がブラウザに持っていかれるために、そのあたりの手当が必要。カードゲームなど実時間処理にこだわらない用途には最適かもしれない。ただしOpenGL tkに対応しているMonoTouchはMonoをプラットホームにしたゲーム開発では最適の解答であろうから、デスクトップもターゲットに入れたガジェット同時リリースなどに価値を見いだすべき。
たしか、JavaScriptiPhoneネイティブアプリに変換するライブラリ(サービス)があったはずだが、今回は対象から除外。

iPhoneライクなXAML

ベクターグラフィックをベースにしたグラフィックとコードの統合開発環境 (Blend VisualStudio)、グラフィカルおよびテキストどちらからでもコーディング可能なXMLベースのUI設計 (XAML) 、プロトタイピング(SketchFlow)の統合、それらを全て提供しているものというとこのツールになってしまいます。