Cocoaをより深く味わうために
AppleのフレームワークであるCocoa。CocoaはMacやiPhoneのアプリを開発するのに使われるフレームワーク。CocoaはObjective-Cというマニアックな言語の上に実現されているため、色眼鏡で見てしまいがちだが、使えば、使うほどエレガントなフレームワークであるような気がしてくる。一体、Cocoaはどこがエレガントなのだろうか?この疑問は正しいのか?
Cocoaを使っていて、私がずっと感じていた疑問は以下である。
- 何故、プロトコル(Javaのインターフェースクラスに相当)を使わずカテゴリ(メソッドをオーバーライド)を使うのか?
- 何故、インターフェースクラスを使わずに、ターゲット・アクションを使うのか?
- 何故、サブクラスを使わずに委譲を使うのか?
- セレクタってGTK+のシグナルみたいなもの?だとしたら性能は大丈夫だろうか?
この疑問がCocoaのエレガントさにつながるような気がしてならない。この予測は正しいのだろうか?
こう言った疑問を解決してくれるのが、この本「Dynamic Objective-C」。
- 作者: 木下誠
- 出版社/メーカー: ビー・エヌ・エヌ新社
- 発売日: 2009/03/27
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 119回
- この商品を含むブログ (30件) を見る
本を読めばわかるが、Cocoa(Objective-C)はダイナミック(本のタイトルにも含まれる)であることが、エレガントである所以だと言っても過言ではない。このダイナミックさがInterface Builder(IB)のような強力なツールを産み出したと言っても過言ではない*1。Cocoaの仕組みだけ見ると、GTK+のようなウィジェット系のフレームワークも同じような位置付け*2にあるような気がする。
また、Cocoaの仕組みを読み解くためには、「Dynamic Objective-C」と併用する形でCappuccinoを使うのがよい。CappuccinoはJavaScriptでObjective-Cを実現したフレームワーク。使えるAPIもCocoaそのもの。ソースコードが公開されており、ブラウザがあれば、自分でCappuccinoが提供するAPIをカスタマイズし、簡単に動かすことができる。Macを持っていない私でもCocoaを勉強することができる。私は、Cappuccinoのソースコードを見たあとに、Dynamic Objective-Cを読んだので、今まで疑問(上記に記載)に思っていたことが氷解するように分かった。
私は、Cocoaを深く味わうために、CappuccinoとCappuccinoを使っている。フレームワークを理解するために必要なものは、自由にいじくりまわせるソースコードがあることと、よい本があることだと思う。