置き換えられた時、開発者が気づいたのは、自分に本当に必要だったのはprototypeのメソッド拡張などではなく、クエリエンジンだったということ。coffeescriptが当初、熱狂的に支持された背景はなんだっただろう。今思えば、それはアロー記法とクラス構文だったと思う。断じて関数型言語ではないが、他の言語と同じぐらい関数型言語に憧れていたのも、また事実だろう。スコープの複雑な振る舞いも開発者の悩みの種だった。「あらゆる関数スコープで状態を持つことが"できすぎる"」という割れ窓だった。採用され、より関数型っぽく(正確に言えばRubyっぽく、なのだが)書けることになったが、それに対してESの文法はまだ冗長だった。一つはHTML5と呼ばれる仕様群でブラウザのポテンシャルを上げていこうと言う動きに伴って、JSの記述量が増えつつあったこと。サーバーサイドスクリプティングを行なうためだ。突き詰めるとGoogleChromeやFirefox、V8エンジンの存在がある。コード量の肥大化はクライアントサイドMVCという発想を産み、prototypeベースの限界、というか需要の無さをJavaScriptに突きつけた。現実的に、現代の開発者が獲得しているGUI実装パターンは、クラスやコンポーネントベースだった。WebはGUIになった。JSの肥大化とCoffeeScriptの登場そのような背景でCoffeeScriptが登場したと記憶している。クラスとアロー記法とインデントブロック。バッドパーツを踏ませない設計。Backboneに始まるJavaScriptMVCとともに、大規模開発での採用が増えていた。Rubyを髣髴とさせる設計は、元々Rubyユーザーが多かったNode.jsとも相性がよく、またRubyらしさが買われてRails標準になったりした。CoffeeScriptの一番の成果は、現実の仕様が追いつかない部分はプリコンパイラで先取りしてもいいんだ、という雰囲気を作ったことだと思う。typescriptも6to5(現babel)もそういう雰囲気の中で生まれたものだと記憶している。用いたクラス構文や継承ポリフィルはほぼそのままES6の仕様として採用された(正確にはstatic継承はオミットされた)。将来的にはクラス構文やアロー関数が使えることが約束されている。勝利であると言えるかもしれない。coffeeで書いたコードが将来的にもjsでそのまま継承できるようになるからだ。先進的な仕様を実装しESのオピニオンリーダーの一人になると思っていたのだけど、現実は違った。保守的になり、ES5の互換性志向が強くなった。いや、具体的にそう明言されたわけではないのだが、リポジトリを眺める限り、僕はそのように感じた。開発者のjashkenasも理由がわからないが、ある時点からやる気を失ってるように見えた。Issueは消化されなくなり、PRのマージ速度も目に見えて鈍化した。コードが綺麗ではなかったのも理由の1つだとは思う。言語からイノベーションが失われた。これが僕がCoffeeScriptを見限る理由となった。試していたのだけど、これは今のJavaScriptを大きく変化させるだろうなあ、という実感がある。それが使えるようになるのはいつになるだろう、と考えてげんなりした。付き合っていると変化に追いつけないだろうという予感がある。副目的そういうものを作っていた時期もあるのだけど、その目的はTypeScriptの猛追で雲行きが怪しくなり始めたCoffeeScriptを殺さないため、外部から何かしらのイノベーションを起こしたかった、というのがあった。結果は、一人でやるにはまったく時間が足りず、とある設計変更を見積もった結果、まったく時間を捻出することが不可能で、放置されることになった。あるが、この手のことをやるにはパトロンがいるという認識に至った。次に何かこの手のものを作る必要があれば、フルタイムの時間を捻出するために、そうしようと思っている。推進していたし、それで技評で本も書いたし、国内に限ればGithubのCoffeeScriptプロジェクトのスター獲得数も一位だし、本家にコミットはしてなかったものの、勝手に責任を感じている。いう表明も必要だと感じた。自意識過剰かもしれないが。好きな言語・技術が腐っていくのを見るのは、これが最後ではないだろう。いつだって心構えが必要なんだと思う。全ての技術は生まれながらに腐っていくといってもいい。ならないものを選ぶのも技術者としてのスキルの1つだろう。必要に応じて選んでいくことになると思う。ドワンゴ様から恵贈頂いた。月別アーカイブはてなブログをはじめよう!mizchiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。