無料でCocoaを勉強する方法

iPhoneMacのアプリフレームワークであるCocoaをかじってみたいが、Macを持っていないため、Cocoaを触ることがができないと人は多いと思う。
Macを持っていなくても、Webブラウザが動く環境さえあれば、Cocoaを無料で体験できる環境が存在する。それが、CappuccinoとSproutCore。いずれも、JavaScriptをベースとし、Webブラウザ上で動作する。大枠、CocoaアーキテクチャAPIセットを継承しているので、Cocoaを触ってみたいという人にはうってつけだ。
CappuccinoSproutCoreがどのくらいCocoaの代用になるかまとめてみた。

CappuccinoSproutCoreの概要

Cappuccino SproutCore
提供元 280 North SproutCore
動作環境 Webブラウザ Webブラウザ+Ruby on Rails
ライセンス LGPL MIT license
言語 Objective-J Cocoa on Rails
開発環境 GUI Builder(Atlas)を夏頃のリリースの予定 Ruby on Railsライクなコマンドベースのソース雛形生成ツール
特徴 Objective-Cを模倣 KVC,KVOを模倣
実績 280 Slides MobileMe

Cappuccino

Cappuccinoの一番の特徴は、JavaScript上でObjective-Cライクな言語Objective-Jを実現していること。Objective-Jの言語仕様は、Objective-Cをトレースしているので、JavaScriptとはかけ離れた言語仕様になっている。提供するAPICocoaを模倣している。しかし、Objective-CJavaScriptと比較すると型宣言や型変換などが面倒な仕様になっている。Objective-Cを模倣しているObjective-Jでも同じことをする必要がある。そのため、せっかく、JavaScriptを使うメリットが失われてしまっている気がした。Objective-J自体はJavaScript上で動作するRuntimeなので、その上で動くアプリはFireBugなどのデバッガでデバッグできない。Objective-Jは、Objective-Cを踏襲するなど、技術的な派手さはあるが、本質的にCocoaアーキテクチャが踏襲できているかは疑問が残る*1
とは言え、Cappuccinoは、Objective-Jの実現を筆頭に、恐るべき技術力を感じさせる。その実力をあらわすのが、Cappuccino上で作られているオンラインプレゼンテーションツール280 SlidesKeynote(MacPowerPoint)のエレガントさをWebブラウザ上で表現している。機能は本家Keynoteには及ばないが、触るだけで、Cappuccinoの可能性を感じられる。
更に、驚かせられるのが、Atlas。AtlasはMacGUIビルダであるInterface Builderを模倣したもの。スクリーンキャストを見るだけでも、かなり期待ができる。既存のAjaxGUIビルダはまともに使えるものが全くないといっていい状況。Interface Builderに近いGUIビルダの登場により、AjaxGUIビルダ業界に激震が走るのは間違いない。Atlasは、今年の夏にリリース予定とのことなので、リリースされるのが非常に楽しみだ。

SproutCore

SproutCoreの一番の特徴は、Cappuccinoのように言語仕様を模倣するのではなく、純粋にCocoaアーキテクチャを模倣していること。AppleMobileMeのWebアプリのフレームワークに採用したことを考えても、その筋のよさは間違いない。その仕組みは、Ruby on Rails上で作られているため、アプリ開発に利用するためには、Ruby on Railsが必要となる。もちろん、アプリは、Ruby on Railsを意識することなくJavaScriptで作れる。JavaScript on Railsと言った感じ。Cocoa on Railsと呼ばれることもある。Ruby on Rails上で作られているためか、HTMLとプログラムの結びつけを効率化するHTMLヘルパの記述方法は、Ruby on Railsそのもの。SproutCoreでは、CocoaRuby on Railsの2つを融合したようなフレームワークでアプリを作れる。
SproutCoreが強くアピールしているのが、KVC(Key Value Coding)とKVO(Key Value Observing)をJavaScriptで実現していること。KVCとKVOはMVCを実現するための仕組み。CocoaRuby on RailsアーキテクチャのポイントはどちらもMVCだと考えると、CocoaRuby on Railsの融合は以外と自然なことだったのかもしれない。

結論

Cocoaアーキテクチャを学ぶならSproutCoreがいい。Macを買った際は、新たにObjective-Cを学ばないといけないが、SproutCoreでしっかりアーキテクチャを理解していれば、移行は比較的簡単だと思われる。
一方、Cappuccinoは技術的にはすごいが、やりすぎ感がある。やはり、Webアプリ開発するなら、JavaScriptの柔軟さを最大限に使いたいところ。敷居を高く感じさせるのは、長ーい名前のCoccoaライクなAPIを使わないといけないこと。Macで開発する際は、Xcodeの自動補完機能が使えるので、なんとかなるが、自動補完もコンパイルも、デバッガもない環境での開発はかなり大変になりそうな気がする。しかし、Atlasを見ても判るとおり、大化けする可能性は大なので、今後も注目していきたい。

*1:もう少し調査が必要