Webの次世代クライアント側開発言語の話

偉い人がDartをやれっていって、最初DartFlashがDartっていう新しい言語を内包したJavaScriptエンジンなのかと思ったが(笑)、Google閣下が制定した言語ですよという事を今更ながらに知った。
あー、俺遅れてんだなぁと実感したので、パソコンなくて開発も出来ないし、暇に任せてぼちぼち調べてみた。


以下、感想。

昨今の状況の背景

javascriptって開発規模でかくなってくるといまいちだよねーとか、クライアントサイドがjavascriptしか選択肢ないのってどうなのよーとかいう話をしていて、昨今はjavascriptの次に関する議論が活発な模様。


大体、このくらいあるみたい。

言語名 一言 概要 制作元
CoffeeScript より気持ちよく javascritを生成するための言語。コード書きやすさ重視 Jeremy Ashkenas
TypeScript タイプセーフ javascriptを生成するための言語。タイプセーフ重視 Microsoft
JSX javascriptを生成するための言語。実行速度重視 DeNA
Dart 最速 生成も出来るけど、どちらかというとコンパイルとネイティブ実行出来るのが売り Google
Haxe 大風呂敷 JavaScriptの他、C++PHPにも変換出来る Nicolas Cannasse

まあ、よりプロっぽい人がもっとまとめてる。
http://yohshiy.blog.fc2.com/blog-entry-183.html


へぇー、へぇー。
続いてそれぞれに対する個人的な見解でも。

CoffeeScript

node.jsでは必須な感じのcoffeeさん。言語オタクに受けがいい印象。
javascriptよりも短く気持ちいいプログラミングが出来るよと。


個人的にはnode.jsやるなら使おうかな、それ以外だと触らないでおこうかなという感じ。

TypeScript

DelphiC#の信者が熱烈に指示するアンダースさんが見てるって時点で大分期待。
実体は奇麗なjavascriptを生成するタイプセーフなjavascriptのスーパーセット。


導入する事に特にデメリットを感じないのが、保守的な人間にはいいやね。
でも言語仕様的には、なんか冗長なjavascriptでしかないかなって感じ。actionscript2が出た時みたいで、特に感動はない。

JSX

あんま調べてない。DeNAの事だから実用に耐えうる速度が出るように工夫してんじゃないかなと思われ。
タイプセーフな機構もあって実行速度も速いですよと。


中の人には申し訳ないのだが、なぜかあんまり興味が沸かない。abstractとかのキーワードがjavaっぽくて、個人的に嫌なのかも。

Dart

言語仕様がとても洗練されている印象。候補の中で唯一、JavaScriptを作る事が目的ではない言語。
Googleごり押しがどこまで通じるか見物。


変換されたjavascriptが読みにくいってのが難点なので、Chromeで動かす分にはあり、それ以外ではちと怖い。

Haxe

なんでも変換出来るんだって!マジで!風呂敷超広い!
「はせ」じゃなくて「へっくす」って読むんだって!えー。
広すぎてあんまりよくわからんが、コンパイルが早くてC#っぽくて対JavaScriptではすでにそれなりの実績があるらしい。


そのうちDartにも出力してくれたりするんじゃないの。
言語仕様も使いやすそうだし、面白い事してんなぁという印象。

その他

VBScript、嘘ですごめんなさい。
JangarooとかJSILとかもあるらしい。でももうお腹いっぱいだからいいや。
javascriptって限定しなければ、unityも入ってくる。


あとはピュアなjavascriptをこねこねするってのがあるよねと。こっちもそう簡単になくならんだろう。
こねこねした代表格がjQueryで、DOM操作やajaxを随分楽にしてくれた。
俺はこれで大して困ってなかったから、javascriptフレームワークを探して、結局enchant.jsの試用をしているわけだけど。

まとめ

パソコンが返ってきたら、BULLETをとりあえず再開したいんだけど、パソコンがなかなか返ってこなかったらTypeScriptとHaxeは試そうかなと思った。
TypeScriptは導入が楽なため、Haxeは一番面白そうなため。


TypeScriptは導入に対してはほぼ安牌。心配事が0に等しい。
ただ導入後もそんなに変わるかっていうと、大して変化ないんじゃね?って気もする。開発人数一人だし。コーディング速度低下、テストの質と速度向上程度だろね。


Haxeは出力されるJavaScriptがどのくらい読みやすいかがポイントになりそう。
結局最終的には、javascriptデバッグになるだろうから。


Dartはランタイム自体が違うから、普及に成功すれば実行速度最速は確定だろうけど、今は様子見が妥当かなと。
プログラミングの気持ちよさを追求する集団がcoffeescriptに行ってるので、その辺りの層をせめて取り込むか、javascriptからdartへ自動変換するプロダクト(dartjavascriptではない)が出てきた辺りではじめて目を向けるのでも遅くないかなと思った。
強いていえば、javascriptの実行速度がネックになるものは一つ手元にあって、世界創造ツール。計算処理がネイティブになるだけで相当違うだろうから、試す価値はあるのだが。あれはWebじゃなくていんじゃねって思いはじめてるけど。


coffeeは、時が来たらというかnode.jsとセットでどうせいつか触るだろうけど、今特に必要性が無いので保留。
リアルタイム制の高いオンラインゲームでも作ろうと思ったら、コンニチワすることになりそう。


まずはHaxe関連のツールでもダウンロードしよっと。
またなんか進展あったら追記する。