初めてのiPadアプリ開発で学んだ10の事 その1
2010年8月24日 火曜日 | その他
こんにちは、虎穴に入らずんば虎子を得ず。宮里です。
やや導入がナンセンスなんじゃないの、とお思いの方も多いと思いますが、これには訳があります。
前回の私のエントリーにてご紹介致しました、iPadアプリですが、完成までに色々と大変な思いをしました。
そこで今回は、初めてiPhoneの開発をする方むけに、私が身を粉にして得たTipsをご紹介したいと思った次第です。
教訓その1. メモリ管理には気をつけろ
phpや、スクリプト系の開発からiPhoneに来た方は、今までメモリ管理を気にするという事は余り無かったかと思います。CやJAVAなどにしても、最近のPCはスペックがいいので、リークが起きたってそこまで致命的なものではありません(語弊があるかもしれませんが)。
ですが、iPhoneの場合は、モバイル端末な分、メモリ領域が限られているので、リークはアプリのハングアップに直結します。致命的なバグにつながる確率も高くなります。
iPhoneのメモリ管理で厄介なのは、クラスやメソッドによってメモリの確保/解放の仕方が異なる事です。慣れてしまえば大したことはないのですが、気を抜くと、後で大変めんどくさいデバッグをする事になります。
※基本的なメモリ管理については下記のリンクが大変参考になりました。
http://konton.ninpou.jp/program/cocoa/memory.html
教訓その2. 画像を大量に扱う場合はimageNamedは避けたほうが無難
今回は画像を大量に使用するアプリを作成するということで、ソースの簡素化の為、コーディングの手間を省く為、UIImageクラスのimageNamedというメソッドを使って画像オブジェクトを生成していました。
このメソッドの仕様として、生成したオブジェクトはiPhone内のキャッシュに一度ため込みます。そして、再度同じ画像を同メソッドにて呼び出す場合、キャッシュから画像を呼び出すという事を行っています。
すると、どういう事が起きるかと言いますと、このメソッドを大量に使用した場合、キャッシュのオーバーフローにより、アプリがハングアップします。。これは致命的。
これを起こさないためにも、UIImageはきちんとallocにて生成、使用後はすぐにreleaseするという措置を取ったほうが無難です。
教訓その3. データベース選びは慎重に
データを操作/閲覧するアプリの場合、データベース(DB)選びを行うと思います。ですが、規模によってはplist(xml)によって管理することも可能です。余りデータ数無いのにわざわざDB導入して、メモリ領域食うのもなんだかなぁということもあります。
そこで、DBを使うか、plistを使うかの線引きですが、個人的には、データの閲覧だけであれば、数に限らず、xmlでOK。編集が伴えば、数に限らずDBの方が良いかと思います。
というのも、xmlですと編集(データ更新)するのに手順が割と多い気がします。それに、DBのトランザクション管理のようなものもありません。ですので、後々、圧倒的にDBの方が楽ですし、可用性が高いです。
教訓その4. リファクタリングとデザインパターンを意識しつつ作成すべし
私は元々バイトなどでマイコンを触っていたり、マッシュアップ的なものばかり作っていたので、まとまったコード量を持ったアプリを完成させるという経験がありませんでした(以前作成したCocoaなアプリも簡単なもの)。ですので、リファクタリングやデザインパターンというものは重要だろうなとは思いつつも、生きる上でそこまで必要でないだろうと避けていた部分でした。それが、今回、遂に必要になった訳なのです。
というか、どの分野にしろ、プログラマはきっと留意すべきです。でないと後々痛い目を見るのは自分なのだと、知りました。
今回、特に頭に残っているのは、delegate、property、observer、ポリモーフィズムです。素晴らしい手法です。
教訓その5. Interface Builderを活用せよ
iphoneアプリ開発にてGUIを作成する場合には、
Interface Builderを駆使して、xibファイル(xmlファイル)にGUIパーツ情報を記入し、コード内にて、適宜xmlファイルを呼び出し、GUIを生成する方法
コード中にて適宜GUIパーツを生成する方法
とが考えられるかと思います。
どちらのパターンにしろ、Interface Builderは大変有用かと思います。というのも、上記後者の場合はGUIパーツの座標計算が非常に大変なのですが、Interface Builderを使えば、予め座標のあたりをつけたり、パーツ間の距離を測ったりすることができます。とても便利です。使わない手はありません。
いささか、歯切れが悪いですが、今回は、このへんにして、また次回。