Dart
DartDay 25

2014年のDartを振り返る

More than 3 years have passed since last update.

こんにちは、らこです。ついにDartアドベントカレンダー最終日です。参加してくださったみなさん、読んでくれたみなさん、ありがとうございました。主催しておいてなんですが全日埋まるとは思ってなくてただただ感謝です。

2014年はDart元年

大げさかもしれませんが私は今年がDart元年だったと思っています。(2013年はGolang元年だったと思う)2013年12月に1.0リリースしたDartは一年で1.8までアップデートされました。

ECMA標準にDartが追加された

Ecma approves the 1st edition of the Dart language specification
Dartコミュニティにとって今年最も大きく、重要なイベントは、ECMA-408として仕様が標準化されたことです。こういっては何ですが、未だDartはいつGoogleの判断で消えてもおかしくない、マイナーな言語です。ですがECMAに仕様として明記されたことでDartを安心して使い続けることができるようになりました。

Dart for Mobile

Dart 1.5 makes it easier to develop for the mobile web
Dart1.5に同梱されたDartEditorではAndroidでのデバッグができるようになりました。実際にやってみた記事はこちらです。ネイティブアプリはまだ書けませんが、DartiumをAndroidに送り込んでDartVMで実行できるというのは画期的でした。

Google I/OでのDart

Dart at Google I/O 2014
今年のGoogle I/OでもDart関連のセッションがいくつかありました。

"Dart End-to-End: A productive developer experience for the web" セッション要約

"How we built Chrome Dev Editor with the Chrome platform" セッション要約

"Upgrading the engine mid-flight: How Google improves its web apps without downtime" セッション要約

deferred loading

Dart 1.6 adds support for deferred loading
ECMA-408に策定されたDart2.0までに実装される三本柱、「deferred loading」、「enums」、「async/await」のうち、Dart 1.6でdeferred loadingが実装されました。

deferred loadingはライブラリの遅延読み込みを可能にし、さらにdart2jsでコンパイルされた後もそれは有効です。deferred loadingについてはDart1.6の主な変更点に簡単にまとめています。

Homebrewやaptでインストール可能に

Dart launches support for Homebrew
今まで公式サイトからアーカイブをDLして展開するしかなかったことでランタイム環境を整えにくかったDartですが、homebrewやaptでSDKだけをインストールできるようになり、開発者以外のアプリケーション利用者にも優しい言語になりました。

pub globalでDartアプリのインストール、実行が簡単に

Dart 1.7: easily share and use command-line applications built with Dart
Dart 1.7から追加されたpub globalコマンドにより、pub.dartlang.orgからアプリケーションをインストールし、コマンドラインから簡単に実行できるようになりました。これでコマンドラインツールの配布のハードルが大きく下がりました。

ついにGoogle App Engineへ

Running Dart server applications on Google Cloud Platform
GAEのManagedVMとしてDartが使えるようになりました。Dockerと組み合わせることでサーバーサイドアプリケーションの開発の幅が広がり、Dartの使い道がまた増えました。

enum、async/awaitの実装

Enums and Async primitives in Dart
つい先日、Dart 1.8にてenumとasync/awaitが実装されました。まだexperimentalですが、Dart 2.0までのマイルストーンはほぼ実装し終えたと言っていいでしょう。

2015年のDartを夢見る

Dart Teamは基本的に実装前の新機能については情報を漏らしません。deferred loadingやenum、async/awaitはECMA-408にて策定された仕様だからわかっていただけです。2015年、Dart 1.9や2.0で何が実装されるかはわかりませんので、ここは何が実装されて欲しいか夢を見ることにします。

dart2jsの改善

現状めちゃくちゃ遅いです。特にdart:mirrorsが絡むとコンパイル時間の単位がminになります。まだDartVMが使える環境が少ない以上、dart2jsは革命的に速くなってもらいたいところです。

Cordova/PhoneGapの公式ポーティング

今のところ無理やりcordova.jsを使ってCordovaアプリケーション作ることはできるようですが(参考)、ぜひ公式でcordova.dartを作って欲しいところです。もしくはそれに準ずるモバイルアプリケーションフレームワークをお願いします。

2次元配列のリテラルがほしい

今更ですし「そこかよ」って言われそうですが、new List<List<int>>()なんてしたくないです。多次元配列を[][]<int>できるようになったら跳ねて喜びます。

みなさんが夢見る2015年のDartについても良かったらコメントで教えてください。


というわけで2014年のDartアドベントカレンダーはこれにて終了です。みなさんよいお年を。