CoffeeScript はプログラミング言語のひとつである。コードはJavaScript のコードに変換される。

Ruby や Python、Haskell The Changelog. Episode 0.2.9 - CoffeeScript with Jeremy Ashkenas, Jul 23, 2010 から影響を受けたシンタックスシュガーの導入により、JavaScript に比べ簡潔さと可読性を向上させたほか、配列内包 (Array comprehensions) やパターンマッチングといった機能を追加している。

CoffeeScript により、パフォーマンスを下げることなく、より短いコードでプログラムを記述することができる (JavaScript に比べ 1/3 程度の行数が削減できる)Read Write Hack. Interview with Jeremy Ashkenas, Jan 7, 2011。 2011年3月16日から一時、CoffeeScript は GitHub でもっともウォッチされているプロジェクトであったGithub. Popular Watched Repositories。

この言語は Ruby コミュニティによく受け入れられており、(Ruby on Rails 開発者のデイヴィッド・ハイネマイヤー・ハンソンが所属する) 37signalsでは、実際に製品の開発に使われているCarson, Ryan. "New Rails-like Framework from 37signals for HTML5 Mobile Apps", Think Vitamin blog, Nov 8, 2010。また Ruby on Rails 3.1以降 でも正式にサポートされている。

ブレンダン・アイクは、氏が考える「JavaScript の未来」に影響を与えたものとして CoffeeScript に言及しているEich, Brendan. "Harmony of My Dreams"Eich, Brendan. "My JSConf.US Presentation"。

歴史 2009年12月13日、Jeremy Ashkenas は、この言語を「謎の言語を初回コミット(initial commit of the mystery language)」というコメントとともに Git リポジトリにコミットしたGithub. 'initial commit of the mystery language'。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. CoffeeScript 1.0.0 announcement posted by Jeremy Ashkenas on Dec 24, 2010。 なお、Hacker News は、最初のバージョンを発表した場でもあるHacker News. Original CoffeeScript announcement posted by Jeremy Ashkenas on Dec 24, 2009。

2017年9月18日、コンパイル後の出力を ES2015+ 構文に変更した2.0.0 がリリースされた。ES2015+ の実装に合わせて、1.x とは仕様の一部が変更及び追加されており、JSXや型アノテーションコメント等の機能が追加されている。また、Babel と連携してES5へのトランスパイルを同時に行うことができるようになった。

例 下記は jQuery を使った典型的な JavaScript のコード例である。

$(function() { // 初期化のためのコード });

CoffeeScript では function キーワードが -> で置き換えられている。また、波括弧のかわりに、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 にコンパイルできる。 Node.js を併用する方法。Node.js をインストール後、npm install --global coffeescript でインストールできる。CoffeeScript のコンパイラはバージョン 0.5 より、 CoffeeScript 自身で記述されているが、npm ではコンパイル済みのJavaScriptが配付されるため、Node.js のユーティリティとして使用することができる。しかし、コンパイラの中核部分は Node.js に依存しないため、ブラウザ上の JavaScript 実行環境で動作させることができるコンパイル済みモジュールも用意されているhttps://coffeescript.org/#2.4.1。 Apache Maven のプラグインである Coffee Maven Plugin がある。これは Java で書かれた JavaScript エンジンである Rhino を利用している。 CoffeeScript の公式サイトではメニューバーにある "Try CoffeeScript" をクリックすることで、ブラウザ上で CoffeeScript の入力、JavaScript へのコンパイル、実行を行うことができる。 Windows 向けのコンパイル済みの coffee.exe 。ただし、Node.js を使うことが推奨されている。 Debian/Ubuntu ではレポジトリに coffeescript がある。ただし、必ずしも最新版ではない。 <script type="text/coffeescript"> を使い、HTML の中に埋め込む方法。実運用環境では非推奨。

下記の方法で、coffee/*.coffee が js/*.js にコンパイルされる。 coffee --compile --output js/ coffee/

統合開発環境 IntelliJ IDEA - リファクタリングを含めサポートしている Visual Studio - 2012より標準でサポート。無償版のVisual Studio Express 2012 for Webでもサポートされる。有償のPro以上では拡張機能のWeb Essensials 2012を導入することでリアルタイムにJavaScriptへのコンパイル結果を表示しながら編集を行うことが可能。

脚注

参考文献

外部リンク

The Little Book on CoffeeScript - オープンソースで公開されている入門書の日本語訳