ぱろっと・すたじお

技術メモなどをまったりと / my site : http://parrot-studio.com/

RubyのコードをCoffeeScriptに移植する(geo-triangle-jsリリース)

何かと話題のCoffeeScriptですが、
仕様を読んで「これはすばらしい(*゚∀゚)=3」と感銘を受けまして、
私も使っていきたいと考えていました


http://jashkenas.github.com/coffee-script/


せっかくJavaScriptRuby*1や関数型っぽく書けるのであれば、
Rubyのコードを移植してみよう・・・ということで、
以前リリースしたgem、「geo-triangle」を書き直してみました


コードを比較してもらえばわかりますが、
かなりRubyに近い感覚で記述できてます
実にすばらしい(`・ω・´) b


ただし、基本的にはコンパイル言語なので、
いくつか気になるところがあります

  • 修正するたびにコンパイルがいる
  • ブラウザでのデバッグが面倒


CoffeeScriptは最終的にpureなJavaScriptにコンパイルするので、
JavaScriptの修正ならブラウザのリロードだけで済むところを、
コンパイルという手間が入るわけです


そして、そのコンパイルしたJSでエラーが出た場合、
指摘されたJSの行数と元のコードとの対応付けが、
規模が大きくなるとかなり面倒ではないかと・・・(´-ω-)


こうなってくると、JavaScriptのテスト手法まで含めて、
一連の作業を自動化したいところです
そろそろ本気でJSのテストについて調べないとダメかな・・・

おまけ:SinatraでのCoffeeScript


geo-triangleのサンプルサイトのコードにさりげなく含まれてますが、
Sinatraを使うと、少なくともコンパイルの手間は省けます

require 'coffee-script'

get '/app.js' do
 coffee :app
end

Sinatraでこのように書くと、「/app.js」が呼ばれた際、
app.coffeeをコンパイルしたコードを返してくれます
これだと、リロードだけで修正が反映されますヽ(`・ω・´)ノ


ただし、本番でやるとしゃれにならない負荷がかかるので、
あくまで開発中だけにとどめた方が
本番ではコンパイルしたJSそのものに差し替えましょう

*1:いや、本来Pythonと書くべきなんでしょうけど、私はPythonを扱ったことがないので・・・