最近、まわりでCoffeeScriptがすごいという声が。
CoffeeScriptって?
Javascriptを洗練させてPythonやRubyライクな文法で書ける言語。
コンパイルするとクロスブラウザでJS Lintも通るJavascriptになるというもの。
某WebベースのTwitterクライアントも、JS部分はこれで書いてるとか。
CoffeeScript - sappari wiki
https://sites.google.com/site/sappariwiki/coffeescript
CoffeeScriptについては、日本語だと、ここがよくまとまってます。
さっそく、CoffeeScritptを入れて、Titaniumの最初のコード(プロジェクトを新規作成するとできるやつ)をCoffeeScriptで書きなおしました。
https://gist.github.com/764343
JSファイルにコンパイルして、Titaniumでビルド。ドキドキ。
ちゃんと動きました! かなりすっきり書ける印象。
で、CoffeeScriptのコンパイルを前回のTitaniumのビルドを簡単にするスクリプトに組み込んでみる。
https://gist.github.com/767905
これでスクリプトを叩けば、自動的にCoffeeScriptがコンパイルされて、iPhoneアプリがビルドされる。
CoffeeScript -> JavaScript -> (Titanium) -> ObjectiveC
というすごい階層構造に。
CoffeeScriptで書いてて、たまに生成されたJSを見るとJavascriptが低レイヤーのアセンブラのように思えますw
クラス化してみる
Titanium公式のカプセル化は若干使いにくいので、どうしようかなぁと思ってたのですが、CoffeeScriptはクラスも使えるらしい。
https://gist.github.com/767545
さきほどのサンプルコードをクラスを使って書き直してみました。
ちょっと冗長かもしれないけど。。
まだ理解が浅いですが充分使えますね。
個人的には、thisをクロージャーやイベントリスナーに渡せるFunction bindingがあるのが便利。
functionを書かなくていいのも。これでタイポから解放される?
https://gist.github.com/767613
実際にコンパイルで生成されたJSはこんな感じ。
変数は最初にまとめて定義されていて、bindやfor ~ of などに使われる関数も定義されてます。
jQueryなどのライブラリを読み込むのと違って、必要なコードしか生成されないので、パフォーマンス的にもよさそう。
クラスはJSのprototypeベースのクラス化をわかりやすく使えるというかんじ。
ということで、CoffeeScriptかなりいいかも。
各エディタ向けの入力支援ツール
defunkt/coffee-mode - GitHub
https://github.com/defunkt/coffee-modeemacs
emacs使いの人はここ。
kchmck/vim-coffee-script - GitHub
https://github.com/kchmck/vim-coffee-script
Vim使いの人はここ。
jashkenas/coffee-script-tmbundle - GitHub
https://github.com/jashkenas/coffee-script-tmbundle
最近、Macに乗り換えてTextMate使いになったので、これを入れた。
Vim-users.jp - Hack #164: JavaScript開発環境 その2 CoffeeScriptを使う
http://vim-users.jp/2010/07/hack164/
非常にマニアックな考察がされていますw
今回の記事は、UjihisaくんからCoffeeScriptすごいよ!と教えてもらったのがきっかけで書きました。
Thanks. Ujihisa!