CoffeeScript

CoffeeScript はプログラミング言語のひとつである。コードはJavaScript のコードに変換される。
Ruby や Python、Haskell から影響を受けたシンタックスシュガーの導入により、JavaScript に比べ簡潔さと可読性を向上させたほか、配列内包 (Array comprehensions) やパターンマッチングといった機能を追加している。
CoffeeScript により、パフォーマンスを下げることなく、より短いコードでプログラムを記述することができる (JavaScript に比べ 1/3 程度の行数が削減できる)。 2011年3月16日から一時、CoffeeScript は GitHub でもっともウォッチされているプロジェクトであった。
この言語は Ruby コミュニティによく受け入れられており、(Ruby on Rails 開発者のが所属する) 37signalsでは、実際に製品の開発に使われている。また Ruby on Rails 3.1以降 でも正式にサポートされている。
ブレンダン・アイクは、氏が考える「JavaScript の未来」に影響を与えたものとして CoffeeScript に言及している。
歴史.
2009年12月13日、Jeremy Ashkenas は、この言語を「謎の言語を初回コミット(initial commit of the mystery language)」というコメントとともに Git リポジトリにコミットした。CoffeeScript は電子書籍である "Create Your Own Programming Language" を読んで開発された。このときのコンパイラは Ruby で書かれている。同年12月24日には初めてタグとドキュメントのついた、バージョン 0.1.0 がリリースされた。2010年2月21日には、コンパイラを純粋な CoffeeScript で記述した、バージョン 0.5 がコミットされる。この頃にはこのプロジェクトは GitHub を利用する他の開発者の興味を引き、1日に300回ほどプロジェクトページが参照された。
2010年12月24日、Askenas は、安定版であるバージョン 1.0.0 のリリースを、Hacker News で発表した。 なお、Hacker News は、最初のバージョンを発表した場でもある。
2017年9月18日、コンパイル後の出力を ES2015+ 構文に変更した2.0.0 がリリースされた。ES2015+ の実装に合わせて、1.x とは仕様の一部が変更及び追加されており、JSXや型アノテーションコメント等の機能が追加されている。また、Babel と連携してES5へのトランスパイルを同時に行うことができるようになった。
例.
下記は jQuery を使った典型的な JavaScript のコード例である。
$(function() {
 // 初期化のためのコード
CoffeeScript では codice_1 キーワードが codice_2 で置き換えられている。また、波括弧のかわりに、Python や Haskell のようにインデントで構造を表現する。さらに、丸括弧は曖昧性がない場合は省略できる。これらの特徴により、はじめに挙げたコードと同等の内容を CoffeeScript で記述するとこのようになる。
$ ->
 # 初期化のためのコード
jQuery などではクロージャを多用するが、CoffeeScript ではクロージャが簡潔に書けるようになっている。これは /info の内容を取ってきて、#info にそれを入れる場合の jQuery を使ったJavaScript の例である。
$.get("/info", function(txt) { $("#info").text("info = " + txt) }, "text")
CoffeeScript でも以下のように1行で書け、75文字が67文字へと1/10程度文字数が減っている。
$.get("/info", ((txt) -> $("#info").text("info = #{txt}")), "text")
コンパイル.
以下の方法で CoffeeScript から JavaScript にコンパイルできる。
下記の方法で、coffee/*.coffee が js/*.js にコンパイルされる。
coffee --compile --output js/ coffee/