アプリ

Dartとは?Flutterとの関係・将来性と開発会社を選ぶ5つの確認点【Dart 3.13】

Dartとは?Flutterとの関係・将来性と開発会社を選ぶ5つの確認点【Dart 3.13】

Dart(ダート)はGoogleが開発しているプログラミング言語で、いまはほぼFlutterのための言語として使われています。最初はWebブラウザで動かす言語として発表され、ChromeにDartの実行環境を載せる構想を2015年に取り下げたあと、Flutterの言語として定着しました。この記事では、その経緯と現在の言語機能をコード付きで確認し、「将来性はあるのか」「Dartが書ける開発会社をどう見極めるのか」に答えます。版番号と日付は2026年10月26日時点の公式配信データで確認したものです。

まとめ:Dartの現在地と発注判断の要点

  • 安定版はDart 3.13.7(2026年10月22日)。Flutter 3.47.8(10月23日)に同梱されて配られます。
  • DartはFlutterと一体で動いています。Flutterの安定版は3か月前後の間隔で出ており、Dartのマイナー版も同じ歩調で上がります。
  • 「Web開発ならAngularDart」「Fuchsiaの主要言語だから安泰」という説明は古い情報です。AngularDartは2021年10月を最後に更新が止まってアーカイブされ、FuchsiaはFlutterのサポート対象プラットフォーム表にありません。
  • 言語の更新は既存コードを壊すことがあります。Dart 3.13では、SDK制約の下限を3.13に上げると、引数に付けていた final がエラーになります。発注先には「SDKの更新を保守契約に含むか」を最初に聞いてください。
  • 「Dart開発会社」は実質的にFlutter開発会社です。社名の一覧を見比べる前に、本記事の5つの確認点を提案依頼書に書いておくと、経験の差が回答に出ます。

以下、経緯、言語機能、将来性、発注の順に根拠を示します。

Dartの成り立ち:ブラウザ向け構想からFlutterへの展開

Dartは、最初からモバイルアプリの言語だったわけではありません。2011年10月10日、GoogleはChromium Blogで、Webアプリを作るためのクラスベースの言語としてDartの早期プレビューを公開しました。2013年11月14日のDart 1.0の時点では、Dart VMを組み込んだ開発用のChromium「Dartium」と、DartをJavaScriptに変換する dart2js を揃え、ブラウザでDartを直接動かす方向を見据えていました。

この構想は2015年に止まります。2015年3月25日のDart公式発表は「Dart VMをChromeに組み込まないことを決めた」と書き、Web向けの取り組みをJavaScriptへのコンパイルに絞りました。ブラウザにDartの実行環境を載せる構想は、ここで終わりました。

時期 出来事
2011年10月 早期プレビューを公開
2013年11月 Dart 1.0(Dartium・dart2js)
2014年6月 言語仕様がECMA-408(初版)に
2015年3月 Dart VMのChrome統合を断念
2018年8月 Dart 2(健全な型システム)
2018年12月 Flutter 1.0
2021年3月 Dart 2.12でnull安全が既定に(Flutter 2.0)
2023年5月 Dart 3(null安全を100%必須に)

転機は2018年です。8月7日のDart 2で型システムが健全(sound)になり、型の誤りを解析とコンパイルの段階で検出できるようになりました。同じ年の12月4日にFlutter 1.0が出て、Dartの主な使い道はモバイルアプリへ移ります。2023年5月10日のDart 3はnull安全を例外なく必須にし、レコード、パターン、クラス修飾子を加えました。今のDartの書き方は、ほぼこのDart 3で決まっています。

Dartの仕組み:JITとAOTの2通りにコンパイルする言語

Dartの性格を決めているのは、同じコードを2通りにコンパイルできる点です。開発中はJIT(実行時コンパイル)で動かすので、Flutterのホットリロードで画面の修正がすぐ反映されます。リリース時はAOT(事前コンパイル)で機械語にするので、起動時にコンパイル待ちが起きません。Webへは JavaScript か WebAssembly に変換して出力します。

サーバーやCLIツールなら dart compile exe bin/main.dart で単一の実行ファイルを作れます。手元のDart 3.13.5(macOS x64)でも、下の章のコードをこのコマンドで実行ファイルにし、そのまま動くことを確かめました。

入手経路はFlutter SDKです。Flutter SDKにはDart SDKが含まれているので、Flutterを入れればDartも入ります。Dartを単体で入れるのは、サーバーやCLIだけをDartで書く場合です。環境の作り方はFlutterの環境構築|Windows・macOS別のSDK導入とflutter doctor診断で手順を追っています。

Dart 3の書き方:null安全・レコード・パターンをコードで確認

Dart 3以降のコードは、JavaやTypeScriptを書いたことがある人なら読めます。違いが目立つのは、null を許す型に ? を付ける null安全と、2023年のDart 3で入ったレコード・パターン・sealed クラスです。次のコードはDart 3.13.5でそのまま実行できます。

sealed class Shape {}

class Circle extends Shape {
  Circle(this.radius);
  final double radius;
}

class Rect extends Shape {
  Rect(this.width, this.height);
  final double width, height;
}

// sealed なので、Shape の全サブクラスを網羅しないとコンパイルエラーになる
double area(Shape s) => switch (s) {
      Circle(:final radius) => 3.14 * radius * radius,
      Rect(:final width, :final height) => width * height,
    };

// レコードで2つの値を返し、パターンで分解する
(String, int) parse(String line) {
  final [name, age] = line.split(',');
  return (name, int.parse(age));
}

void main() {
  String? nickname; // String? は文字列と null を持てる
  print(nickname?.length ?? 0);

  final (name, age) = parse('Sato,34');
  print('$name $age');

  print(area(Circle(2)));
  print(area(Rect(3, 4)));
}

出力は 0、Sato 34、12.56、12.0 の4行です。switch 式が Shape のサブクラスを全部扱っているかをコンパイラが確かめるので、図形を1種類足したときに対応漏れがビルドの段階で見つかります。アプリ開発でいえば、画面の状態(読み込み中・成功・失敗)を sealed クラスで表すと、失敗時の表示を書き忘れる事故を防げます。

Dart 3.13の変更:primary constructorsと既存コードへの影響

2026年8月12日に出たDart 3.13では、SDKのCHANGELOGによるとprimary constructorsが入りました。クラス名の後ろにフィールドとコンストラクタをまとめて書けます。使うにはpubspec.yamlのSDK制約の下限を3.13以上(sdk: ^3.13.0)にします。

// 以下は新旧構文の比較です。2つのPointは別ファイルで確認してください。
// 後の例には、構文変更に加えてxの検証用assertも追加しています。
// 3.12までの書き方
class Point {
  final int x;
  final int y;
  Point(this.x, this.y);
}

// 3.13からの書き方(初期化子リストはクラス本体の this : で書く)
class Point(final int x, final int y) {
  this : assert(x >= 0);
}

// クラス名を繰り返さずにコンストラクタを宣言できる
class User {
  final String name;
  new(this.name);
  new guest() : name = 'guest';
}

発注側にとって大事なのは、同じリリースに入った破壊的変更のほうです。3.13からは、フィールドを宣言しない普通の引数に final や var を付けられなくなりました。これらの語をprimary constructorsの宣言用に予約したためです。

void greet(final String name) {
  print(name);
}
// sdk: ^3.13.0 で dart analyze を実行した結果
// error - Can't have modifier 'final' here. Try removing 'final'. - extraneous_modifier

同じファイルを sdk: ^3.12.0 のプロジェクトに置くと、Dart 3.13.5でもエラーにならずに動きます。この引数修飾子の変更は言語バージョンで制御されるため、SDKだけを更新しても適用されず、SDK制約の下限を3.13に上げると適用されます。ただし、SDK更新には言語バージョンで保護されないAPIや実行時動作の変更もあります。3.13では、NetworkInterface.addresses の戻り値が List<InterfaceAddress> に変わりました(NetworkInterface を自分で実装しているコードが影響を受けます)。新しい言語機能やそれを要求するパッケージを使う時点で、既存コードの書き換えが必要になることがある、ということです。この作業が保守契約に入っているかどうかが、後の章で最初に確認する項目です。

FlutterとDartの関係:先に決めるのはFlutterの採否

FlutterはDartで書かれたUIフレームワークで、DartはFlutterのアプリを書くための言語です。ReactとJavaScriptの関係に似ていますが、違いが1つあります。JavaScriptはReact以外でも広く使われます。DartにもWeb・サーバー・CLIの用途がありますが、Flutterアプリの発注ではFlutterの採否を先に検討します。

そのため順序は一方通行です。Flutterを使うと決めた結果としてDartを書くのであって、Dartを使いたいからFlutterを選ぶことはまず起きません。技術選定で最初に決めるのはFlutterを使うかどうかで、比較の相手はReact NativeやKotlin Multiplatform、ネイティブ2本立てです。React Nativeとの比べ方はFlutterとReact Nativeの違いと選び方、SwiftやKotlinを含めた言語の分かれ目はアプリ開発の言語選定|Swift・Kotlin・Dartの分岐条件で扱っています。

学習や採用でも同じです。Flutterアプリの開発を目指すなら、小さなアプリを作りながらDartの文法を学ぶ進め方を勧めます。求人票に「Dart経験者」とある場合も、Flutterアプリ、Web、サーバーのどの開発経験を求めているかを確認してください。

Dartの将来性を判断する材料

Dartの将来性はFlutterの将来性とほぼ同じです。Flutter側の指標(国内の案件数、React Nativeとの比較、描画基盤への投資)はFlutterの将来性を数値で判断するにまとめたので、ここではDartの言語そのものに関わる材料に絞ります。

リリース実績:Flutter安定版とDartの更新周期

Flutterの配信データで各系列の最初の安定版とそこに同梱されたDartを並べると、3か月前後の間隔が2年以上崩れていません。

Flutter 公開日 同梱Dart
3.24.0 2024-08-06 3.5.0
3.27.0 2024-12-11 3.6.0
3.29.0 2025-02-12 3.7.0
3.32.0 2025-05-20 3.8.0
3.35.0 2025-08-14 3.9.0
3.38.0 2025-11-12 3.10.0
3.41.0 2026-02-11 3.11.0
3.44.0 2026-05-18 3.12.0
3.47.0 2026-08-12 3.13.0

各系列はその後もパッチが重ねられ、3.47系は10月23日の3.47.8が最新です。ベータ版はDart 3.14.0-315.3.beta とFlutter 3.50.0-0.2.pre まで進んでいます。版ごとの変更はFlutter 3.47とは?material_ui移行・iOS 15と3.47.7までの修正で追っています。

マクロ開発の中止:2025年1月の方針転換

2025年1月29日、Dartチームは公式ブログ「An update on Dart macros & data serialization」でマクロ機能の開発中止を発表しました。意味解析を伴うマクロがコンパイルを遅くし、ホットリロードの速さを保てなかったことが理由です。代わりにaugmentationsの提供、build_runnerの高速化、データ処理向けの個別の言語機能に力を入れるとしています。3.13のprimary constructorsは、この「個別の言語機能で冗長さを減らす」路線の成果にあたります。

将来性の減点材料ではありますが、致命傷ではありません。JSONの変換やデータクラスは今もbuild_runnerによるコード生成に頼っており、モデルクラスが増えるほどビルドの待ち時間が伸びる構造が続く、という意味です。コード生成を使う代表例はFreezed(Flutter)とは?データクラスとUnion型の生成で説明しています。

AngularDartのアーカイブとFlutter以外のWeb開発

「DartはWebでも使える、AngularDartがある」と書く記事は今も残っていますが、angulardart/angularリポジトリはアーカイブ済みで、最後の更新は2021年10月7日です。AngularDartは終わりましたが、DartのWeb用途そのものは続いています。Dart公式のWebのページは、FlutterのWebビルドのほか、JasprによるHTMLベースのサイトや、ブラウザAPIを直接使うWebアプリを挙げています。ただし、「AngularDartで業務Webを組む」という古い記事の前提は、今は成り立ちません。

Fuchsia前提論とFlutterの公式サポート対象

「GoogleのOSであるFuchsiaでDartが主要言語になるから安泰」という説明も定番です。しかしFlutter 3.47のサポート対象プラットフォーム表に並ぶのはAndroid、iOS、Windows、macOS、Linux(Debian・Ubuntu)、Webで、Fuchsiaはありません。将来性は、構想ではなく出荷されているアプリと配信の実績で測るべきです。

Flutter以外でDartが使われる領域

サーバーサイド:ServerpodとDart Frog

アプリとサーバーをDartで書く選択肢のうち、ここではServerpodとDart Frogを取り上げます。Serverpodは2026年9月に4.0が公開されました。ORM、認証、リアルタイム通信まで含む作り込んだ構成で、サーバーのコードからFlutter用のクライアントを生成します。詳しくはServerpodとは?4.0で変わった始め方とFlutterバックエンドの採用判断で扱っています。

Dart Frogはdart-frog-devのGitHubリポジトリで公開されています。ルーティングとミドルウェアだけの薄い構成で、データベースまわりを自分で選びたいときに向きます。どちらを選ぶ場合も、サーバー側の保守を引き継げる担当者がいるかが採用の条件になります。この点は発注の章で扱います。

CLIツール:ビルド補助と社内ツール

Dartは単一の実行ファイルを出力できるので、Flutterプロジェクトのビルド補助やコード生成のCLIをDartで書く現場は珍しくありません。Flutterの開発者向けツール自体もDartで書かれています。アプリ担当者が慣れた言語で社内ツールまで書ける、という利点はありますが、それだけを理由にDartを選ぶ場面はほぼありません。

Dart/Flutterの開発会社を選ぶときに確認する5点

「dart 開発会社」で検索すると、マッチングサイトが選んだ社名の一覧が並びます。「Flutterの実績あり」という表記だけでは、担当範囲や保守体制の差までは判断できません。差が出るのは、次の5点を聞いたときの答え方です。

SDK更新の保守契約への包含範囲

最初に聞く質問です。Flutterの安定版は3か月前後ごとに出て、Dartも一緒に上がります。前の章のとおり、SDK制約を上げると既存コードが壊れることがあり、使っているパッケージが新しいSDKを要求し始めると上げざるを得なくなります。仮に年4回の更新が続けば、2年間で約8系列分の変更が蓄積し、改修前に互換性の確認や移行対応が必要になる場合があります。見積書に「Flutter SDK更新対応」の記載がない場合は、保守仕様書も確認し、更新作業・回帰テスト・再申請の費用が含まれるかを書面で確かめてください。複数案件でSDKの版をどう固定しているかを聞くのも有効で、FVMでFlutter SDKをプロジェクト単位で固定する運用のような具体的な答えが返ってくる会社は運用に慣れています。

対応OSのバージョン範囲と契約上の明記

Flutter 3.47がサポートする範囲は次のとおりです。3.47でiOSの下限が13から15へ、macOSの下限が10.15から12へ上がりました。

プラットフォーム サポート範囲
Android APIレベル 24〜37
iOS 15〜27
Windows 10、11
macOS 12(Monterey)〜27
Linux(Debian) 10〜13
Linux(Ubuntu) 20.04 LTS〜24.04 LTS
Web(Chrome・Firefox・Edge) 最新2バージョン
Web(Safari) 15.6以降

この範囲を即答できる会社、あるいは要件定義書に下限を書いてくる会社なら、どの端末まで動かすかを契約前に固定できます。「最新OSに対応します」としか書かない提案だと、iOS 14の端末を使う利用者がいた場合に、リリース後になって「対象外です」と言われる余地が残ります。SDK更新で対応OSの下限が上がる場合があるため、1つ目の確認点とセットで聞いてください。

状態管理の選定理由と保守方針

Flutterアプリの保守では、状態管理に加えて、UIと業務ロジックの分離、依存関係、テストの整備状況を確認してください。後から差し替えると画面をまたいだ大改修になります。Riverpod、Bloc、Providerのどれを使い、なぜそれを選んだのかを言葉で説明できるかを確かめてください。比較の材料はRiverpodと他の状態管理の違い|Provider・Bloc・GetXとの比較と選び方とRiverpodとは?Flutterの状態管理をRiverpod 3系で始める導入ガイドにあります。「案件ごとに違います」で終わり理由が出てこない会社は、設計の方針を持っていない可能性が高いです。

バックエンドのDart統一と引き継ぎ条件

将来、保守を別の会社へ移す、あるいは自社の情報システム部門で引き取る予定があり、移管先でサーバーサイドのDartを保守できる担当者を確保できない場合は、バックエンドまでDartで統一する提案は避けてください。ServerpodもDart Frogも開発は続いていますが、アプリとサーバーを一括で移管する場合は、引き継ぎ先に両方の実装領域を保守できる体制が必要です。移管の可能性があるなら、引き継ぎ候補の会社がサーバーサイドのDartを保守できるかを先に確かめるか、バックエンドは自社や候補先が普段使っている言語で組んでください。Dartでの統一が見合うのは、アプリとAPIの仕様変更が頻繁で、型を共有する利点が引き継ぎの難しさを上回る場合に限られます。

FlutterFlowの適用範囲と追加実装の必要性

複雑な業務ロジックや独自のネイティブ連携がない社内向けアプリでは、FlutterFlowも候補になります。画面数だけで判断せず、実装・利用料・保守を含む見積もりで比較してください。FlutterFlowの米ドル建て料金はFreeが0ドル、Basicが月払いで月39ドルです。年払い割引もあり、ソースコードをダウンロードできるのはBasic以上です。無料プランのまま納品されるとコードが手元に残りません。決済にはStripeなどの公式連携があります。バックグラウンド処理や独自のネイティブ機能が必要な案件では、標準機能と追加実装の範囲、実機検証の結果、コード出力後の保守方法を確認してください。料金と機能の詳細はFlutterFlowとは?料金プラン・日本語対応・7.0以降の新機能で確認できます。

当社でもFlutterでのアプリ開発を受けています。上の5点への回答を含めた進め方はFlutter / React Native開発のページで紹介しています。

よくある質問

Dartの読み方と意味は?

「ダート」と読みます。英語の dart は「投げ矢」を意味する単語で、言語名もこの綴りです。「ダーツ」と複数形で読む慣習はありません。Googleの初期構想には、本記事の成り立ちの章で触れた、ChromeにDart VMを組み込む計画もありました。2015年3月に取り下げられています。

Flutterアプリの開発費用はどう見積もればよいですか?

初期開発費だけで比べないでください。費用は、初期開発、SDK更新を含む保守、ストア関連の固定費の3つに分かれます。ストア関連は、Apple Developer Programが年額99ドル(地域により現地通貨で表示)、Google Play Consoleが登録時の1回だけ25ドルです。毎年かかるのはApple側だけです。各社の見積もりを比べるときは、画面数、外部APIとの連携数、独自のネイティブ機能の有無を提案書に書かせると、金額差の理由を追えます。規模別の金額の目安はアプリ開発の費用相場は?規模・OS・開発手法別の内訳と抑え方にまとめています。

ストアのアカウントは開発会社と発注者のどちらの名義で作るべきですか?

発注者の名義で作ってください。開発会社の名義だと、契約を終えたときにアプリの移管手続きが必要になります。テンプレートやアプリ生成サービスを使って作る場合はさらに注意が必要です。App Store Reviewガイドライン4.2.6は、そうしたアプリを「アプリのコンテンツの提供者が直接提出する場合を除き」却下すると定めています。FlutterやDartで作ること自体を制限する条項ではありませんが、制作会社のアカウントからまとめて申請する形は通りません。工程全体で発注側が決めることはアプリ開発の流れとは?企画から保守まで7工程で発注側が決めることで整理しています。

Dartの将来性はどう判断すればよいですか?

Flutterの継続性と同じものと考えて構いません。Flutterの安定版が2024年8月の3.24.0から2026年8月の3.47.0まで3か月前後の間隔で出続け、Dartもそのたびに3.5から3.13まで上がってきた実績が一番の材料です。減点材料は2025年1月のマクロ開発の中止です。Fuchsiaを根拠にした説明は、公式のサポート表に裏付けがないので採用しないでください。

Dartが使える開発会社はどう探せばよいですか?

「Dart開発会社」ではなく「Flutter開発会社」で探し、Dartの対応表記に加えて、Flutterの開発実績と担当範囲を確認してください。そのうえで、本記事の5つの確認点のうち少なくとも「SDK更新を保守契約に含むか」と「サポートするOSの範囲」を提案依頼書に書いておくと、経験のある会社とそうでない会社の回答がはっきり分かれます。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2025.02.27 コラム トラッキングビーコン(Webビーコン)とは?仕組み・用途・確認と対策を徹底解説
  2. 2026.10.27 テックブログ Brotli 脆弱性:CVE-2026-111497の影響確認とNode.js・Python・.NETの更新手順
  3. 2026.10.27 テックブログ Joshin(ジョーシン)不正アクセス:最大600万件の対象とサブスク初期パスワードの対処
  4. 2026.10.23 テックブログ Renta!はいつ再開?不正アクセスでメールアドレス等が流出したおそれ・再開時のパスワード再設定と運営側の対応
  5. 2026.07.09 テックブログ Muse Imageとは?Metaの画像生成AIの使い方・API料金(1枚0.01ドル)と日本での提供状況【2026年10月】

RELATED POSTS 関連記事

目次