プログラミング言語

Dart

Google / 2011年登場

Google 製のクライアント最適化言語。Flutter の言語として、1 つのコードから iOS/Android/Web/デスクトップ アプリを作れる。

3つの要点
TL;DR
  1. Google 製でクライアント最適化された言語。
  2. Flutter でマルチプラットフォーム UI を一括開発。
  3. クロスプラットフォームアプリなら Dart + Flutter。

基本情報

仕様と特徴

Dart のロゴ
製品・技術の概要DartGoogle 製のクライアント最適化言語。Flutter の言語として、1 つのコードから iOS/Android/Web/デスクトップ アプリを作れる。
型付け
静的強い型付けnull 安全)
実行方式
AOT / JIT コンパイル+ JS)
パラダイム
オブジェクト指向
登場
2011年Google
この言語の強み
Flutter で iOS/Android/Web/Desktop を一括null 安全・ホットリロードで開発が速い
活躍する領域
モバイルアプリFlutter)クロスプラットフォーム UI / Web / デスクトップ(Flutter)

選定ガイド

選定ポイント

採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。

採用に向く条件

選ぶ理由

  1. Flutter で iOS/Android/Web/Desktop を一括
  2. null 安全・ホットリロードで開発が速い
  3. AOT で高速なネイティブ実行

事前に確認する条件

考慮すべき点

  1. ほぼ Flutter 専用に近い
  2. Flutter 外のエコシステムは小さい
  3. Web 単体では JS/TS が優勢

向いている用途

こんな用途に向く

モバイルアプリ(Flutter)クロスプラットフォーム UIWeb / デスクトップ(Flutter)

詳しい解説

もっと詳しく

どんな言語か

Dart は Google が 2011 年に公開した、クライアント開発に最適化された言語です。当初は JavaScript の代替を狙っていましたが、現在は UI フレームワーク Flutter の公式言語として位置づけが定まりました。文法は Java や JavaScript の経験者になじみやすく、静的型付けを基本とします。

1 つのコードで全プラットフォーム

Flutter と組み合わせると、1 つの Dart コードベースから iOS・Android・Web・デスクトップ向けアプリを生成できます。UI を「ウィジェットのツリー」として宣言的に記述し、プラットフォームごとに書き分ける手間を大きく減らせます。

横にスクロール

Dart ソースを解析して Kernel 中間表現へ変換し、開発時は JIT とホットリロード、本番は AOT と Flutter Engine で実行する経路、および Isolate 間のメッセージ通信
Dart は共通の Kernel 中間表現から、開発時は JIT と状態を保つホットリロード、本番は対象別 AOT へ進みます。重い計算は独立メモリの Isolate へ渡し、画面側のイベント処理を止めないようにします。

仕組み・特徴

  • JIT と AOT の二段構え: 開発中は JIT でホットリロード(変更を即座に反映)でき、本番では AOT でネイティブ機械語にコンパイルして高速に動く。この両立が開発体験の良さを支える。
  • null 安全: 型に ? が付くかで null 許容を区別し、null 由来のクラッシュをコンパイル時に防ぐ。
String name = 'Tech';   // null にできない
String? note;           // null を許容(? が必須)
print(note?.length);    // note が null ならアクセスしない
  • 並行モデル(Isolate): スレッドでメモリを共有せず、独立した Isolate がメッセージを送り合う方式で、データ競合を避ける。
  • UI 描画: Flutter は OS の部品を使わず自前で描画するため、プラットフォーム間で見た目が揃いやすい。

得意・不得意

  • 得意: モバイルを中心としたマルチプラットフォームのアプリ開発。ホットリロードによる素早い試行錯誤。
  • 不得意: Flutter 以外の用途。サーバーサイドやデータ処理のエコシステムは限定的。

他のクロスプラットフォーム手段との違い

観点Dart / FlutterReact Nativeネイティブ個別
UI 描画自前描画で統一OS 部品をブリッジ各 OS 純正
コード共有1 コードで多 OS多くを共有共有しにくい
言語DartJavaScript/TSSwift / Kotlin 等
強み見た目の統一・高速描画Web 資産・普及最良の適合性

つまずきやすいところ

null 安全とウィジェット指向に慣れる

型に ? が付くか否かで扱いが変わるため、null 安全の規則に慣れるまでコンパイルエラーに悩みがちです。また UI を状態から宣言的に組み立てるウィジェット指向は、命令的な UI に慣れた人には発想の転換が要ります。実質的に Flutter とほぼ一体で採用されます。

総じて Dart は、JIT/AOT の二段構えと null 安全を備え、Flutter と一体でマルチプラットフォームのアプリ開発を支える言語です。

言語選定

Dartを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

モバイルアプリ(Flutter)

比較で見る軸

型付け: 静的・強い型付け(null 安全) / 実行方式: AOT / JIT コンパイル(+ JS) / パラダイム: オブジェクト指向

導入後に効く点

null 安全・ホットリロードで開発が速い

先に潰すリスク

ほぼ Flutter 専用に近い

数字・仕様の読み方
型付け
静的・強い型付け(null 安全)
実行方式
AOT / JIT コンパイル(+ JS)
パラダイム
オブジェクト指向
登場
2011年
Google

判断チェックリスト

  • 自社の用途が「モバイルアプリ(Flutter) / クロスプラットフォーム UI」に近いか確認する。
  • 強みである「Flutter で iOS/Android/Web/Desktop を一括」が本当に評価軸になるか確認する。
  • 注意点の「ほぼ Flutter 専用に近い」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

モバイルアプリ(Flutter)クロスプラットフォーム UIWeb / デスクトップ(Flutter)

最初の一歩

Hello, World!

void main() {
  print("Hello, World!");
}
公式ドキュメント