---
title: "Dartとは？Flutterとの関係・将来性と開発会社を選ぶ5つの確認点【Dart 3.13】"
url: "https://www.issoh.co.jp/column/details/2393/"
published: 2024-06-11
updated: 2026-10-26
categories: ["アプリ"]
publisher: "株式会社一創"
---

# 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](https://blog.chromium.org/2011/10/dart-language-for-structured.html)で、Webアプリを作るためのクラスベースの言語としてDartの早期プレビューを公開しました。2013年11月14日のDart 1.0の時点では、Dart VMを組み込んだ開発用のChromium「Dartium」と、DartをJavaScriptに変換する dart2js を揃え、ブラウザでDartを直接動かす方向を見据えていました。

この構想は2015年に止まります。[2015年3月25日のDart公式発表](https://news.dartlang.org/2015/03/dart-for-entire-web.html)は「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](https://dart.dev/blog/announcing-dart-2-stable-and-the-dart-web-platform)で型システムが健全（sound）になり、型の誤りを解析とコンパイルの段階で検出できるようになりました。同じ年の12月4日にFlutter 1.0が出て、Dartの主な使い道はモバイルアプリへ移ります。2023年5月10日の[Dart 3](https://dart.dev/blog/announcing-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診断](/tech/details/16729/)で手順を追っています。

## 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](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md)によると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の違いと選び方](/tech/details/3956/)、SwiftやKotlinを含めた言語の分かれ目は[アプリ開発の言語選定｜Swift・Kotlin・Dartの分岐条件](/tech/details/16714/)で扱っています。

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

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

Dartの将来性はFlutterの将来性とほぼ同じです。Flutter側の指標（国内の案件数、React Nativeとの比較、描画基盤への投資）は[Flutterの将来性を数値で判断する](/tech/details/16721/)にまとめたので、ここでは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までの修正](/tech/details/16894/)で追っています。

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

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

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

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

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

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

「GoogleのOSであるFuchsiaでDartが主要言語になるから安泰」という説明も定番です。しかしFlutter 3.47の[サポート対象プラットフォーム表](https://docs.flutter.dev/reference/supported-platforms)に並ぶのは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バックエンドの採用判断](/tech/details/9360/)で扱っています。

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をプロジェクト単位で固定する運用](/tech/details/16731/)のような具体的な答えが返ってくる会社は運用に慣れています。

### 対応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との比較と選び方](/tech/details/7039/)と[Riverpodとは？Flutterの状態管理をRiverpod 3系で始める導入ガイド](/tech/details/9959/)にあります。「案件ごとに違います」で終わり理由が出てこない会社は、設計の方針を持っていない可能性が高いです。

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

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

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

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

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

## よくある質問

### Dartの読み方と意味は？

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

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

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

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

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

### 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の範囲」を提案依頼書に書いておくと、経験のある会社とそうでない会社の回答がはっきり分かれます。

## 関連記事

- [Flutterの将来性を数値で判断する｜リリース実績・国内案件数・競合の現在地【2026年8月時点】](/tech/details/16721/)
- [FlutterとReact Nativeの違いと選び方｜Flutterとは何かから2026年の判断基準まで](/tech/details/3956/)
- [アプリ開発の言語選定｜Swift・Kotlin・Dartの分岐条件を実装視点で解説](/tech/details/16714/)
- [Serverpodとは？4.0で変わった始め方とFlutterバックエンドの採用判断【2026年10月時点】](/tech/details/9360/)
- [FlutterFlowとは？料金プラン・日本語対応・7.0以降の新機能を公式情報で整理【2026年10月時点】](/tech/details/9505/)

---

出典: [Dartとは？Flutterとの関係・将来性と開発会社を選ぶ5つの確認点【Dart 3.13】](<https://www.issoh.co.jp/column/details/2393/>)（株式会社一創）
