iPhoneでもC#だと分かりやすいかも

MonoTouch 1.1 で開発すべくサンプルコードを読んでいます.

C#の開発経験があるならば,Objective-CiPhoneアプリ開発するとしても,まず手始めにMonoTouchのサンプルコードをじっくり読んでMonoDevelopでいじることが,効率のよい知識吸収手段ではないかと思います.

その理由はAPIの十分な前提知識がなくても,MonoTouchの環境ならばサンプルコードと開発環境の機能だけで,APIの構造理解と実行フローが十分に想像できる情報が得られるからです.

私の経験ですが,実際にMonoTouchに触れるまでObjective-Cのサンプルコードを1週間読んでいました.その後でMonoTouchに触れましたが,可読性はC#のほうが格段に高く感じます.また使用経験がないUIなどのAPIの内容理解とその使い方の吸収はC#だからできると思います.

この理由は,静的な型で書かれていること,MonoDevelopのスマートな補完機能,そして参照しているアセンブリの中身をMonoDevelopから簡単に参照できること,があると思います.

C#は静的な型宣言ですから継承クラスのメソッドのオーバライドにはキーワード override が必要です.いっぽうObjective-Cは関数を名前で宣言してどの関数が呼び出されるかはランタイムが実行時に名前解決して解決する仕組みであり,このためオーバーライドという宣言は必要ありません.このためどのメソッドが上書きされているのかがソースコードだけでは分からず,継承クラスのAPIドキュメントのメソッド一覧と見比べて初めて分かります.このために,どのように機能が組まれているのか,その構造が想像しづらいのです.

よく使われるAPIのメソッドとその使い方サンプルが頭に入っていれば,ソースコードを見ればすべて分かる訳ですが,使い始めのヒヨコ状態では,言語だけである程度の構造や実行フローが想像できないのは辛いです.

次にMonoDevelopのスマートな補完機能は,コードを書くだけではなくて,どんな機能があるかを知るのに役立ちます.例えばボタンのビュークラス UIButton のインスタンスの補完をかければ,メソッドやプロパティが一覧できます.それらの名前を見るだけで,提供されている機能とおおよそ使い方が想像できます.

最後に,参照しているアセンブリの中身がMonoDevelopで簡単に参照できますから,例えばMonoTouchが提供するクラスとそのメソッド一覧をざっと見れば,APIの基礎知識(View とControllerがありViewのイベントはDelegateで受ける)があれば,クラスの絡みと使い方が想像できます.

いずれも静的な型だからこそ提供される機能ですが,これらがないObjective-CAPIの十分な知識もなしにいきなり取り組むのは,無謀というか,とても体力が必要だと思いました.逆にこれらの流れさえつかめれば,言語がC#でもObjective-Cでも開発は易々とできる,少なくともやりたい実装イメージをどのクラスを組み合わせればできるかが予想がつく,と思います.