どんなアプリにおいても、開発時には必ず何らかの問題に突き当たると思います。ゴルフるずも例外ではなく、実装を進めていく上で非常に多くの問題を克服しなければなりませんでした。

開発メンバーが1人減って落胆する

 iPhone版の画面モック(サンプル画面)やフロー図の作成といった設計作業が一通り終わり、いよいよ実装という段階になって、開発メンバーの1人が突然、ほかの開発案件へとアサインされてしまいました。これまで培ってきた知識やノウハウを持つメンバーがいなくなったことは、このプロジェクトにとってとても大きな痛手でした。

 チーム開発のメリットの一つは、知識を共有できることです。自分が知らなくても他のメンバーが知っていれば教えてもらえる、逆に他のメンバーが知らなくても自分が知っていれば教えてあげる、ということを繰り返すことで、効率的に開発を進められます。特に我々以外にはiPhoneアプリ開発の知識を持つ人は社内に全くいなかったため、知識を共有できるわずかなメンバーの1人がいなくなってしまったことに、一時は落胆せざるを得ませんでした。

画面表示の遅さに悩む

図5●「スコアカード」画面
図5●「スコアカード」画面

 「スコアカード」画面(図5)を実装していたとき、表示するたびに少しカクカクした動きになってしまっていました。機能は満たしており、スケジュールが遅れ気味だったことから、私は許容範囲だと考えていました。しかしながら、他のメンバーから、一般ユーザー向けアプリだからこそ、それは許されないと指摘され、改めて実装し直すことにしました。

 この問題の原因は、1画面で多くの画面部品クラスのインスタンスを生成し、さらにその上に画面部品クラスを生成して上乗せしていたことでした。それにより、メモリーを大量に消費してしまっていたのです。


図6●iPhone OSのレイヤー構造
図6●iPhone OSのレイヤー構造

 iPhoneでは、iPhone OSの持つ四つのレイヤーが提供するフレームワーク(図6)を使用して実装します。スコアカードの画面は、最上位レイヤーであるCocoa Touchフレームワークの提供する機能のみで実装しており、なかなか解決策が見つからずに悩んでいました。

 よくよく調べてみると、実はCocoa Touchの下位にあるMediaレイヤーにQuartzという描画エンジンがあり、この機能を使って線や数字を部品クラスに直接描画するように実装することで、表示速度が劇的に向上しました。作り直す時間はかかりましたが、問題に突き当たっても妥協せずに努力することで、より良いものを作れるということを改めて学びました。