【2026年版】Flutterの始め方 — クロスプラットフォーム開発の第一歩を完全ガイド
- Flutter SDKとエミュレータのセットアップ
- Widgetの概念と基本的なUI構築
- StatefulWidget と状態管理の基本
- Android/iOSエミュレータまたはWebでの実行
セットアップ手順
# Flutter SDKのインストール(公式サイトからダウンロード後)
flutter doctor # 環境チェック(全項目グリーンを目指す)
flutter --version
# 新規プロジェクト作成
flutter create myapp
cd myapp
flutter run # デバイスまたはエミュレータで起動
よく使うflutterコマンド
flutter run # 実行(デバイス選択あり)
flutter run -d chrome # Webブラウザで実行
flutter build apk # Android APKビルド
flutter build ios # iOSビルド(macOS必要)
flutter pub add パッケージ名 # パッケージ追加
flutter pub get # 依存パッケージ取得
flutter test # テスト実行
はじめてのコード(カウンターアプリ)
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const CounterPage(),
);
}
}
class CounterPage extends StatefulWidget {
const CounterPage({super.key});
@override
State<CounterPage> createState() => _CounterPageState();
}
class _CounterPageState extends State<CounterPage> {
int _count = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text('$_count', style: const TextStyle(fontSize: 48))),
floatingActionButton: FloatingActionButton(
onPressed: () => setState(() => _count++),
child: const Icon(Icons.add),
),
);
}
}
よくある詰まりポイント
Q: flutter doctor でエラーが出る
→ 各項目のエラーメッセージに従って解決してください。Android Studio / Xcodeのライセンス同意が必要なケースが多いです。flutter doctor --android-licenses でAndroidのライセンスを一括承認できます。
Q: エミュレータが遅い
→ BIOS/UEFIでVirtualizationを有効にすると速くなります。macOSはApple Siliconなら高速です。Webブラウザでの実行(flutter run -d chrome)は手軽に始められます。
Q: setState を呼び忘れて画面が更新されない
→ StatefulWidget では状態変更を setState(() { ... }) で囲まないと画面が再描画されません。
Flutterってよく聞くけど、どんなものなの?
1つのコードで全部動くってすごいね!でも始めるには何を準備すればいいの?
ここで「flutter doctor」を実行してみてね。全項目がグリーンになることを目指そう。すぐには難しくても、「flutter create myapp」→「cd myapp」→「flutter run -d chrome」でWebブラウザにカウンターアプリが表示されるよ。まずはWebで動かしてみるのが一番手軽だよ!
DartはJavaScriptやJavaに似た文法だから、どちらかの経験があればすぐ馴染めるよ。型推論があるから「var name = "Flutter"」みたいに書けるし、null安全も言語レベルでサポートされてるから、実行時のnullエラーが起きにくいんだ。非同期処理もasync/awaitで直感的に書けるよ。
Widgetにも種類があるの?StatelessWidgetとStatefulWidgetの違いがよく分からないんだけど…
StatelessWidgetは「状態を持たない」Widget。一度作ったら表示が変わらない、ラベルやアイコンみたいなものに使うよ。StatefulWidgetは「状態を持てる」Widgetで、ボタンを押したらカウンターが増えるとか、ユーザー操作で表示が変わるものに使うんだ。まずはこの2つを使い分けられればアプリが作れるよ。
レイアウトを組むときはどうするの?CSSみたいなものがあるのかな?
アプリが複雑になってくると状態管理が大変って聞いたことがあるけど、どうすればいいの?
実際にスマホで動かしてみたいんだけど、実機テストってどうやるの?
アプリが完成したらストアに出すのも簡単なの?
FlutterってWebアプリも作れるんだよね?ネイティブアプリとの違いはあるのかな?