Googleが「Dart 2」発表、Dartを再起動。iOS/Android用ライブラリ「Fultter」と共にWebとモバイルのクライアント開発にフォーカス
GoogleがDart言語を再起動し、「Dart 2」を発表した。Dart 2では、Webやモバイルのクライアント開発によりフォーカス。単一コードでiOS/Androidのネイティブアプリ開発を可能にするフレームワーク「Flutter」も登場した。
今から7年前の2011年、「JavaScriptは単なる言語の進化では修正できない根本的な問題を抱えている」と考えたGoogleが、JavaScriptを代替できる、より優れたWeb言語として開発しリリースしたのが「Dart」言語です。
- グーグルから「JavaScriptは根本的な問題を抱えている」とのメモがリークか - Publickey
- グーグル、新言語「Dart」を発表。JavaScriptのようなWebプログラミングを想定 - Publickey
2013年にバージョン1.0へ到達したDartは、JavaScriptを代替すべくECMA Internationalで標準化を開始します。
いずれはDartVMをChromeに搭載し、JavaScriptと並ぶポジションをつかもうとしました。しかし、Googleが期待したほどにはDartは普及せず、2015年にはChromeへのDartVMの搭載を断念。JavaScriptへのトランスパイラとなる方向性を打ち出します。
Dartへの注目が薄れゆくなかで、2017年にはTypeScriptがGoogle社内における標準言語の地位を獲得。Google社内のWeb開発言語としてもTypeScriptとAngularに地位を脅かされるようになり、Dartはマイナーな言語として細々と生き続けていくのではないかと、多くの人が見ていました。
- Google社内の標準言語としてTypeScriptが承認される。ng-conf 2017 - Publickey
- TypeScriptが標準言語になっても、Dartのことは忘れてませんよとGoogle担当者がフォロー - Publickey
Dart再起動。Dart 2発表
しかしGoogleのDart言語チームは諦めていませんでした。
GoogleのDart言語チームプロダクトマネージャAnders Thorhauge Sandholm氏は、2月22日付けの記事「Announcing Dart 2: Optimized for Client-Side Development」で、Dart 2を発表。Dartの再起動を次のように宣言します。
Today, we’re announcing Dart 2, a reboot of the language to embrace our vision of Dart: as a language uniquely optimized for client-side development for web and mobile.
本日、私たちはDart 2を発表します。これは、Webとモバイルのクライアントサイドに独自に最適化された言語であるというDartのビジョン達成に向けた、言語の再起動です。
「Flutter」、iOS/Androidアプリを単一ソースコードで
そしてDart 2における最大の武器が2月27日に発表された「Fultter」です。
Flutterは、単一のソースコードでiOSとAndroidのネイティブアプリケーションを開発するためのUIフレームワーク。
それぞれのOSに適した美しいUIやネイティブな機能へのアクセスを実現しつつ、Dartの特徴でもあるコードの変更をすぐシミュレータや実機の表示や動作に反映し迅速な開発を可能にする「Stateful Hot Reload」機能などを備え、効率よく短期間にネイティブアプリケーションの開発を実現します。
強力な型推論、UIをより直接的にコードで表現
Dart言語仕様もDart 2で強化されています。前述の記事「Announcing Dart 2: Optimized for Client-Side Development」では、おもに強力な型システムとUI定義が挙げられています。
In Dart 2, we’ve taken further steps to solidify Dart as a great language for client-side development. In particular, we’ve added several new features including strong typing and improving how UI is defined as code.
Dart 2では、クライアントサイドの開発においてDartをより優れたものとして前進させた。とりわけ、強力な型システムとUIをコードで定義する場面などにおいて、いくつかの新機能を追加した。
型システムでは、型推論によってコードの品質を高める支援を行い、コードによるUIの定義では、newやconstをオプションにすることで、より直接的にUIをコードで表現できるようになっています。
// Before Dart 2
Widget build(BuildContext context) {
return new Container(
height: 56.0,
padding: const EdgeInsets.symmetric(horizontal: 8.0),
decoration: new BoxDecoration(color: Colors.blue[500]),
child: new Row(
...
),
);
}
// After Dart 2
Widget build(BuildContext context) =>
Container(
height: 56.0,
padding: EdgeInsets.symmetric(horizontal: 8.0),
decoration: BoxDecoration(color: Colors.blue[500]),
child: Row(
...
),
);
Dartは生き残れるか?
DartはWebとモバイルのクライアントサイドにフォーカスしているとされつつも、Dart 2のここまでの展開は、比較的モバイルデバイスのネイティブアプリケーションに重心をおいているように見えます。
しかしこのネイティブアプリケーション分野そのものを、JavaScriptはProgressive Web Applicationの牽引役として置き換えようとしている、と見ることもできます。しかもJavaScript自身も進化し、またTypeScriptやWebAssemblyなどのエコシステムも加わって非常に強力な存在になっています。
- AppleもiOS/macOSをProgressive Web Apps(PWA)対応へ。次のSafari 11.1でService Workerなど実装 - Publickey
- マイクロソフト、Progressive Web Apps(PWA)をWindows 10のデスクトップで実行可能に。Windows 10はWindows、Linux、PWA対応のプラットフォームへ - Publickey
DartにとってJavaScriptは、かつて越えようとして越えられなかった壁です。果たして今度はどうなるでしょうか?
カテゴリ 開発ツール / 言語 / プログラミング
タグ Dart
あわせてお読みください
前の記事
Java EEに代わる新名称が「Jakarta EE」に決定