これ1本でスマホアプリ(iOS/Android)もデスクトップアプリもWebアプリも”いっぺんに”作れる、今最も注目のアプリ開発ツールである「Flutter(フラッター)」。
この「Flutter」のプログラミングは、「Dart(ダート)」という言語を使って行います。
実はこの「Dart」というプログラミング言語、あまり有名ではありません。
しかし、その歴史を紐解いておくと、なかなか面白いプログラミング言語であることがわかります。
(動画でご覧になりたい方はこちらから)
もくじ
Googleによって2011年に誕生
実は、「Flutter」という開発ツールを作ったのもGoogleであれば、Flutterアプリを作るためのプログラミング言語である「Dart」を作ったのもGoogleなんです。
では、なぜGoogleはこの「Dart」というプログラミング言語を作ったのでしょうか。
元々はJavascriptを置き換える目的で開発されたWebアプリ開発向け言語だった
実はこの「Dart」というプログラミング言語は、
- Flutterアプリの公式開発として作られたものではなく、
- Webアプリを作るためのデファクトスタンダード的な地位にある超人気言語「Javascript」を置き換える目的で開発された
- Webアプリ向けの開発言語
だったんです。
Dart(ダートもしくはダーツ。当初は Dash と呼ばれていた)はGoogleによって開発されたウェブ向けのプログラミング言語である。2011年10月10日 – 12日に開催された デンマークのオーフスで開催された「GOTOカンファレンス」で公開された。この言語は、ウェブブラウザ組み込みのスクリプト言語であるJavaScriptの代替となることを目的に作られた。
〜(中略)〜
Dart言語はJavaScript言語にある解決できない言語上の問題点を解決し、なおかつ、より優れたパフォーマンスを発揮し、大規模なプロジェクト用途にも耐え得る特徴を備え、セキュリティ面でもより優れた言語として、設計された。
Javascriptは超人気言語でありながらも言語上の問題点があるので、それを解決するために送り込むという、壮大な野望のもとに開発されたプログラミング言語だったんですね。
ところが、Javascriptというプログラミング言語への限界を色んな人が感じながらも、アプリというのは安全性とかも考慮しないといけないので、新しい言語に乗り換える動きというのが残念ながらなかなか起きませんでした。
あのGoogle先生という巨人をもってしても、Javascriptを置き換えることができず、長い間日の目を見ることができなかったという、苦難の歴史を持っているプログラミング言語だったのです。
Flutterアプリの公式開発言語に採用されたことで、マルチプラットフォーム対応言語としてネオ進化
ところが、その苦難の歴史も「Flutter」の登場によって一変します。
「Flutter」の公式開発言語に採用されたことで、元々Webアプリ開発向けの言語だったものが、マルチプラットフォーム対応言語として「ネオ進化」を果たしたんです。
なんとまさかの復活を果たしたわけです。すごい展開ですよね。
Dart is a client-optimized language for fast apps on any platform
では、こんなシンデレラストーリー的な展開を果たした「Dart」というプログラミング言語、その中身は一体どうなっているのでしょうか。
世界で最も使われているプログラミング言語「Java(ジャバ)」と文法がそっくり
そして、この「Dart」という得体の知れないプログラミング言語ですが、その中身は、
世界で最も使われているプログラミング言語である「Java(ジャバ)」と文法がそっくり
なんです。
世界で最も使われている言語であるJavaと文法を似せることによって、幅広い人にDartに親しんでもらおうという意図でわざとそうしているのではないかと思われます。この発想がすごいですね。
では、Javaと文法が全く一緒なのかと言うとそうではありません。
Javaというプログラミング言語は、世界で最も使われていますが、歴史の古い言語であるため、Javascriptと同様に言語上の問題点が色々あります。
ですから、「Dart」はそういう古い問題点を解消して、Javaとそっくりでありながらも、Javaをより進化させている。
そのため、一見得体の知れない言語ですが、初心者の人でも非常に習得しやすいプログラミング言語なっているんですね。
Flutterの人気が今急上昇中の中、ちょっと前まで得体の知れない存在だった「Dart」というプログラミング言語も、今後爆発的に普及してくる可能性があると考えられています。
GoogleのFlutterは、クロスプラットフォーム開発に対応した UIツールキット。登場してからまだ2年しか経っていないが、あっという間に多くのデベロッパーがこぞって採用するフレームワークとなった。ただし、これまでは「クロスプラットフォーム」の意味は、AndroidとiOSにのみ限定されていた。昨年末になってGoogleは、Flutterをモバイル用だけでなくウェブにも拡張すると発表した。そして米国時間5月7日に開催されたGoogle I/Oで、その言葉通り、ウェブ用Flutterのテクニカルプレビュー版を発表した。
なぜGoogleはFlutterの公式開発言語に「Dart」を採用したのか
最後に、ではなぜGoogle先生は、今回「Flutter」の公式開発言語に、雨後の竹の子のように存在するプログラミング言語の中から、この得体の知れない「Dart」をわざわざ採用したのでしょうか。
その答えを、Google先生はFlutterの本家本元公式リファレンスの中で述べています。
Why did Flutter choose to use Dart?
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.
Dart runtimes and compilers support the combination of two critical features for Flutter: a JIT-based fast development cycle that allows for shape changing and stateful hot reloads in a language with types, plus an Ahead-of-Time compiler that emits efficient ARM code for fast startup and predictable performance of production deployments.
In addition, we have the opportunity to work closely with the Dart community, which is actively investing resources in improving Dart for use in Flutter. For example, when we adopted Dart, the language did not have an ahead-of-time toolchain for producing native binaries, which is instrumental in achieving predictable, high performance, but now the language does because the Dart team built it for Flutter. Similarly, the Dart VM has previously been optimized for throughput but the team is now optimizing the VM for latency, which is more important for Flutter’s workload.
この中で、色々理由が述べられていますが、一言でいうと
「Flutterでやりたい機能・パフォーマンスを実現するためには、Dartが一番ふさわしいと思いました」
というようなことが書かれています(デフォルメしすぎですいませんm(_ _)m)。
表向きの理由は確かにそうだと思います。
ところが、裏の理由としてはやっぱり長い苦難の歴史を経てきた我が子「Dart」を復活させたいという想いがあったのではないかと。
元々、Javascriptを置き換えるという壮大な野望を持って産み落とした言語ですから、今回「Flutter」というマルチプラットフォームアプリ開発ツールと絡めることによって、手塩にかけて育てた我が子を復活させたいという想いは、ゼロではないんじゃないかなと思うんですね。
こういう「感動的な」復活と再生の歴史を紐解いていくと、何とも得体の知れない言語であった「Dart」にも少し親しみが湧いてくるような気がしませんか。