前回の講義では、Dart初めてのプロジェクト作成方法を解説しました。今回は自身でHello Worldサンプルを作成する手順を説明します。
1 Hello World
- Dartプログラムには必ずトップレベルの
main()関数が必要で、ここからプログラムが実行されます - 戻り値のない関数には
voidを記述します print()はコンソールに文字を出力する関数です
// プログラムエントリーポイント
void main() {
print('Hello, World!');
}
Code language: Dart (dart)
前回作成したプロジェクトを例に説明します。C:\dartdemo\firstdart\bin配下のfirstdart.dartファイルを開きます
ファイル内のコードを上記のコードに書き換えます

その後、cmdでC:\dartdemo\firstdartディレクトリに移動し、dart runコマンドを実行します
C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Hello, World!Code language: CSS (css)
2 変数(varによる型自動推論)
varで変数を定義すると、Dartが代入値から自動的に型を判別するため、手動で型名を記述する必要がありません- 文字列、数値、小数、配列、辞書(オブジェクト)に対応しています
サンプル
// プログラムエントリーポイント
void main() {
var name = 'ボイジャー1号'; // 文字列String
var year = 1977; // 整数int
var width = 3.7; // 小数double
var planets = ['木星','土星']; // 配列List
var info = {
'tag': ['土星'],
'url': '画像URL'
}; // 辞書Map
}
Code language: Dart (dart)
上記で複数の変数を定義しています。変数はデータを保存するための小さなメモリ領域で、この領域に名前を付けたものです。名前があることで該当メモリ領域の操作が簡単になります。
このメモリ領域には理論上0と1のデータを何でも保存可能で、コンピュータの全データは0と1で構成されています。文字列や整数といった型が存在するのはデータの解析を容易にするためで、例えばコンパイラはint型と認識すると整数としてデータを読み取ります。
上記の変数を操作する場合は以下のように記述します
// プログラムエントリーポイント
void main() {
var name = 'ボイジャー1号'; // 文字列 String
var year = 1977; // 整数 int
var width = 3.7; // 小数 double
var planets = ['木星', '土星']; // 配列 List
var info = {
'tag': ['土星'],
'url': '画像URL'
}; // 辞書 Map
// 文字列使用例
print('探査機名:$name');
print('名前の文字数:${name.length}');
print('「号」を含むか:${name.contains('号')}');
// 整数使用例
print('打ち上げ年:$year');
print('経過年数:${DateTime.now().year - year} 年');
// 小数使用例
print('探査機幅:$width メートル');
print('幅の二乗:${width * width}');
// 配列使用例
print('目標惑星一覧:$planets');
planets.add('天王星'); // 要素追加
print('更新後の惑星一覧:$planets');
print('最初の目標惑星:${planets[0]}');
// 辞書使用例
print('情報タグ:${info['tag']}');
print('画像URL:${info['url']}');
info['status'] = '稼働中'; // 新しいキーと値を追加
print('完全な情報:$info');
}
Code language: PHP (php)
上記ではフォーマット出力を使用しています。まだ学習していない内容のため、まず概要を理解してください。後ほど詳しく解説します。
3 フロー制御文(条件分岐 / ループ)
if else 条件分岐
if後の括弧内の条件に応じて実行する文を切り替えます。条件がtrue(真)の場合はif直後の{}内コードを実行し、false(偽)の場合はelse後のコードを実行します

if (条件) {
// 条件が true の時実行
} else {
// 条件が false の時実行
}Code language: JavaScript (javascript)
例として速度超過判定を記述します。
var speed = 25;
if (speed > 60) {
print('速度超過です!');
} else {
print('速度は正常です。');
}Code language: PHP (php)
複数段階の判定を記述することも可能です
if (speed > 100) {
print('危険な速度!');
} else if (speed > 60) {
print('少し速いです。');
} else {
print('安全な走行です。');
}Code language: PHP (php)
void main() {
var year = 1977;
if (year >= 2001) {
print('21世紀');
} else if (year >= 1901) {
print('20世紀');
}
}
Code language: Dart (dart)
C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
20世紀Code language: CSS (css)
for 配列走査(for-in)
Dartにおいてfor‑inループはList、Setその他反復可能オブジェクトを簡潔に走査する構文です。
配列またはリストに次の要素が存在する限り{}内の処理を実行し、要素がなくなったらループを終了し後続の処理へ移ります。
構文は以下の通りです:
for (var item in collection) {
// itemを使用した処理
}Code language: JavaScript (javascript)

サンプルを確認します
void main() {
var planets = ['木星','土星'];
for (final item in planets) {
print(item);
}
}
Code language: Dart (dart)
実行結果
C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
木星
土星Code language: CSS (css)
数値指定通常forループ
i=1から12まで(<=を使用するため12を含む)ループし、print実行後はi++の処理へ移ります
void main() {
for (int i = 1; i <= 12; i++) {
print(i);
}
}Code language: JavaScript (javascript)

実行結果
C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
1
2
3
4
5
6
7
8
9
10
11
12Code language: CSS (css)
- まずint i = 1 を1回実行
- 次に条件 i <=12 が成立するか判定
- 成立する場合はprint (i)を実行し1を出力
- その後i++を実行しiの値が2に変更
- 再度i<=12を判定、2<=12がtrueのためprint(i)で2を出力
- 再びi++を実行し条件判定を繰り返す
- …..
- iが13になった時点でi<=12が不成立となり、forループを抜け後続処理へ移行
int i=1; はループ開始時に1度だけ実行され、それ以降は実行されません。この記述はiに初期値を代入するためのもので、以下のように記述することも可能です
void main() {
int i = 1;
for (; i <= 12; i++) {
print(i);
}
}
Code language: Dart (dart)
4. while ループ
whileループはforループと類似し、Dartにおいてwhileループは条件が真の間コードを繰り返し実行する構文です。構文は非常にシンプルです:
while (条件) {
// ループ本体
}Code language: JavaScript (javascript)
実行フロー:
- まず条件が
trueか判定する。 - 真の場合、ループ本体を実行。
- 実行完了後再度条件を判定。
- 条件が
falseになった時点でループ終了。
条件をfalseにするにはループ本体内で変数の値を変更する必要があります。変更しない場合、無限ループが発生し処理が停止しなくなります。
var year = 2010;
while(year < 2016){
year += 1;
}
Code language: JavaScript (javascript)
実行手順を分解すると以下の通りです 👇
初期化フェーズ
- 変数
yearを定義し、初期値を2010に設定。
条件判定フェーズ
year < 2016が真か判定。- 真の場合はループ本体へ、偽の場合はループを抜ける。
ループ本体実行フェーズ
year += 1を実行、すなわちyear = year + 1。- 毎回ループごとに
yearの値が1増加。
再判定フェーズ
- 再度
year < 2016の条件を確認。 yearが2010から2015までの間は条件が真。yearが2016に達すると条件が偽となりループ終了。
終了フェーズ
- ループ終了時、
yearの最終値は 2016 となる。
このループは計6回実行されます(2010~2015)。毎回yearの値を1増加させ、条件が不成立になるまで繰り返します。ループ本体内でyearの値を変更しないと無限ループになるため注意してください。