CoffeeScript
ポエム

CoffeeScriptはやっぱり駄目だった。

俺達の戦いは終わった…

人気上昇中のJavaScriptライブラリを調べてみた【2016年版】

2013~2014年の間、この分野は混戦状況だったが、2015年でついに決着がついたようだ。「TypeScript」が飛び抜け、他をさらに引き離し続けている。

JavaScript ベスト・オブ・ザ・イヤー 2016

Python と Ruby のシンタックスにインスパイアされた CoffeeScript はここ数年最も人気なコンパイラでしたが、2016年では下火となり大半の開発者は CoffeeScript から Babel を使って ES6 を書くスタイルへと移行していきました。

AltJS(Alternative JavaScript)をまとめて一覧で比較 人気はTypeScript

2015年の初頭までは、どれが本命かわからない混戦状態でしたが、2015年後半にかけてTypeScriptが伸びてきました。

そして、2016年には更に引き続き伸びて、もはや圧勝と言ってよいでしょう。

ついには嫌いな言語ランキング6位入賞という不名誉な烙印まで押されてしまった。

もう、CoffeeScript には未来は無いのか?このまま廃れていくのか?我々にはもう絶望しか残されていないのだろうか…

遅すぎたCoffeeScript 2

2017年9月18日、CoffeeScript のメジャーバージョンアップである 2.0.0 が正式リリースされた。2015年6月に ECMAScript 20151 がリリースされてから実に2年以上もかかってしまった。その間、ES2015+2 を採用を検討する場合が多く発生した。検討の結果、ES2015+ と文法的な互換性が高く、静的型付けである TypeScript を採用するようになったのは自然の流れであった。React の流行により、Babel による ES2015+ のトランスパイルであれば JSX 記法がそのまま使える事や TypeScript での JSX 記法のサポート等も少なくない影響を与えたであろう。

CoffeeScript は ES2015+ に対して何をやっていたかというと、ジェネレーター対応のためのyieldの追加ぐらいである。それ以外にも細々とした対応をしていたが、コンパイル先のターゲットは ES5 であり、ES2015+ にコンパイルするような仕組みでは無かった。Node.js や Electron での使用では ES5 にする必要は全くなく、また、現代的なブラウザでも ES2015+ 対応が進んだこともあり、ES5 へのコンパイルはやや冗長になる場合も出てきた。かといって、ジェネレーターは IE 等の ES5 までのブラウザでは全く対応していないため、ES5 をターゲットをしているのに、ES5 ではないコードになってしまうと言う中途半端な状態になっていた。

そういう中、やっと出てきたのが CoffeeScript 2 である。ES2015+ 文法へのコンパイルに対応したばかり、JSX 記法のサポートや、型付けのために Flow の型コメントにもサポートするなど、TypeScript にも十分対応しうる機能を盛り込んできている。しかし、如何せん遅すぎた。もし、2年前に CoffeeScript 2 が出ていれば、TypeScript の台頭を許さなかった可能性は十分にあり得ただろうが、仮定の話を仕方が無い。

JavaScriptの未来も暗い

現在、JavaScript の次として注目されているのが WebAssembly だ。WebAssembly が各ブラウザでサポートされ、環境も整ったとき、もはや JavaScript 自体が不要になる。既存のライブラリのために何年かは残るかも知れないが、そのまま消えていく可能性もある。

JavaSCript つまりは ECMAScript 自体は文法的に優れている言語とは言えない。今までは JavaScript しか無かったという独占状態であったため、JavaScript を使わざるを得なかったと言うだけに過ぎない。別のより優れた言語を用いて WebAssembly にできるのであれば、JavaScript を使う理由は無くなってしまうだろう。

JavaScript が消えるとき、それは CoffeeScript が消える時を意味する。TypeScript も同様であろう。TypeScript を WebAssembly で使えるようにするぐらいなら、Microsoft にとっては C# を WebAssembly で使えるようにした方が得だと考えるだろう。有象無象の多くの altJS が同時に消えていく事になる。

来るべき言語

未来は誰にもわからない。もしかしたら、来年には CoffeeScript のブームが起きるかも知れないし、誰にも知られずひっそりと終焉するかも知れない。

CoffeeScript は本当に終わったのだろうか?まだ終わってなかったとしても、そのうち終わる言語なのだろうか?どんなものでもいつかは終わりは来るものであっても、それが今か来年か数年先かそれともずっと後なのかはよくわからないものだ。第一、何を持って終わると言えるのだろうか?

CoffeeScript は様々な点で JavaScript よりも優れていると私は信じていた。しかし、ES2015以降はその信念に揺らぎを感じていた。一時的に ES2015+ や TypeScript へ移っていたことを否定はしない。だが、CoffeeScript 2 が出た事によって、ES2015+ や TypeScript へ移る理由は失われた。そうであれば、私達は、もう一度 CoffeeScript を見つめ直すべきなのでは無いだろうか?


  1. ES2015とも。バージョンとしては6となるため、ES6と表記される場合が多い。それ以前のECMAScript 5.1までをES5と表記する場合が多い。 

  2. ECMAScript 2015以上、つまり、ECMAScript 2016、ECMAScript 2017等を含めたES2015以上の機能を示す。