CoffeeScript

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

RubyPythonHaskell から影響を受けたシンタックスシュガーの導入により、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 では function キーワードが -> で置き換えられている。また、波括弧のかわりに、PythonHaskell のようにインデントで構造を表現する。さらに、丸括弧は曖昧性がない場合は省略できる。これらの特徴により、はじめに挙げたコードと同等の内容を 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 実行環境で動作させることができるコンパイル済みモジュールも用意されている。
  • 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へのコンパイル結果を表示しながら編集を行うことが可能。

脚注

Geoffrey Grosenbach; Jeremy Ashkenas, Michael Ficarra (2011年5月12日). “Meet CoffeeScript”. PeepCode. 2011年6月14日閲覧。

参考文献

  • Burnham, Trevor (2011年7月25日). CoffeeScript: Accelerated JavaScript Development (Report) (First ed.). Pragmatic Bookshelf. p. 136. ISBN 9781934356784
  • 飯塚直『CoffeeScriptファーストガイド モダンJavaScriptによるアプリケーション開発』翔泳社、2012年5月26日。ISBN 978-4798125992
  • 飯塚直『つくって覚えるCoffeeScript入門』アスキー・メディアワークス、2013年5月29日。ISBN 978-4048910774
  • Trevor Burnham (2011年8月3日). CoffeeScript: Accelerated JavaScript Development. Pragmatic Bookshelf. ISBN 978-1934356784
  • Alex Maccaw (2012年1月31日). The Little Book on Coffeescript. Oreilly & Associates Inc. ISBN 978-1449321055
  • Mark Bates (2012年5月24日). Programming in CoffeeScript. Developer's Library. ddison-Wesley Professional. ISBN 978-0321820105

外部リンク

Uses material from the Wikipedia article CoffeeScript, released under the CC BY-SA 4.0 license.