読者です 読者をやめる 読者になる 読者になる

cockscomblog?

cockscomb on hatena blog

iOSアプリ開発関連書籍、大量入荷のお知らせと、おすすめの10冊まとめ

京都に本社を置きWebサービス事業を展開する会社で、WebサービスiOSアプリを作ったりしている。会社にはたくさんの技術書があるが、iOSアプリ開発関連の書籍がすこし足りないと感じていた。しかしながら読んでみたい本があったら自分で買ってしまうから、別に不自由すると言うこともなかった。というつもりだったのだけど、ちょっと気が変わって、会社にいい本が置いていないことは技術を重視するという社風から考えても好ましくない、という気になった。そこで上司に相談したところ、本はいくらでも買おう、ということだったので、買ってもらうことにした。

新しく買ってもらったものに加えて以前から会社にあったものも少し含むけれど、いま会社にあるいい本を以下に紹介します。

Objective-C

詳解 Objective-C 2.0 第3版

詳解 Objective-C 2.0 第3版

『詳解 Objective-C 2.0』は、Objective-C言語の言語仕様からFoundation.frameworkくらいまでをいわゆるObjective-Cと呼ぶとすると、そのほとんどすべてを正確にカバーしている。少し内容が古くなったとはいえ、そういうことは他の書籍で補うということにして、まず定番を抑えておくのがよい。

エキスパートObjective-Cプログラミング ?iOS/OS Xのメモリ管理とマルチスレッド?

エキスパートObjective-Cプログラミング ?iOS/OS Xのメモリ管理とマルチスレッド?

ARC・Blocks・GCDの3つのトピックについて専門的に書かれている。ARCの細かな挙動に気を配ることはメモリ関連の問題を減らすために必要となるし、BlocksやGCDの細かな部分は少し複雑かもしれないが便利な仕組みが多い。『エキスパートObjective-Cプログラミング』で詳しく学んでおいて損になることはない。

Effective Objective-C 2.0

Effective Objective-C 2.0

少し前までだったらここまでの2冊が特によかったと思うが、いまだったらこの1冊も推したい。コードを書く上で、言語毎に好ましい習慣があるように思う。そういったことを自力で習得するのは容易ではない。『Effective Objective-C 2.0』にはそういうことが丁寧に書かれている。

iOSのメジャーリリース毎に出ている書籍

iPhoneアプリ開発エキスパートガイド iOS 6対応

iPhoneアプリ開発エキスパートガイド iOS 6対応

上を目指すプログラマーのためのiPhoneアプリ開発テクニック iOS 7編

上を目指すプログラマーのためのiPhoneアプリ開発テクニック iOS 7編

iOSはメジャーバージョンが上がる毎にその開発環境も大きく変わっていく。昨今であれば、StoryboardやAuto Layoutなどは、大きく開発の仕組みを変えたといってよいだろう。そのときそのときで十分キャッチアップしていくのがいちばんよいし、これにはApple自身のドキュメントやサンプルコードが役立つ。とはいえ、細かい部分は見逃しがちであるし、ちょっと離れているとまるで分からなくなってしまう。そういったときにこのような書籍が役立つと思う。

単なるフレームワークの解説にとどまらず、便利なテクニックまで紹介されているのがよい。会社には新たにiOS 6とiOS 7の2冊を買ってもらったが、古いバージョン向けの『iOS4プログラミングブック』と『iOS5プログラミングブック』も役立つと思う。

もう少し特定の分野に絞った書籍

iOS Core Data徹底入門

iOS Core Data徹底入門

Core DataはiOS/OS Xで使われる標準的なデータベースの仕組みである。かなり高レベルに抽象化され、一種独特とも言える。その分iCloudとの連携など非常に高度な機能が備わっており、必要な場合に利用できることは大きな助けになる。そういうCore Dataについて、かなり網羅的に書かれているのが『iOS Core Data徹底入門』である。

最初の2/3ほどはあまりCore Dataと関係なく、データの永続化についてのいくつかのやり方やSQLiteを使う方法などが書かれており、残りでCore Dataを説明する。Core Dataについては簡単な利用法からマイグレーション、さらに例えば大きなバイナリデータをどうしても格納したいときにパフォーマンスをなるべく劣化させないテクニックといったところまで、かなり広く書かれている。

反対に、書かれていないこともある。例えばマルチスレッドからCore Dataを扱うということがよくあるが、NSManagedObjectContextが持っているキューを利用するやり方や、あるいはNSManagedObjectContextの親子関係を用いる方法といった、比較的新しい (といってもiOS 5から使える) 部分について特に記載がない。昔ながらのやり方だと煩雑なので、この辺りの記述がほしかった。またNSIncrementalStoreというおもしろいやつがあって、あまり使われることはないけれど、書いてあるとおもしろかったと思う。

とはいえ、日本語でCore Dataについてこれほどの情報源はなかなかないから、持っておくとよいと思う。マルチスレッドのときの新しいやり方はWWDC 2012のセッションがよかった。

iPhone/iPad グラフィックスプログラミング』はiOS/OS Xのグラフィックス関連のAPI群を紹介している。グラフィクス関連のフレームワークは非常に多く、Core GraphicsやCore ImageにCore Animation、ImageIOなど多岐にわたる。例えばアニメーションGIFを作るやり方みたいなところまで詳細に書かれており、便利なことも多いと思う。

開発手法

iOSデバッグ&最適化技法―for iPad/iPhone

iOSデバッグ&最適化技法―for iPad/iPhone

バグに繋がりやすい部分をよく理解し、効率的なデバッグのやり方を知っていると、開発の効率もよくなる。パフォーマンス上の問題にぶつかったとき、何より計測することが解決の近道である。そういうことを専門的に取り扱ったのが『iOSデバッグ&最適化技法』で、いくつかのトピックについて必要な情報が書かれている。ちょっと経験のある人だったら大体わかっているようなことが大体書いてあるので、とても役立つと思う。

UI

スマートフォンアプリのUIには一定の規則性がある。そういった規則を意識することで統一された使用感が得られる。『スマートフォンのためのUIデザイン』ではそういった規則を、実際のたくさんの事例を元に紹介している。どういったときにどういったUIコンポーネントが使われるのか、どういった意味合いがあるのか、といったことを学ぶことでいきなり異常なUIを作ることがなくなってよい。

iOS 7になってUIが全面的に見直された。いわゆるフラットデザインであるが、コンテンツを重視してUIパーツを従属的なものとし、リアリティのある奥行きの表現や物理法則の採用によって現実の延長線上にUIを位置づけた、といった風な大きな変更である。『iOS 7デザインスタンダード』はそういった変化を丁寧に説明している。好ましいことに、UIコンポーネントの名前が正確に記述されていて、コミュニケーションにも役立つと思う。

結びの言葉

上に紹介した書籍の多くは、自分で既に買っていてよかったものである。iOSアプリ開発関連の書籍をすべて読んでいるわけではないから、もっとよい本があるのを知らないということも多いだろうと思う。そういうのがありましたら是非、ご教示いただけたら幸いです。

今回紹介した10冊のうち2冊は以前から会社に置いてあったもので、8冊は新規に購入していただけた。これらの書籍からよく学び、またこの知識を拡大し、社内におけるさらなる技術向上に努めたい。そしてその結果を必ず製品に反映させたい。

iOS/OS Xアプリ開発関連の書籍について、昔からのよい本もあるけれど、やはり年々充実してきている。Objective-Cについて丁寧に書かれた本もどんどん増えていて、チェックが追いつかないほどになっている。そういった中で、すべての領域が網羅されたかと言えば決してそういうわけではない。書籍から学べる領域というのはいまもむかしも限定的で、必要に応じて自ら学び取っていかなければならない。

とはいえ、書籍でカバーされたら良いだろうと思う領域はある。例えばテストについて、テストは誰にでも関係あるのだから、そろそろ書籍としてまとめられても良いのではないか。『iOSテストについて書かれているおすすめ電子書籍情報(洋書) - laiso+iphone』ここで書かれているように、洋書ではいくつか書かれたものがある。少し特化すると、例えばiOSにおけるオーディオ処理について以前は『iPhone Core Audioプログラミング』というのがあったが、絶版となってしまった。

今後ますますよい本が発刊されていくことに疑いの余地はないし、とても楽しみである。