Googleが「Dart 2」発表、Dartを再起動。iOS/Android用ライブラリ「Flutter」と共にWebとモバイルのクライアント開発にフォーカス

2018年3月5日

GoogleがDart言語を再起動し、「Dart 2」を発表した。Dart 2では、Webやモバイルのクライアント開発によりフォーカス。単一コードでiOS/Androidのネイティブアプリ開発を可能にするフレームワーク「Flutter」も登場した。


今から7年前の2011年、「JavaScriptは単なる言語の進化では修正できない根本的な問題を抱えている」と考えたGoogleが、JavaScriptを代替できる、より優れたWeb言語として開発しリリースしたのが「Dart」言語です。

Dart言語

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はマイナーな言語として細々と生き続けていくのではないかと、多くの人が見ていました。

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のビジョン達成に向けた、言語の再起動です。

Dart 2の発表

「Flutter」、iOS/Androidアプリを単一ソースコードで

そしてDart 2における最大の武器が2月27日に発表された「Flutter」です。

Flutterは、単一のソースコードでiOSとAndroidのネイティブアプリケーションを開発するためのUIフレームワーク。

それぞれのOSに適した美しいUIやネイティブな機能へのアクセスを実現しつつ、Dartの特徴でもあるコードの変更をすぐシミュレータや実機の表示や動作に反映し迅速な開発を可能にする「Stateful Hot Reload」機能などを備え、効率よく短期間にネイティブアプリケーションの開発を実現します。

Flutter

強力な型推論、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などのエコシステムも加わって非常に強力な存在になっています。

DartにとってJavaScriptは、かつて越えようとして越えられなかった壁です。果たして今度はどうなるでしょうか?

このエントリーをはてなブックマークに追加
follow us in feedly

カテゴリ 開発ツール / 言語 / プログラミング
タグ  Dart


次の記事
オンプレミスのVMware環境を自動的に探索、情報収集して、Microsoft Azureへの移行を支援する「Azure Migrate」が正式版に

前の記事
Java EEに代わる新名称が「Jakarta EE」に決定


カテゴリ



Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed



新着記事 10本


PR - Books


fig

fig

fig