kwsktr's study log

kwsktr のおべんきょログ

CoffeeScript は書いても読んでも楽しいよ

http://coffeescript.org/


node.js やるなら避けては通れないという噂の CoffeeScript をようやく触ってみました。
なんだか楽しいプログラム言語です。
コンパイラーに怒られるのが新鮮な感覚だからでしょうか。


RubyPython の影響をビシビシと感じるのも、をかし。
そんなわけで JavaScript やら jQuery が馴染んできたかな? 程度の人も遊び感覚で弄ってみるといいと思います。

CoffeeScript とは

JavaScript に変換(コンパイル)するプログラム言語です。

CoffeeScript のメリット

数時間触ったボクが感じたメリットを書かせていただきます。

メリット その1 :: 明らかに記述が減る

書かなくてもいいことが多いというのは、単純に楽ということもありますが、typoが減るという副次的ではありますが非常に大きなメリットがあります。

CoffeeScript
item = [a..z]
for i in item
    console.log(i)

CoffeeScript のコードには ; (セミコロン) や { (中括弧) がありませんし var 宣言なども省略可能です。

JavaScript
(function() {
  var i, item, _i, _j, _len, _results;

  item = (function() {
    _results = [];
    for (var _i = a; a <= z ? _i <= z : _i >= z; a <= z ? _i++ : _i--){ _results.push(_i); }
    return _results;
  }).apply(this);

  for (_j = 0, _len = item.length; _j < _len; _j++) {
    i = item[_j];
    console.log(i);
  }

}).call(this);

上記がコンパイルして作成された JavaScript です。
非常にしっかりと記述されているのが解るかと思います。
ちょっと意図的過ぎはしますが、CoffeeScript の46文字に対し、JavaScript は340文字と1/7のタイプ量で済んでいます。

メリット その2 :: 記述ミスが減る

コンパイラーがつまらない記述ミスを吸収してくれます。
誤解を含んでいるのを承知で言いますが CoffeeScript によって生成された JavaScript には記述ミスがないのです。
インデントも統一されますし。


…プログラムとしてのバグは残っていたとしても、ね。

メリット その3 :: JavaScript のコードを読む習慣ができる

「プログラム言語は読みものです」とボクは常々思っているのですが、やっぱりプログラムを書くのは楽しいことです。
楽しみながら書いた CoffeeScript が、どのように変換されるのかを読むのもやっぱり楽しかったりします。


自分の書いた CoffeeScript がどのように コンパイルされたのかを、読んで確かめることができます。
どちらのコードも自分が書いた生きたコードなので、どこがどう変化したのかが非常に理解しやすいですよね。

先ほどのコードで言えば、即時関数にしていたり、ローカル変数をまとめていたり、配列 item への代入の仕方など、初心者が学ぶべき書き方を読んで学べますよね。

デメリットもあります

  • 学習コストが高い
    • PHPer 「文化がちがーう」
  • CoffeeScript は読みにくい
    • モヒカンが書いた CoffeeScript を読める気がしない
  • ぶっちゃけ JavaScript でも良いよね
    • 「JS なら生で平気だし。わざわざコン○○○しなくていいでしょ?」


それでも一度は触ってみたほうが良いと思います。

インストール

例によって node.js を使ってインストール・動作させます。

$ npm install -g coffee-script

コンパイル

記述した CoffeeScript は coffee コマンドに --compile オプション(-c)を付与してコンパイルします。
他にもオプションは幾つかあります。

  • --watch オプション(-w)

ちなみに .coffee が CoffeeScript拡張子になります。

通常のコンパイル方法
$ coffee -c hoge.coffee

これだけで hoge.js が生成されます。


ね、簡単でしょ。

CoffeeScript を楽しむためのドキュメント

[Coffeescript] を Amazon で検索

Coffeescript on Node.js :: 発売日: 2014/5/25

Coffeescript on Node.js
Coffeescript on Node.js
posted with amazlet at 14.05.09
Henri Bergius
Oreilly & Associates Inc