
概要と到達目標
クラウドの実行環境を開きながら下のプログラムを動かしてみてください。https://dartpad.dev/
この節の目的は、Dart という言語がどのような考え方で作られ、なぜ Flutter 学習の土台になるのかをつかむことです。ここでは細かい文法を全部覚えるのではなく、「変数」「型」「条件分岐」「ループ」「関数」という第2章全体の全体像を先に頭へ入れます。
Dart は 2011年10月に Google が初公開した言語で、設計には Lars Bak と Kasper Lund が中心的に関わりました。公開時点では「構造化された web プログラミングのための、学びやすく柔軟な言語」を目標としていました。
また、Dart は登場当初のままではありません。2018年の Dart 2 では型システムが大きく強化され、2021年の Dart 2.12 では sound null safety が安定版として導入されました。
さらに 2023年の Dart 3 では records や patterns などが入り、より安全で表現力の高い言語になっています。
1. Dart とは何か
Dart は、モバイル、Web、デスクトップ、サーバー向けのアプリを作るために使えるプログラミング言語です。Flutter でアプリを作るときの言語として特に有名ですが、Dart 自体は Flutter 専用ではありません。公式概要でも、Dart は高速で、型安全で、複数のプラットフォーム向け開発に使える言語として説明されています。
ここで「型安全」という言葉が出てきます。型安全とは、数字を入れる場所には数字、文字を入れる場所には文字、というように、データの種類の取り違えを減らす仕組みのことです。
たとえば、テストの点数を入れる変数に「九十点」という文章を入れてしまうと、計算がうまくいかなくなります。Dart はこうしたミスを、実行前や実行中に見つけやすくするよう設計されています。公式も Dart を type safe な言語だと説明しています。
たとえば、次のコードは「名前」と「あいさつ文」を扱う、とても小さな Dart プログラムです。
void main() {
String name = 'Tomoya';
print('こんにちは、$name さん');
}
この段階で全部を理解する必要はありません。今は「Dart では、値を変数へ入れて、画面に表示できるのだな」と思えれば十分です。
2. なぜ Dart を学ぶのか
Flutter を学ぶ人にとって、Dart は避けて通れません。なぜなら、Flutter の画面、ボタン、入力欄、処理の流れは、すべて Dart の文法で書かれるからです。Flutter 公式の学習導線でも、Dart の基礎を先に理解する流れが示されています。
もう少しやさしく言うと、Flutter が「家」だとしたら、Dart はその家を組み立てる「道具箱」と「設計図の書き方」です。家の見た目だけ学んでも、道具の使い方が分からなければ直したり増築したりできません。だから第2章では、いきなり難しい画面を作るのではなく、まず Dart の基礎文法を学びます。
3. 誰が、いつ、どんな考え方を作ってきたのか
この節では、Dart の学習で知っておくと理解しやすい節目を、年代順に整理します。
3-1. 2011年:Dart の公開
Dart は 2011年10月10日に Google から早期プレビューとして公開されました。中心的な設計者は Lars Bak と Kasper Lund です。公開時に示された目標は、大きく言えば次の二つです。
- 構造化された web プログラミングに向くこと。
- プログラマにとって自然で学びやすいこと。
つまり、書きやすさと、規模が大きくなっても整理しやすいことを両立しようとした言語だったわけです。
3-2. 2018年:Dart 2 と型システムの強化
2018年に発表された Dart 2 では、型システムが大きく強化されました。公式発表では、型システムをより強く、より整理されたものにしたと説明されています。これは、「書ければよい」だけでなく、「間違いを減らしながら書ける」方向へ Dart が進んだことを意味します。
3-3. 2021年:sound null safety の安定化
2021年の Dart 2.12 では sound null safety が安定版として導入されました。null safety とは、値が入っていない状態である null によるエラーを減らす仕組みです。たとえば、まだ名前が入っていない変数へ向かって文字数を調べようとすると、普通は危険です。Dart は「null を入れてよい型」と「null を入れてはいけない型」を分けることで、この種のミスを減らします。
3-4. 2023年:Dart 3 と records・patterns
2023年の Dart 3 では、records や patterns が入りました。records は複数の値をひとまとめに扱う仕組みで、patterns は値の形に応じて取り出したり分岐したりしやすくする仕組みです。今すぐ使いこなす必要はありませんが、「Dart は今も進化している言語」だと分かれば十分です。
4. 第2章で学ぶ全体像
この章では、次の順番で Dart を学びます。
4-1. 変数とデータ型
まず、「何を入れておく場所なのか」を学びます。
- 変数はデータを入れておく箱です。
- 型は、その箱へ何を入れてよいかを表すルールです。 たとえば、
void main() {
String schoolName = 'Prince Academy';
int studentCount = 30;
print(schoolName);
print(studentCount);
}
このコードでは、schoolName には文字、studentCount には整数が入っています。こうした箱のルールを知ることが、プログラムの最初の一歩です。
4-2. 条件分岐
次に、「場合によって処理を変える」考え方を学びます。たとえば、点数が60点以上なら合格、そうでなければ再提出、という流れです。
void main() {
int score = 75;
if (score >= 60) {
print('合格です');
} else {
print('再提出です');
}
}
人間はふだん自然に条件で行動を変えています。プログラムでは、その考え方を明示的に書く必要があります。
4-3. ループ処理
その次は、「同じ処理を繰り返す」考え方です。たとえば、1から5まで順番に表示する、名簿の全員へ同じ確認をする、という場面で使います。
void main() {
for (int i = 1; i <= 5; i++) {
print(i);
}
}
ループを学ぶと、手作業で何度も同じことを書く必要が減ります。
4-4. 関数
最後の中心テーマが関数です。関数は、処理をひとまとまりにして名前をつけたものです。毎回同じ処理を書くのではなく、「あいさつする処理」「合計を出す処理」のようにまとめます。
void greet() {
print('おはようございます');
}
void main() {
greet();
}
関数を使うと、プログラムが読みやすくなり、直しやすくなります。
5. この節の到達目標
この 2-1 の時点では、次の状態を目指します。
- Dart がどんな言語かを説明できる。
- 2011年の公開、2018年の Dart 2、2021年の null safety、2023年の Dart 3 という大きな流れを知っている。
- 変数、型、条件分岐、ループ、関数が、第2章の中心テーマだと分かる。
- これから何を学ぶのか、学習地図を頭に入れられている。
ここでは「完璧に書ける」必要はありません。まずは「この章でどこへ向かうのか」が見えていれば成功です。
6. 練習問題
問題1
Dart が最初に公開されたのはいつですか。また、中心的な設計者は誰ですか。
問題2
次のうち、「型」の説明として正しいものを選んでください。
- プログラムの色を決める機能
- 変数にどんな種類の値を入れてよいかを表すルール
- 画面サイズを決める記号
問題3
次のコードは何を表示しますか。
void main() {
int score = 50;
if (score >= 60) {
print('合格');
} else {
print('再提出');
}
}
問題4
次のコードは何回 こんにちは を表示しますか。
void main() {
for (int i = 0; i < 3; i++) {
print('こんにちは');
}
}
問題5
関数の役割を、初心者向けに一文で説明してみてください。
7. 練習問題の答え
答え1
2011年10月10日です。中心的な設計者は Lars Bak と Kasper Lund です。
答え2
正解は 2 です。
型は、変数へどんな種類の値を入れてよいかを表すルールです。
答え3
再提出 と表示します。
なぜなら、score は 50 で、60以上ではないからです。
答え4
3回です。
i = 0, 1, 2 の3回くり返すためです。
答え5
例としては、
「関数は、同じ処理を何度も使えるように、処理へ名前をつけてまとめたものです。」
のように説明できます。
8. まとめ
Dart は Google が 2011年に公開した言語で、Lars Bak と Kasper Lund が中心となって設計しました。公開時は「構造化された web プログラミング」と「学びやすさ」が大きな目標でした。2018年の Dart 2 では型システムが強化され、2021年には sound null safety が安定化し、2023年には Dart 3 で records や patterns が入りました。つまり、Dart は書きやすさだけでなく、安全性も強化されてきた言語です。
この節で一番大事なのは、第2章の地図をつかむことです。これから学ぶのは、変数、型、条件分岐、ループ、関数です。ここが分かると、後で Flutter の画面や処理を読んだときに、「何が起きているのか」がかなり見えやすくなります。
参考文献
- https://blog.chromium.org/2011/10/dart-language-for-structured.html
- https://dart.dev/overview
- https://blog.dart.dev/announcing-dart-2-optimized-for-client-side-development-80ba01f43b6
- https://blog.dart.dev/announcing-dart-2-12-499a6e689c87
- https://blog.dart.dev/announcing-dart-3-53f065a10635
- https://dart.dev/resources/dart-3-migration
- https://dart.dev/language/records