今日は、えにしテックさんにお邪魔しました。
おいしいコーヒーを頂きながらのCoffeeScript勉強会デス。

※以降は、MacOS Xで実行したメモです

1. homebrewのインストール
https://github.com/mxcl/homebrew
rubyスクリプトが載っているので、それを使ってインストール

2. node.jsのインストール
Xcodeがインストールされていることを前提に、
$ brew install node
(このMacBookAirだと、インストール完了まで約6分)

3. npmをインストール
$ curl http://npmjs.org/install.sh | sh

4. CoffeeScriptのインストール
どこからでもコマンドを使うためには、-gオプションを付ける
$ npm install -g coffee-script
(-gオプションがないと、パスの設定が必要になる)

5. 実行方法

  • コマンドライン
  • コンパイル(JavaScriptに変換)
  • ブラウザ(実行時にJavaScriptに変換)

6. 便利なモジュール?cakeコマンド
まず、Cakefileというファイルがないと、cakeコマンドがエラーになる

7. CoffeeScriptのドキュメント生成
PygmentsのCoffeeScript専用ラッパー

$ easy_install Pygment
$ npm install -g docco

スクリプトとコメントが左右に分離されたHTMLが出力される

8. テスト
CoffeeScriptのテストフレームワーク
https://github.com/pivotal/jasmine

9. 困ったこと

  1. CoffeeScriptだった時のエラー番号が表示されない
    -> 作者も認識している問題
  2. ECMA Script5で実装されたsetter/getterがCoffeeScriptで表現できない
    -> しばらくは対応しないってIssueに書いてある
  3. IE6だと、GCの関係でメモリリークが起きる場合がある
    関数の戻り値で参照とか返す場合に起こりえる
  4. 関数の最後に付加されるreturnが頻発して見づらくなる
    -> CoffeeScript上でreturnを書くことで回避できる
  5. C言語のforに相当するJavaScriptを生成しようとしても意図しない結果になる
    ex.)
    # aとbは変数
    hoge for number in [a..b]
  6. すべての関数が無名関数なので、デバッグがしずらい
    -> JavaScriptをCoffeeScriptに埋め込むくらいしか・・・

ってな感じの内容でした!

個人的な感想
最近、JavaScriptに興味が出て、CoffeeScriptのリアルタイム変換に感動して、
勢いで参加してみた訳ですが、node.jsがインストール出来たし、
とても有意義な時間を過ごすことが出来ました、感謝!!
でも、C言語のforに相当するJavaScriptが生成できないのは気持ち悪いですね。

これが、
list = [ 1, 2, 3, 4, 5 ]

n = list.length
console.log( list[i] ) for i in [0..(n - 1)]

こうなっちゃう。

var i, list, n, _ref;
list = [1, 2, 3, 4, 5];
n = list.length;
for (i = 0, _ref = n - 1; 0 <= _ref ? i <= _ref : i >= _ref; 0 <= _ref ? i++ : i--) {
  console.log(list[i]);
}

次回は、読書らしいので、都合を合わせて参加したい所存です。
関係者のみなさま、今日は大変ありがとうございました!

おしまい。