AltJSはどれを使おうか?
AltJSはどれを使おう?と調べていたけど、いまいちしっくりこないというか…。
候補
候補として挙げていたのはこれ。
- Closure Library
- traceur-compiler
- TypeScript
ひとつ目もふたつ目もGoogle製。 しかも、AltJSかというと、微妙な存在。 なぜかというと、JavaScript(ES6)をコンパイルしてJavaScript(ES5)にするから。 ES5とES6を別言語と見ればAltJSとも言えるけど。
Closure Library
これはJavaScriptだけでなく、Libraryというだけあっていろんなことが出来る。 いろんなことができるせいか、AltJSとして使おうとするとちょっとめんどい。
使いたいのはJS(ES6) → JS(ES5)と圧縮だけ使いたいんだけど、それ以上のことも含んでいる。 そして、設定もめんどい。
どこがめんどいかというと、base.jsからの相対パスとか、deps.jsが必要だとか、なんかしっくりこない。 最終的にひとつのJavaScriptになってしまえば問題ないんだけど、作ってる最中はひとつにはしない方がなにかと便利なはず。 というわけでナシという判断。
▶Closure Library を使うべき 10 の理由 - WebOS Goodies http://webos-goodies.jp/archives/10_reasons_why_you_should_use_the_closure_library.html
traceur-compiler
これはJS(ES6) → JS(ES5)というツール…と思いきや、ここに落とし穴。 実行にはtraceur専用のランタイムスクリプトが必要になる。 ランタイム…そんな存在めんどくさいなぁ…という感覚。
▶traceur-compiler 入門 - from scratch http://yosuke-furukawa.hatenablog.com/entry/2014/07/31/093041
TypeScript
最後はAltJSらしいと言えるTypeScript。 言語仕様はES6を意識しているとは言え、TypeScript。 上述の言語はES6の意識度合いが違う(TypeScriptの方が薄い)と思われる。 とは言え、今後の流れを考えるとES6を意識してないと言語としての存続も危ういだろうからうまいことバランスを保ちながら進むのでは?
TypeScriptがめんどうなのは定義ファイルが必要になるところ。 有名どころの定義ファイルは揃ってきているから、たいして気にならなくはなってきているのが実情。
定義ファイルは面倒ではあるが、それよりも次のメリットが大きい。
- 型がある
- 出力されるJavaScriptが読みやすい
大きくこの2つがとても素晴らしいと思う。 Closure LibraryもJSDocで型定義はできるが、準備が…というデメリットの方が大きい。 出力されるJavaScriptが読みやすいというのは嬉しいし、TypeScriptのランタイムがなくても動作する純粋なJavaScript(ES5)を出力してくれることも嬉しい。 今後はES6を出力するようになるだろう。
まとめ
今後のES6を見据えるとTypeScriptは避けて、JavaScript(ES6)で書いておきたい気持ちもあるが、言語とツールとしてのバランスはTypeScriptはいいな…と思う。
最終的にはTypeScript + Closure Compilerに落ち着くのかな?という気がしている。