無料でCocoaを勉強する方法
iPhoneやMacのアプリフレームワークであるCocoaをかじってみたいが、Macを持っていないため、Cocoaを触ることがができないと人は多いと思う。
Macを持っていなくても、Webブラウザが動く環境さえあれば、Cocoaを無料で体験できる環境が存在する。それが、CappuccinoとSproutCore。いずれも、JavaScriptをベースとし、Webブラウザ上で動作する。大枠、CocoaのアーキテクチャやAPIセットを継承しているので、Cocoaを触ってみたいという人にはうってつけだ。
CappuccinoとSproutCoreがどのくらいCocoaの代用になるかまとめてみた。
CappuccinoとSproutCoreの概要
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とはかけ離れた言語仕様になっている。提供するAPIもCocoaを模倣している。しかし、Objective-CはJavaScriptと比較すると型宣言や型変換などが面倒な仕様になっている。Objective-Cを模倣しているObjective-Jでも同じことをする必要がある。そのため、せっかく、JavaScriptを使うメリットが失われてしまっている気がした。Objective-J自体はJavaScript上で動作するRuntimeなので、その上で動くアプリはFireBugなどのデバッガでデバッグできない。Objective-Jは、Objective-Cを踏襲するなど、技術的な派手さはあるが、本質的にCocoaのアーキテクチャが踏襲できているかは疑問が残る*1。
とは言え、Cappuccinoは、Objective-Jの実現を筆頭に、恐るべき技術力を感じさせる。その実力をあらわすのが、Cappuccino上で作られているオンラインプレゼンテーションツール280 Slides。Keynote(Mac版PowerPoint)のエレガントさをWebブラウザ上で表現している。機能は本家Keynoteには及ばないが、触るだけで、Cappuccinoの可能性を感じられる。
更に、驚かせられるのが、Atlas。AtlasはMacのGUIビルダであるInterface Builderを模倣したもの。スクリーンキャストを見るだけでも、かなり期待ができる。既存のAjaxのGUIビルダはまともに使えるものが全くないといっていい状況。Interface Builderに近いGUIビルダの登場により、AjaxのGUIビルダ業界に激震が走るのは間違いない。Atlasは、今年の夏にリリース予定とのことなので、リリースされるのが非常に楽しみだ。
SproutCore
SproutCoreの一番の特徴は、Cappuccinoのように言語仕様を模倣するのではなく、純粋にCocoaのアーキテクチャを模倣していること。AppleがMobileMeの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では、CocoaとRuby on Railsの2つを融合したようなフレームワークでアプリを作れる。
SproutCoreが強くアピールしているのが、KVC(Key Value Coding)とKVO(Key Value Observing)をJavaScriptで実現していること。KVCとKVOはMVCを実現するための仕組み。CocoaもRuby on RailsもアーキテクチャのポイントはどちらもMVCだと考えると、CocoaとRuby on Railsの融合は以外と自然なことだったのかもしれない。
結論
Cocoaのアーキテクチャを学ぶならSproutCoreがいい。Macを買った際は、新たにObjective-Cを学ばないといけないが、SproutCoreでしっかりアーキテクチャを理解していれば、移行は比較的簡単だと思われる。
一方、Cappuccinoは技術的にはすごいが、やりすぎ感がある。やはり、Webアプリ開発するなら、JavaScriptの柔軟さを最大限に使いたいところ。敷居を高く感じさせるのは、長ーい名前のCoccoaライクなAPIを使わないといけないこと。Macで開発する際は、Xcodeの自動補完機能が使えるので、なんとかなるが、自動補完もコンパイルも、デバッガもない環境での開発はかなり大変になりそうな気がする。しかし、Atlasを見ても判るとおり、大化けする可能性は大なので、今後も注目していきたい。
*1:もう少し調査が必要