iOSについては環境の進化が速く、書籍の内容が古くなっていることがほとんどなのですが
Android開発を始めたばかりの僕が読みたかった本が面白かったので自分も似たようなことを書いておきます。
詳解 Objective-C 2.0
![](http://images-jp.amazon.com/images/P/4797368276.09.MZZZZZZZ.jpg)Objective-Cのメモリ管理の仕組みであるリファレンスカウンタについて理解するために購入。現在発売中の第3版ではARCについても記載されているので最新のものを買うのが良いです。
Objective-Cの特徴であるカテゴリやプロトコル、KVOについても詳細に記載されているので何度も読み返すことになると思います。
Amazonへのリンク: 詳解 Objective-C 2.0 第3版
iOS開発におけるパターンによるオートマティズム
![](http://images-jp.amazon.com/images/P/4861007348.09.MZZZZZZZ.jpg)マイナビでiPhoneアプリ開発の連載を持たれていたHMDTさんの書かれた本です。
UIやメモリ管理、実際のモデル設計など盛りだくさんの内容で、メモリ管理の話題ではP94のsetterの実装についての内容が自分にとっては勉強になりました。UITableViewなどで使われるdataSourceやdelegateはそもそもなぜそのような手法なのか、など他の本では取り扱わない事柄に触れていて珍しい一冊です。
ただ、本書に書かれている内容は、設計手法やコードの記述に癖が強く、複数人の開発でこの流儀をそのまま持ってこられるのは反発を招くことがあります。たとえばプロトコルの文法を使わずNSObjectへのカテゴリ追加でまかなうという非形式プロトコルを使っている点については、個人で把握できる範囲内の規模の開発だけなら良いですが、そうでない場合そのまま真似してしまうのはデメリットのほうが多いでしょう。
また、2011年の発売でARC以前のコードなので、今は惜しい感じになってます。
Amazonへのリンク: iOS開発におけるパターンによるオートマティズム
iPhoneプログラミングUIKit詳解リファレンス
![](http://images-jp.amazon.com/images/P/4897978440.09.MZZZZZZZ.jpg)UIKitについて書かれたかなり詳しい本で、iPhoneアプリ開発の現場では机の上に最もよく見かけた本です。リファレンスとしてあの部品の使い方ってどうやるんだろうという時に役に立ちました。例えばピッカーの使い方はネットで調べるより本で読んだほうがまとまっていて良いですね。
ただ、2010年ぐらいの本なのでiOS7用に書きなおして貰えると最高なんですが…
Amazonへのリンク: iPhoneプログラミングUIKit詳解リファレンス
iPhoneアプリ設計の極意 ―思わずタップしたくなるアプリのデザイン
![](http://images-jp.amazon.com/images/P/4873115027.09.MZZZZZZZ.jpg)iOSアプリはUIの魅力がその良さの9割を決めてしまうらしいのですが、洗練されたUIとは何か、他のアプリはどのようにしてUIを決めているのかという事が書かれています。
デザインという大枠だけではなく、ウインドウを閉じるボタン、アプリ内に表示する用語、チュートリアルなどについて心理学、文化、人間工学の視点から語られていて興味深く読めます。
Amazonへのリンク: iPhoneアプリ設計の極意 ―思わずタップしたくなるアプリのデザイン
インターフェースデザインの実践教室
![](http://images-jp.amazon.com/images/P/4873116082.09.MZZZZZZZ.jpg)心理学などの観点から使いやすいUIについてさらに知りたくなったら、インターフェースデザインについての専門書を読むのがお勧めです。
最近発売されたインターフェースデザインの実践教室では、iOSにかぎらず使いやすいUIで優れたUXを提供するための「リサーチ」「デザイン」「インプリメンテーション」というフェーズで分かりやすく書かれています。
Amazonへのリンク: インタフェースデザインの実践教室 ―優れたユーザビリティを実現するアイデアとテクニック
高速な動作をさせたくなったり、無駄のないコードを書きたくなったら
ここから先は作成したアプリケーションをフラストレーションなく動作させたくなったり、さらに深く知りたくなった人用の書籍についてです。
iOS SDK Hacks ―プロが教えるiPhoneアプリ開発テクニック
![](http://images-jp.amazon.com/images/P/4873114721.09.MZZZZZZZ.jpg)Method SwizzlingやrespondesToSelectorメソッドをフックするコードなどHackと呼ぶにふさわしい内容が書かれています。iOSアプリ開発者の机の上には結構な確率で置いてある本ですね。
Amazonへのリンク: iOS SDK Hacks ―プロが教えるiPhoneアプリ開発テクニック
エキスパートObjective-Cプログラミング -iOS/OS Xのメモリ管理とマルチスレッド
![](http://images-jp.amazon.com/images/P/4844331094.09.MZZZZZZZ.jpg)Objective-Cへ新たに追加されたARCやBlocks、GCDについて詳しく書かれています。序盤のメモリ管理についての項目が例がありObjective-C初心者寄りなので、始めたばかりの人はこの本の序盤をまず読むのが良いかもしれません。
GCDについては同期/非同期、キュー、dispatch系の関数の細かな使い分けが詳細に書かれている点や、所々にあるコラムが言語の歴史的経緯について記載されているところがとても良いです。BlocksについてはBlocks自身の実装について書かれているので、Blocksを使う上での制限を理解することに役立ちます。
ただ、文章のわかり辛い点を図が効果的に説明していない事があって惜しいところです。例えば強い参照、弱い参照は文字でわかり辛いのを補足するのであれば、図中の文字で強い/弱いを記載するのではなく、図自身で強弱を示して比較するようにしたほうがいいんじゃないかなと思いました(また、図が必要以上に大きい気がしてこなれていない感があるところが気になります)。
達人出版会で電子書籍版も出ていますが、私は電子書籍版も買っていて、自宅のソファでは紙の本で、事務所では電子書籍で読むような使い方をしています。電子書籍版は更新されているようで内容が増えていて素晴らしいです。
Amazonへのリンク: エキスパートObjective-Cプログラミング -iOS/OS Xのメモリ管理とマルチスレッド-
番外: プログラミングについてさらに詳しく知りたくなったら
エキスパートCプログラミング―知られざるCの深層
![](http://images-jp.amazon.com/images/P/4756116396.09.MZZZZZZZ.jpg)Objective-Cでプログラミングしていても、根本はC言語であり開発時にはポインタ、スタティックリンク、ヒープやセグメントなどといった用語を目にすることも多いと思います。
本書はそういった内容を歴史的経緯から説明していて、かなり軽い口調で書かれているので読みやすく、あれってそういう意味だったのかと思うことが多いでしょう。
また、ライブラリのリンクについてもページを割いているので、Xcodeが出すライブラリに関するビルドエラーについてもなんとなくわかってくるのではないかと思います。
初版は1996年に発行されたものなので、最近ではほとんど売ってないため本屋で見つけたら即買いの一冊です。この本にかぎらず、古い良書は技術書も揃う大型書店よりも大型電気店の技術書コーナーなどにひっそりとあったりしますので確認してみると良いでしょう。
Amazonへのリンク: エキスパートCプログラミング―知られざるCの深層 (Ascii books)
まとめ
ARCやBlocksなどの比較的新しい技術によって、本屋に並んでいるiOS関連書籍は選ぶのが難しいのですが、今でも読み返す本を選んでみました。
また、iOS7の登場でUIKitに関する書籍は定番がなくなっているので、新たな定番本が出てくるのが待ち遠しいところです。著者の皆さんには頑張っていい本を作っていただけることを期待してます。
追記:他にも最近はこういう本がいいよというのがありましたらコメントやメールで教えて頂ければと思います!