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は、かつて越えようとして越えられなかった壁です。果たして今度はどうなるでしょうか?

関連記事

その後、Dart 2とFlutterは順調にバージョンアップを重ねていきます。

Flutterはマルチデバイス対応へと進化していき、2021年3月、Flutter 2が公開されました。

あわせて読みたい

プログラミング言語 Dart




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

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

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

最新記事10本