MENU

Dart — Flutterを支えるGoogle製のUI向け汎用言語

Dart アイキャッチ
Dart

Dartは、2011年10月のGOTOカンファレンスでGoogleが発表したオブジェクト指向プログラミング言語です。当初は「JavaScriptを置き換える」という野心的なミッションで生まれましたが、ブラウザ側の反応は冷ややかでした。潮目が変わったのは2018年、Googleがクロスプラットフォームフレームワーク「Flutter」を本格リリースした時です。Flutterの公式言語に採用されたことで、Dartはモバイル・Web・デスクトップを横断するUI開発言語として息を吹き返しました。本記事ではDartの設計思想と、Flutterとの不可分な関係を整理します。

目次

この記事の目次

  1. Dartの言語的な特徴
  2. Googleの言語戦略とFlutter
  3. Flutter周辺で広がるDartエコシステム
  4. クロスプラットフォーム言語との比較
  5. まとめ

Dartの言語的な特徴

Dartの言語的な特徴

Dartは見た目こそJavaやC#に近い、ごく普通のクラスベース言語ですが、内部設計は意外に独特です。Dart VMはAOT(事前コンパイル)とJIT(実行時コンパイル)の両方をサポートし、開発中はホットリロードで瞬時に画面を更新でき、本番ではネイティブコードに最適化して書き出せます。この二刀流の特性が、Flutterの「保存した瞬間にUIが切り替わる」体験を支えています。

型システムは2020年のDart 2.12で健全なNull安全(sound null safety)が導入され、TypeScriptやKotlinに匹敵する安全性を備えるようになりました。async/awaitやStreamなど非同期処理のサポートも標準で組み込まれており、リアクティブなUI記述と相性の良い設計です。メソッドカスケード(..演算子)など、UIコード記述を短縮する小回りの利く構文も特徴です。

Googleの言語戦略とFlutter

Googleの言語戦略とFlutter

DartはLars BakとKasper Lundという、Googleの著名なVMエンジニアが中心となって設計しました。BakはV8 JavaScriptエンジンの主要開発者であり、Dartは「もしブラウザのスクリプト言語をゼロから設計し直したら」という思考実験の答えとして登場した経緯があります。しかし他のブラウザベンダーはDart VMの搭載に同意せず、結局DartはJavaScriptへトランスパイルされる立場に収まりました。

Dartが脚光を浴び直すのは2017年から2018年にかけてのことです。Googleが進めていたモバイルUIフレームワーク「Flutter」が、開発言語としてDartを採用し、2018年12月にバージョン1.0として正式リリースされました。ホットリロードと宣言的UI、そして単一コードベースでiOSとAndroidの両方を出せる体験は開発者を惹きつけ、Dartは「Flutterを書くための言語」として爆発的に再評価されました。

Flutter周辺で広がるDartエコシステム

Flutter周辺で広がるDartエコシステム

DartのエコシステムはFlutterと一体化しています。状態管理ライブラリだけでもRiverpod、Bloc、Provider、GetXと選択肢が豊富で、それぞれにコミュニティが形成されています。ローカルデータベースもDriftやIsar、Hiveなどモバイル向けに最適化されたDart製ライブラリが整備されており、「Flutter + Dart のみ」で完結する開発スタイルが現実的になっています。

サーバサイドDartも徐々に存在感を増してきました。Very Good Venturesの「Dart Frog」は2022年に登場した軽量サーバフレームワークで、Flutterアプリと同じ言語でバックエンドを書けることを売りにしています。コマンドラインツールやスクリプトの記述にも使われ始めており、Flutter依存からの脱却を狙う動きが少しずつ進んでいる、というのが現状です。

クロスプラットフォーム言語との比較

クロスプラットフォーム言語との比較

Dartは「Flutterの言語」という性格上、React Native(JavaScript/TypeScript)が最大の比較対象になります。React Nativeはネイティブのプラットフォーム部品をブリッジ経由で呼ぶ仕組みなのに対し、Flutterは独自のレンダリングエンジン(Skia/Impeller)で全画素を描く方式。結果としてFlutterの方がプラットフォーム間の見た目の差が小さく、アニメーション性能も安定しやすい傾向があります。

もう一つの比較対象はネイティブ(Swift/Kotlin)です。iOS/Androidで一切妥協したくないならネイティブが今でも最適解で、「2プラットフォーム同時に出したい、UIを共通化したい」ならFlutter/Dartが圧倒的に効率的、という棲み分けが定着しています。Google自身もGoogle Pay、Google Adsなど自社アプリをFlutterに移行しており、Dartへの投資は今後も継続される見込みです。

まとめ

Dartは、Webブラウザに居場所を見いだせなかった時期を経て、Flutterという最高の舞台を得た言語です。ホットリロードを軸とした開発体験と、AOT/JIT両立の独自設計は、UI開発の現場で確かな評価を獲得しました。クロスプラットフォーム開発を考えるエンジニアにとって、有力な選択肢の一つです。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次