いい加減 Webアプリに必須になってきた javascript を始めてみようと思ったが、素の JS は色々と面倒だという話を聞いた覚えがあったため、altJS と呼ばれる言語の方が良さそうだと思い、調査してみた。
何箇所かWebをサーフィンしてみて、結局のところ次のページが一番参考になった。
モダンな言語でHTML5を開発しよう! 俯瞰して理解するaltJSの比較 (前篇 – TypeScript, CoffeeScript, Haxe)
ちなみに、JS 関連の言語をまとめたサイトは JS関連プログラミング言語リンク集(英語) にあったが、多過ぎて順に試していく気にはなれなかった…
上の3種類に関して、ざっとまとめてみると以下のようになる。
■TypeScript
- メリット:開発が大手(MS)、ほぼ JS、ライブラリ利用が容易
- デメリット:this の扱いが(JS同様)難しい、コンパイルが遅い(らしい)
■CoffeeScript
- メリット:this の混乱が無い(らしい)、記述量が少ない、ライブラリは(普通は)そのまま利用可能
- デメリット:インデントによるブロック識別(苦手な場合)、静的型チェックが無い
■Haxe
- メリット:コンパイルが高速、言語としての機能が豊富、複数の言語に変換可能
- デメリット:既存JSライブラリの利用にやや難あり、型指定がほぼ必須、出力が1ファイル
まず考えたのはコード記述量が圧倒的に少なくて済む CoffeeScript が一番使いやすそうだという事。しかし、静的型チェックが無いのは痛い上に、Python 風のインデントブロックがちょっと苦手。
なので、CoffeeScript の親戚で良さそうなのを探して徘徊してみた。いくつか見てみると、結局型チェックしてくれる場合には型指定が必要なため、(私が満足できるほど)記述量の少ないものは無かった。
で、Haxe も含めて他の言語 → JS を見て回った。目移りしながらサーフィンしている最中に、ふと「こいつら JS じゃないよ!」と気付き、没にした。Scala とか Lisp のヤツには、かなり後ろ髪を引かれた。
というわけで、最終的に一回りして TypeScript の「型チェックあり」「JS 上位互換」に戻ってきた。
こうして対象が決まったところで、タイプ数削減のために Emacs のコード補完を探さないと面倒な事に気付く。…こんなかんじでヤクの毛を刈ろうとしたまま、結局コード書きができないというオチにならないようにしないと。