『Effective Objective-C 2.0』を読んだ

『Effective Objective-C 2.0』を読んだ年末に、『Effective Objective-C 2.0: 52 Specific Ways to Improve Your iOS and OS X Programs (Effective Software Development Series)』を読んだのでその感想を書きたいと思います。初めて英語でひと通り読んだ技術書で、ところどころ意味もわからないまま飛ばしたところもありますが、メモを中心に簡単に書きます。

章立て

章立ては以下の通りです。

  • Capter 1: Accustoming Yourself to Objective-C
  • Capter 2: Objects, Messaging, and the Runtime
  • Capter 3: Interface and API Design
  • Capter 4: Protocols and Categories
  • Capter 5: Memory Management
  • Capter 6: Blocks and Grand Central Dispatch
  • Capter 7: The System Frameworks

感想

全体を通して平易な英語で記述されているので、とても読み進めやすかったです。また、内容も平易なので前提知識があまりなくても読み進めることができると思います。この本のすごいところは、簡単だと思わせておいて本質的なところをきちんと抑えてくれる点です。Memory Managementや、Blocks、The System Frameworksの章は機能の説明が中心でしたがその他は、具体例を多く示しつつも基本概念的を抑えられるようになっているのでとても汎用的です。

章の小見出しについても、例えばCapter 1に関しては、

  • Item 1: Familiarize Yourself with Objective-C’s Roots
  • Item 2: Minimize Importing Headers in Headers
  • Item 3: Prefer Literal Syntax over the Equivalent Methods
  • Item 4: Prefer Typed Constants to Preprocessor #define
  • Item 5: Use Enumerations for States, Options, and Status Codes

というように、その中で扱うものが端的に説明されているので、後で曖昧になった時に振り返りやすくなっています。

嬉しいのは、

The usual convention for constants is to prefix with the letter k for constants that are local to a translation unit (implementation file). For constants that are exposed outside of a class, it is usual to prefix with the class name.

というように、記述の際の慣例(convention)がいたるところに出てくることです。普通に書いていれば、自ずと慣例的な書き方に落ち着いてくるのですが、いろいろな書き方をする人がいるので、個人的には「本当にこの書き方でいいのかな。」と思いながら書いていくことが多いです。そういう不安をいくつも打ち消してくれました。それだけでコードを書くスピードが上がると思います。

また、いろいろ概念を学ぶこともできます。コンパイル単位(translation unit)という考え方も本書を通じて知りました。staticはもちろん使っていましたが、ここまでちゃんと理解をしていませんでした。

staticの説明として、translation unitというものが出てきました。そしてさらにtranslation unitの説明として、

A translation unit is the input the compiler receives to generate one object file. In the case of Objective-C, this usually means that there is one translation unit per class: every implementation (.m) file.

と、あります。更に説明は続いて、例えば、kAnimationDurationを.mファイルに記述した場合、staticをつけなければ、コンパイラは外部シンボル(external symbol)を作成するので、別のクラスの.mで同じ定数が出てきた時にduplicate symbolというエラーを出すと解説されています。

他にも動的にプロパティを追加する方法や、Method swizzlingのやり方など一歩踏み込んだ内容、NSTimerの安全な使い方Blocksでのリテイン・サイクルを防ぐ方法、インスタンス変数にダイレクト・アクセスするかpropertyを介してアクセスするかなど面白い話題が目白押しです。

Kindle版が手頃なのでお勧めです!

今年は英語の技術書もちゃんと読んで、読んだ本についての感想もちょくちょくブログに上げていきたいなぁと思っています。

Pocket
LINEで送る

You may also like...