Dart
Dartとは
Dart は Google が開発した静的型付けのオブジェクト指向言語です。単体で使われることは少なく、実際の用途はほぼ UIフレームワーク Flutter の記述言語に集中しています。
void main() {
final message = 'Hello, Dart';
print(message);
}
文法は [[JavaScript]] や [[TypeScript]] を知っていれば読める範囲です。final(再代入不可)や null 安全など、[[TypeScript]] に近い型の考え方を持っています。
2つのコンパイル方式
Dart の特徴は、開発中と本番で別のコンパイル方式を使い分ける点にあります。
| 方式 | 使う場面 | 効果 |
|---|---|---|
| JITコンパイル | 開発中 | 実行中のコードを差し替えられる(ホットリロード) |
| AOTコンパイル | リリース時 | 事前にネイティブコードへ変換し、起動と実行を速くする |
開発中は保存した瞬間に画面へ反映されるホットリロードが効き、リリース時は事前コンパイルで実行速度を確保します。UI を試行錯誤しながら組む作業と、配布物の性能要求を両立させる設計です。
クロスプラットフォーム開発での位置づけ
Flutter を使うと、iOS・Android・Web・デスクトップ向けのアプリを1つの Dart コードからビルドできます。画面はプラットフォーム標準の部品を呼ぶのではなく、Flutter 自身が描画するため、どの環境でも同じ見た目になります。
一方で、カメラや生体認証のように OS 固有の機能へ触るときは、プラットフォーム側のコードが必要になります。ここで登場するのが [Kotlin]と [Swift]です。
Dart(共通のUI・ロジック)
├─ Kotlin で書いたAndroid固有処理
└─ Swift で書いたiOS固有処理
つまり Dart だけで完結するとは限らず、共通部分を Dart、OS固有部分をネイティブ言語という分担になります。この構成を前提にすると、3言語の役割分担が理解しやすくなります。
Web向けビルドとの関係
Dart は Web 向けにビルドすると JavaScript へ変換されます。つまりブラウザ上では最終的に [[JavaScript]] として動くため、Web を対象に含める場合は生成物のサイズや初期表示の速さが課題になります。モバイル向けの AOT コンパイルとは配布物の性質が変わる点は押さえておきたいところです。
同じコードから複数のプラットフォーム向けに出力できる一方で、得意なのはUIの共通化であり、OS 固有の機能やプラットフォームごとの作法まで消えるわけではありません。
初学者向けポイント
- 言語単体で学ぶより、Flutter のチュートリアルを進めながら文法を覚えるほうが早いです
- null 安全が標準で有効なので、値が無い可能性は型(
String?)で表現します - 画面サイズごとの出し分けは Flutter 側の仕組みで書きますが、考え方は [[レスポンシブデザイン]] と共通です
- パッケージ管理は
pubで、依存はpubspec.yamlに書きます
関連技術とのつながり
- [[JavaScript]] — 文法の雰囲気が近く、読み書きの入口になる
- [[TypeScript]] — 静的型付けと null 安全という設計方針を共有する
- [[Kotlin]] — Flutter アプリの Android 固有処理を担当する
- [[Swift]] — Flutter アプリの iOS 固有処理を担当する
- [[レスポンシブデザイン]] — 画面サイズへの追従という課題は Web と共通
- [[Flutter]] — Dart の実質的な用途。ウィジェットの入れ子で画面を組み立てる
Q: Dartの主な用途はどれ?
- [ ] サーバーのログ解析
- [x] Flutterによるアプリ開発の記述言語
- [ ] データベースの問い合わせ
解説: Dart の実用上の用途は、UIフレームワーク Flutter の記述言語にほぼ集中しています。
Q: Dartが開発中に使うコンパイル方式と、その利点の組み合わせはどれ?
- [x] JITコンパイル ― ホットリロードで即座に画面へ反映できる
- [ ] AOTコンパイル ― 実行中にコードを差し替えられる
- [ ] トランスパイル ― 型チェックを省略できる
解説: 開発中は JIT でホットリロードを効かせ、リリース時は AOT で事前にネイティブコードへ変換します。
Q: FlutterアプリでOS固有機能に触れるとき、Android側で使われる言語はどれ?
- [ ] Swift
- [x] Kotlin
- [ ] C#
解説: 共通部分を Dart、Android 固有処理を Kotlin、iOS 固有処理を Swift が担当する分担になります。