Cappuccinoってどのくらい使えるのか調査してみた

CappuccinoMacCocoaをブラウザ上で動作させるフレームワーク。言語はHTML+JavaScriptではなくObjective-J。Objective-JはObjective-Cをほぼ完全にコピーした言語。
CappuccinoCocoa互換と言われいるが、それがどの程度、互換があるかの情報が少ない。Web上の情報を集めてみたが、Cappuciinoが本気で使えるものかどうかを書いているページには出会わなかった。どのページもポテンシャルが高いというようなことは書いているが、それがどの程度のものなのかわからなかった。
ということで、Cappuccinoについて少し時間をかけて調査してみた。

ソースコードが公開されているか?

ソースコードは公開されている。
何ができるAPIかが分からなくても、ソースコードを見ればだいたい分かる。逆に自分が欲しいAPIがあるかどうかもソースコードを見れば、だいたい分かる。
何よりも、ソースコードを読むことで、フレームワークの雰囲気を掴むことができるのは最大のメリットだと言える。

サンプルコードがあるか?

フレームワークを手っ取り早く理解するために、一番役立つのがサンプルコード。これも十分揃ってる。
http://cappuccino.org/learn/demos/
一番嬉しいのがレベルの高いアプリをサンプルに下チュートリアルがあること。
http://cappuccino.org/learn/tutorials/scrapbook-tutorial-1/
http://cappuccino.org/learn/tutorials/scrapbook-tutorial-2/

Macっぽい見た目を実現するViewが揃っている

Cappuccinoが用意するViewを使うとMacっぽい見た目が実現できる。ブラウザではそんなことできないだろう、とか思っていた見た目が実現されていたりする。例えば、Macを使っていていつもかっこいいと思うのが、ウィンドウの端にうっすら見える影。Cappuccinoではこの影まで実現している。
Cappuccinoが用意するViewはCocoaのViewをコピーしている。違いは、クラス名。接頭辞がNSかCPかの違い。NSはCocoaで、CPはCappuccino
他のクラスにも言えることだが、クラスの使い方が分からないときは、Cocoaの仕様を調べて、同じように使ってやるとよい。ほぼCocoaと同じように使える。
残念なのは、NSTableViewに相当するViewが用意されていないこと。見た目のコピーは難しそうだが、機能としては必須で欲しいところ。次バージョンで対応されるのだろうか。

キーバリューバインディングをサポートしているか?

見た目だけ、Cocoaに似ていても、キーバリューバインディングをサポートしてなければ、Cocoaとは言えないよ、とか勝手に思っていたが、ちゃんとサポートされていた。
Interface Builderによるキーバリューバインディングはできないものの、コーディングによるキーバリューバインディングはほぼ完全コピー。
恐れ入りました・・・

デバッガは使えるのか?

ブラウザ上で動作するにも関わらず、使用する言語はJavaScriptではなく、Objective-J。JavaScriptならFireBugデバッグできるが、Objective-Jの場合はどうするのかと思っていたが、Safariデバッグする方法が公開されていた。
http://www.postpeakliving.com/content/debugging-cappuccino-using-safari
また、Objectivce-Jでエラーが発生した際は、Exceptionが発生するので、デバッグのきっかけにはなる。ただ、どのファイルでエラーが発生したのかがわからないので、上手に差分開発する必要がある。
個人的に使っている方法は、怪しい文の前後に、alert()を入れる。Objective-Jが正常に動いている場合は、警告パネルが表示されるが、エラーが発生したところから警告パネルが表示されなくなる。この方法を繰り返し、エラーと思われる範囲を小さくし、エラーの文を見つけ出す。
また、Cappuccinoが用意するCPLogを使えば、トレース文を別ウィンドウで表示することが可能。
コンパイラがない+Cocoa同様長ったらしいメソッド名なので、typoによるエラーがよく発生する。typoを防止するためにも、コピペを多用し、しょうもない間違いっをなくすようにしよう。

Interface Builderと連携できるのか?

最新のバージョン7だとInterface Builderのレイアウト情報(NIB)が使える。
まだ、試していないので、どの程度使えるかは分からない。

CoreAnimationは使えるのか?

CALayerのアニメーションは2次元だから実現できないこともなさそうだが、まだ十分な実装はされていない模様。
画像の回転はアフィン変換を使って効果を指定できる。画像を任意の矩形にするようなことはできなさそう。
ちゃんと仕組みまでは見れていないが、VMLとか使って、実現していそう。

Interfece Builderライクな開発ツールはあるのか?

Interfece Builderライクな開発ツールは、まだない。但し、Cocoaのキーバリューバインディングをサポートしているので、そんなに実現は難しくなさそうに思う。
今年の夏にはatlasという開発ツールがリリースされることが予定されている。間違いなく使い物になるものがリリースされるだろう。
http://cappuccino.org/discuss/2009/02/28/announcing-atlas/

結論

CappuccinoはまさしくCocoaObjective-C互換。ブラウザ上でMaciPhoneを作るためのフレームワークの勉強ができると言っても過言ではない。
Cocoaを勉強するためにMacを買おうと思っていたが、当面はCappuccinoネットブックで問題なし。