iPhoneアプリ内部設計をパターン化できる「iOS開発におけるパターンによるオートマティズム」

2011-06-23

iphone_develop_automatism.png

「頭で考えるのと実際作るのでは全く違う」。 これはiPhoneアプリ制作にも言える格言のようなものですが、多くのiPhoneアプリ開発本で学ぶ「サンプルアプリ」と、自分が作ろうと思っている「オリジナルアプリ」の間にはなかなか乗り越えられない壁があります。

その壁を乗り越えさせてくれるのがズバリこの本。

オリジナルアプリのMVC設計手法を身につける

本書「iOS開発におけるパターンによるオートマティズム」は、自分がオリジナルアプリを制作する場合に直面する「データの持ち方」「データの操作の仕方」「データの見せ方」をさまざまなアプリに応用できるパターンとして提示し、それに沿って作っておけば拡張性が高く、変更にも容易に対応できると説きます。

要するに、実戦的フレームワークを伝授してくれる本なのです。

基本的なiPhoneアプリ制作の知識(XCodeの操作方法、Objective-Cの書式)を学んだけど、オリジナルアプリを作るための手順がまったく分からない人にとってピッタリな本かと思います。

オリジナルiPhoneアプリ制作の旅の方位磁針として

ios_world_field.png

この本を読みながらずっと感じていたことは、オリジナルアプリを作る時っていうのはとにかく不安がずっと付きまとうということです。

「こんな作り方で大丈夫なのか?」「メモリの管理はこれで大丈夫なんだろうか?」「みんなどうやって作ってるんだろう?」

会社であれば先輩が教えてくれたりしますが、私やあなたのように一人で開発しないといけない場合は荒野に一人で突然放り出されたようなものでしょう。

本書はそんな方への心強い方位磁針になってくれます。 実用的なRSSリーダーアプリを制作する手順を参考に、更新の通知方法など、あなたのオリジナルアプリが間違った内部設計をしでかしやすいポイントを重点的に取り上げ、教授してくれます。

iPhoneアプリ制作の定番入門書である「よくわかるiPhoneアプリ開発の教科書」を読んだ後でオリジナルアプリを制作するにあたって呆然としている人にピッタリの本かもしれません。

本書で気になった誤字

さて…非常に良書である本ですが、初版の宿命とも言うべき誤字が所々にあります。 多くは各々が気づいて脳内修正できるレベルですが、いくつかは重大な誤解や混乱を招いてしまう部分もあります。 ここではその部分の訂正を勝手にやってしまいます。

P148: 「7.2.1 デリゲートとは」の部分

delegate_mechanism.png

デリゲートのメカニズムを説明しよう。まず、呼び出し元と呼び出し先が1対1で定義される。このとき、呼び出し元呼び出し先のことをデリゲートオブジェクトとも呼ぶ。そして、ここがいちばんの特徴なのだが、呼び出し先呼び出し元でメッセージ送信に使われるメソッド群を定義するのだ。これを、デリゲートメソ ッドと呼ぶ。呼び出し元呼び出し先は、このデリゲートメソッドを実装して、自身をデリゲートオブジェクトとして登録する。そしてイベントなどが発生すると、呼び出し先呼び出し元はデリゲートオブジェクトのデリゲートメソッドを呼び出すのだ。これが、デリゲートのメカニズムである。

…という解説なのですが、デリゲートオブジェクトを「呼び出し先」と表現するはずが「呼び出し元」と表現してしまっています。(これはかなり混乱する文章ですよね…)
呼び出し元はデリゲートオブジェクトに作業をまかせることができるかどうか(メソッドの実装がなされているか)を確認して、まかせられそうであれば(メソッド実装がされていれば)デリゲートオブジェクトに処理を委譲する、というのがデリゲートのメカニズムです。

この「デリゲート」を意識した作り方は、先入観で「難しいッ!」と感じるかもしれません(私もそうでした)。 が、騙されたと思って一度RSSリーダーを作ってみてください。 突然「あっ!確かに便利!!」とピコーン♪と感じる瞬間が来ると思います。 そういう意味では「習うより慣れよ」の精神で作っていくのが良いでしょう。

おわりに

最後にどーでもいい余談ですが、カバーを外すと「iOS AUTOMATISM BY THE PATTERNS」という文字だけの表紙になり、外で読んでいると洋書を読んでいるみたいで「かっこいい!」と思われるかもしれませんよ。笑

iOS開発におけるパターンによるオートマティズム [単行本]


iOS開発におけるパターンによるオートマティズム [単行本]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

2011-06-23