RubyのコードをCoffeeScriptに移植する(geo-triangle-jsリリース)
何かと話題のCoffeeScriptですが、
仕様を読んで「これはすばらしい(*゚∀゚)=3」と感銘を受けまして、
私も使っていきたいと考えていました
http://jashkenas.github.com/coffee-script/
せっかくJavaScriptをRuby*1や関数型っぽく書けるのであれば、
Rubyのコードを移植してみよう・・・ということで、
以前リリースしたgem、「geo-triangle」を書き直してみました
- geo-triangle-js:https://github.com/parrot-studio/geo-triangle-js
コードを比較してもらえばわかりますが、
かなり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そのものに差し替えましょう