ひょんな拍子にCoffee断ち


なんとなく使い始めていたCoffeeScriptですが、いま製作中のプロダクトで環境を整えた直後に「いらないな」と感じるようになってしまいました。

お断り

これはあくまで個人の感想であって、これに従って何かを行なってトラブルが起きたとしても、筆者は一切の責任を負いません。そして、「どんな言語を使うか」はあくまで個人の自由ですので、「こんな人もいるんだな」と受け止めてもらえれば幸いです。

Coffeeを使い始めたきっかけ

半年ほど前にRailsのプロダクトを作り始めた時に、RailsでCoffeeScriptが使えることを知って、そして書いてみると、そのすっきりした書き味に魅力を感じて、しばらく使っていました。

別プロダクトの環境構築

そのRailsプロジェクトとは別に、非Railsでものを作ることになり、せっかくだからCommonJS的なrequireで書けるようにしてみよう、ということで、(自分としての考えがあって)コマンドラインツール+Rakeで環境を整えました。最初からJavaScript/CoffeeScript両対応で環境を作っていたので、多言語化の下地はこのときにできていました。

ES6の魅力

その過程で、ES6も従来のJavaScriptへコンパイルできることを知りました。ブロックスコープのlet、ジェネレーターといった新機能や、CoffeeScriptと共通する部分のあるクラス記法、ファットアローなど、いろいろと充実してきている印象を受けました。

CoffeeScriptではすっきり書けるけど、ES6で手間取る、というのは?を付けての存在確認と、配列内包ぐらいかな、という印象でした。

CoffeeScriptは楽しいけど…

一方のCoffeeScriptでも、書き心地はいいのですが、よくよく考えてみればあまり書く速度は速くなっていないということに気づきました。というのも、ややこしい記法をしようとすればCoffeeScriptでの書き方がわからず、その都度調べることになるので、そのあたりは素のJavaScriptのほうがわかりやすいのです。

あと、RailsでもSassよりSCSSを、HamlやSlimよりERBを選ぶ程度にはインデントを基準とした構文になじめず、CoffeeScriptのインデント構文にも、じつはもやっとした感じがしていました。

とどめを刺したVisual Studio Code

つい先日にオープンソース化されたVisual Studio Codeですが、TypeScriptと、その下位互換にあたる1ES6・JavaScriptについて、Microsoftお得意の強力なIntelliSenseが効いて、しかも型情報さえあればjQueryなどライブラリにも使える、そしてrequireする場合にもその先のファイルから読んでくれるということで、書きやすさがかなりのものになっていました。ただ、これはCoffeeScriptには効かないようで、これが最後の決め手になって、JavaScriptに戻ることにしました。

帰れない片道切符

で、残ったCoffeeScriptのコードは、ちょうど環境整備していたコマンドラインコンパイラで、coffee -bc hoge.coffeeとすれば対応するJavaScriptの一丁あがりです(コメントを移植する、不要な変数を削るなど多少の調整は必要ですが)。CoffeeScriptを使うために整備したはずの環境が、CoffeeScriptから乗り換えるために使うこととなってしまったのでした。

とはいえ、早急に型付けしたいものや、手を入れたいもの以外をすべてJavaScriptに戻すのも手間なので、とりあえず現状Coffeeで書いたものも残ってはいる状態です。


  1. もちろん、正しくはTypeScriptがES6に対して上位互換で作ってあるのですが、JavaScriptに出るIntelliSenseも、TypeScriptとして型付けしてあるような感じでした。