Dart について思っていること

  • 91
    いいね
  • 9
    コメント
この記事は最終更新日から1年以上が経過しています。

追記

いくつかフィードバックを頂いたので補足。

まず、 Dart と NaCl は比較対象じゃないだろ的な話は、別に比較してません。
何か新しい実行環境を載せるなら LLVM が乗った方が汎用性があるのでは?という意味です。
Dart も NaCl で動けばいいんだろうし。

あと、 Angular.Dart は確かに Angular.js のポーティングに留まらず、 Dart ならではの実装になっていると聞きます。
Angular は流行ってるように思いますが、 DI 周りとか見ても結構 JS の限界を突破している感じがするので、
そこから Dart に流れる人もいるのかもしれませんが、そこからの流入はあまり現実的な気がしないなぁ。。

話はずれるけど、 HTML5 の下りはあまりよく無かったです。うまく書けてなかったけど、例えば Gears のことです(HTML5 が始まる前から、俺の中でそのイメージが強くあったので)。その影響の流れを書き直しました、あくまでイメージでそこは本題じゃないけど。

本文

(キーワードでひっかかりやすいように、あえて Qiita に書いてみる)

Alt-JS の文脈で色々と出てきていて、個人的なここまでの感想を。

まず、自分にとって最も現実的なのは TypeScript であろうことは間違いないと思う。

CoffeeScript は解決している問題があまりにも少ないと思う。

Dart は夢を見過ぎだと思う。

でも、一番気になっているのは Dart だったりする。

Dart は基本的に全く新しい言語を一個作って、
その VM をブラウザに載せようという試みという理解。
つまり Dart VM が載ってないブラウザでは動かないから、
dart2js で変換する必要がある。

Dart 的には dart2js は台無しといえば台無しで、
本来の目的は全てのブラウザに Dart VM を載せて、
そこで JS の代わりに Dart が動くことだと思う。

つまり、標準化して Dart VM が IE や FireFox や Safari に載せる必要がある。
これが、「夢を見過ぎ」と言った理由だ。

もし、それが可能なら本当の意味で "ALT" JS なんだけど、
VM レベル、つまり実行環境レベルで載せ替えるのであれば、
NaCl の方が嬉しい人が多いだろうと思う。
PNaCl では、 CPU 非依存の中間コードで配布できるらしいので、それはもっと素晴らしい。
なぜなら LLVM 対応なら全てのブラウザで動き、 JS の代わりに自分が好きな言語をもっていくことができる可能性があるからだ。

少なくとも、言語を JS に変換する、 GWT とか emscripten よりはオーバーヘッドも低そうだし、
そうでなくても、やり方が素直に思える。

しかし、 Mozilla は Emscripten や asm.js を押してて、 PNaCl ですら夢である可能性はある。
唯一の望みは LLVM が Apple 由来であるため Safari は押せばもしかすると、、という点ぐらいだ。

そんな押し問答をしている間に、 ECMAScript 6 の普及を頑張るのが Web としては全うで、
少なくとも TypeScript レベルの ALT であれば、まあ無くてもいいかなぁと思える人は多いかもしれない。
(もちろん、問題は山積みだが)

ここまでの話は、 Web を知っている人であればあまり違和感無く聞いてもらえるかもしれない。
Dart の言語仕様にはいっさい言及していないのは、Web という世界では、標準じゃななければ意味を成さないから。
どんなに言語仕様が良くても、それはオナニーにしかならない。

で、ここまで Dart が「夢である」と言っておきながら、まだ気になるのは
Google はそんな夢のような仕様を何度も標準にしてきたからだ。

Google Gears が出てきた当初、あくまで Google の独自プロダクトだったし、標準にはならないだろ?と思った人は多いはず。
SPDY はどうだ、あんなオレオレプロトコル通るわけない、Google 以外使わないだろうとみんな思ったはず。

でも、 Gears は HTML5 に確実に影響し、いくつかは Web の標準になった。SPDY にいたっては長い潜伏期間の果てに HTTP を塗り替え始めた。
Google は、そういう「夢の様な話」を実現させてきた実績がある。一つではない。失敗も多々あるけど。

まとめると俺が一番気になっているのは Dart の言語仕様でも、 ALT-JS の行方でもない。

Google が Dart という夢をマジで現実に持っていくために描くシナリオ 」 だ。

ブラウザというかなり特殊な舞台を背景にしているので、難しさはあるけど、
Google は Dart にそれなりにリソースを割いているように見えるので、無計画ではないのだろうと思う。

このあたりに詳しい人がいたら、是非お話を伺いたい。
また、以上の話は俺の理解の範囲なので、そこがすでに間違っていれば指摘も大歓迎です。
ちなみに、俺自身はしばらく TypeScript か普通の JS でいいかなと思ってる。