Flutterって何者? – ③開発言語”Dart”の歴史

はじめに

前回は、Flutterとその他のマルチプラットフォーム開発ツールとの比較をしました😊

「まるちぷらっと・・・なに?」って方はこちら

さて今回は、

Flutterの開発言語となるDartについて解説していきたいと思います!

Dartって聞き慣れない言語ですよね!

もしかすると初めて聞いた方もいるのではないでしょうか?

僕もはじめは

うっきー

”ダート”って”フラッター”だよね?

とか言ってましたね😄爆笑

Dartは言語だよ!!!!(過去の自分へのメッセージ)

そしてこのDart、

なにもはじめからFlutterの公式言語になるために生まれてきたわけではありません…😣

いろんな紆余曲折、苦難を乗り越えて、現在の人気に至っているわけですねぇ・・・(感慨深い顔)

そんなことも含めて今回はァ!

謎の言語”Dartの歴史”について、色々と調べてみましたので解説していこうと思いますぅ〜!

ではいくぅ〜!😉

“Dart”の歴史

それでは、早速Dartの歴史について学んでいきましょう!

2011年10月、初登場

Dartが登場したのは2011年10月。

デンマークのオーフスで開催された「GOTOカンファレンス」で初公開されました✨

うっきー

2011年って8年以上も前やんけ!(2020年現在)(突如出た関西弁)

そうなんです。

皆さん(僕も含めて)Flutterを知ったタイミングでDartを知った方が多いのではないでしょうか?

なのでDartも新しい言語なのかなと思いそうですが、実は8年前にはすでに開発されていたんです😳

驚きですね〜😳

また当初はスマホアプリ開発用ではなく、

「ウェブブラウザ組み込みのスクリプト言語であるJavaScriptを置き換える目的」で作られたそうです。

(Wikipedia抜粋)

Dart言語はJavaScript言語にある解決できない言語上の問題点を解決し[4]、なおかつ、より優れたパフォーマンスを発揮し、大規模なプロジェクト用途にも耐え得る特徴を備え、セキュリティ面でもより優れた言語[5]として、設計された。

Dart – Wikipedia

Webアプリケーションの大規模化により

標準でクラス/モジュール機能を持たないJavaScriptでは限界が見え始めた当時、

クラスやモジュールに関する機能などを加えた、

JavaScriptの代替となるプログラミング言語が多く登場しました(TypeScript、CoffeeScriptなど)。

これらをまとめて「AltJS」と呼んだりするそうです😳

Dartもその一種なわけなんですね〜😳

Google先生の挑戦!

Googleは当初、

google先生

ChromeブラウザにDartVM(仮想機械)を入れちゃうよ!

google先生

Dart言語をサポートしないウェブブラウザのために、DartプログラムをECMAScript 3に必要に応じて変換するクロスコンパイラを提供しちゃうよ!

と告知。

そして2012年、Dartの開発ツールの中に

Dartium”という

Dartのソースコードを直接動かすことが出来るDartVM(仮想機械)

が搭載されたChromiumが公開され、Google先生は猛プッシュ😤

参考:米Google、JavaScript代替目指す「Dart」をChromeに統合した「Dartium」を公開 | OSDN Magazine

Googleはこのとき、他のブラウザがこれに追従してくれるという期待をしていました・・・

しかし、人気は低迷…

Google先生の思惑に反して、

そう簡単には行かなかったようです・・・😥

以降、思うようにDartの普及が進まず

2015年、GoogleはChromeブラウザへのDartVMの組み込みを断念・・・😭

他のAltJSのように、DartをJavaScriptへコンパイルして使用する道へ進みます。

2017年、「DartはGoogleにおいて重要な言語」だとしながらも、

競合するTypeScriptがGoogle社内の標準プログラミング言語言語として承認・・・😭

2018年には、「最も学ぶ価値のないプログラミング言語」堂々の一位を獲得・・・😭

参考:Worst Programming Languages to Learn in 2018

うっきー

Dartフルボッコじゃん

このように不遇な状態が2018年まで続きます😭

Dart、復活!!

そして2018年2月。

初期のDartを改良して、強力な型システムなどの言語機能の強化が行われた

”Dart2”

が発表されます😝✨

また、同年12月、Flutterの製品版リリースを発表✨

以降は急速に世界中の開発者の注目を集めてきました😳

なんでGoogleは”Dart”をFlutterの開発言語に採用したの?

Flutter公式の説明を抜粋します。

Flutter used four primary dimensions for evaluation, and considered the needs of framework authors, developers, and end users. We found some languages met some requirements, but Dart scored highly on all of our evaluation dimensions and met all our requirements and criteria.

(訳:Flutterは4つの主要な要素を評価に使用し、フレームワークの作成者、開発者、およびエンドユーザーのニーズを考慮しました。一部の言語はいくつかの要件を満たしていましたが、Dartはすべての評価次元で高いスコアを示し、すべての要件と基準を満たしました。)

FAQ-Flutter

案の段階では、もちろんですがいろいろな言語を評価していたようですね😳

FlutterがDartを選んだ理由として、大きな2つの理由は

  • 型付け言語で形状変更とステートフルホットリロードを可能にするJITベースの高速開発サイクル
  • 効率的なARMコードを出力するAOTコンパイラ本番環境の展開の高速起動と予測可能なパフォーマンス。
  • 開発者の生産性が高くなること。開発者がiOSとAndroidの両方に同じコードベースでアプリを作成できるようにすることで、個別のOSに特化したエンジニアを雇う必要がないですよね。Flutterフレームワーク自体の大部分を記述できるDartを採用すれば、Flutterのほぼすべてをカスタマイズできる!コスパよし!
  • オブジェクト指向であること。Dartの文法は、世界中で使われている”Java”と似ています。技術者の大多数に親しみやすい言語であることも重要です。Flutterは「オブジェクト指向でない言語を使うのは、現代で車輪を開発するのと同じだ!」とまで言っています😝w
  • 高パフォーマンス。Flutterの高速で滑らかなユーザーエクスペリエンスを実現するには、フレームの欠落の原因となる定期的な一時停止なしに、高いパフォーマンスと予測可能なパフォーマンスの両方を提供するDartが最適😤
  • 高速な割り当て。Flutterフレームワークは、基礎となるメモリアロケーターに大きく依存する機能スタイルのフローを使用して、有効期間が短い小さな割り当てを効率的に処理します。このスタイルは、このプロパティを持つ言語で開発されたものであり、この機能を持つDartは最適😝

また、DartをFlutterで使用できるように改善するため、

積極的にリソースを投資しているDartコミュニティと緊密に連携する機会がある、

というのも理由になっているそうです😳

…というのが表向きの理由としてありますが、エンジニアの中には

いままでDartが不遇だったから、Googleはリベンジとして採用したんじゃないの?

という声も上がっています😝w

これについての真偽は不明…👀

今回はここまで!

さ、今回もいかがだったでしょうか。

英語のリソースを読み漁って調べたのですが(Google翻訳最高)、

言語の歴史を調べることなんて今まで無かったので、色々と面白い発見ができました😝w

また、先ほど紹介したDartのメリットの他にも、

Dartの記法として便利なものもたくさんあります✨

これについては、これからFlutter開発記事を発信していく中で少しずつやっていこうと思っています😝

次回はこちら↓