iPhone アプリ開発の勉強

一日時間を確保し,以前からやってみたいと思っていた iPhone アプリの開発について勉強してみた。

今回,習作として作成したアプリは下のようなもの。ただ単に汚い持続音(いわゆるドローン音)を出すだけのアプリだ。 Casper Electronics の Drone Lab にインスピレーションを受けて作成した。名前は "Dr. Drone".

iPhone の勉強を始めるにあたって,以下の2冊の書籍を参考にした。

iPhone SDK アプリケーション開発ガイド

iPhone SDK アプリケーション開発ガイド

ライトウェイト・プログラマのためのiPhoneアプリ開発ガイド

ライトウェイト・プログラマのためのiPhoneアプリ開発ガイド

オライリー本の方は献本で頂いたもの。「ライトウェイト・プログラマのための〜」の方は,書店でチェックしてみて面白そうだったので購入した。入門に2冊も使うのは贅沢と思われるかもしれないけれど,おかげでだいぶ楽をすることができた。

入門者向けという意味では「ライトウェイト」の方がおすすめかもしれない。こちらの本は「アプリケーションの開発」を話の軸に据えているため,読み進めていて「これから何を説明しようとしているのか」「どういったことがここから可能になるのか」ということが非常に分かりやすい。

オライリー本の方は SDK のリファレンス的な色が濃く,何か実装したい機能があって,その実装方法について調べるような場合に役立つ。扱っている話題の範囲も広いため,通常のアプリケーションを作成する限りにおいては,長く役立てることができるだろう。「ライトウェイト」を入門書とするならば,こちらは「いつでも手の届く所に置いておくべき参考書」のようなものだと思う。

プログラム上で生成した音声波形を Core Audio 経由で出力する方法については mobilesynthソースコードを参考にした。 mobilesynth は GoogleAllen Porter 氏が開発した iPhone アプリで, Google Code においてソースコードが公開されている。このソースコードは Core Audio の使い方だけでなく, UI の構築方法や C++ との連携の方法など,様々な側面から参考にさせていただいた。恐らく今後も参考にする場面が多くあるだろうと思う。

ちなみに余談だけれど, mobilesynth は現在も App Store 上に登録されているものの,ダウンロードすることはできなくなっている。どうやら作者氏は今年の iPhone Developer Program の更新をしなかったようだ……

実際に開発を経験してみての感想は以下の通り。

完成度の高い開発環境

Xcode, Interface Builder, iPhone simulator を軸とした開発環境は,非常に完成度が高く,使いやすい。習得するのに苦になる部分はほとんど無かった。今さらながら,この環境が無料で配付されていることの重要さを思い知ることになった。

登録時の面倒はもはや義務

これは iPhone アプリ開発において必ず話題にあがることなのだけれど, iPhone Developer Program の登録時に,プロフィール情報に日本語が含まれているとエラーが云々……という問題がある。この問題は開発者プログラムが開始されてから1年以上経つにも関わらず,いまだに改善される気配が無い。どうやら Apple 側に改善する気はまったく無いようで,サポートを介した手動対応が常態化している。

Objective-C は後回し

iPhone アプリ開発においては Objective-C が必修言語となる……が,最初の頃はサンプルコードや参考書の真似をなんとなくしているだけで十分だ。「おかしな拡張のされた C 言語」ぐらいのつもりで取り組んで,後から必要になった範囲を調べて覚えていくという順序で問題無いと思う。

入門書でブーストをかけろ

これだけネット上に情報が溢れている昨今,書籍など買わなくとも何とかなるのではないか……と思われるかもしれない。しかし,書籍の整理された情報というのは,最初の一歩を踏み出すには掛け替えの無い助けになる。その重要性は,既にソフトウェア開発の経験を積んだ人にとっても変わらないことだ。ましてや,余暇など限られた時間の中での習得を目指しているならば,なおさらそれは必要なものになるだろう。

オープンソースプロジェクトを活用する

Google Code のプロジェクト検索を利用すると, iPhone 向けのオープンソースプロジェクトをいくつか見つけることができる。オープンソースプロジェクトは,ある程度の規模を持ったアプリケーションを俯瞰して学習するのに役立つ。また,既存のプログラムの改造から動作原理を学ぶというアプローチにおいても役立てることができる。せっかく NDA の制約を受けることなく自由にソースコードの交換を行うことのできるプラットフォームにいるのだから,このメリットは大いに活用すべきだと思う。