Contents
Flutterとは?5分で理解するクロスプラットフォーム開発の魅力
Flutterは、Googleが開発したオープンソースのアプリケーション開発SDKです。1つのコードベースでAndroidとiOSの両方のアプリを構築できるため、時間とコストの削減が可能です。特に初心者向けに最適化されており、UIの柔軟性やパフォーマンスの高さが特徴です。以下で、Flutterを選ぶべき理由を解説します。
Googleが開発したオープンソースSDK
Flutterは2017年にGoogleがリリースしたクロスプラットフォーム開発フレームワークです。すべてのコードがDart言語で記述され、ネイティブアプリに近いパフォーマンスを実現します。また、コミュニティの支援も充実しており、公式ドキュメントやチュートリアルが豊富です。
なぜFlutterを選ぼうか?
| 項目 | 特徴 | 補足 |
|---|---|---|
| 開発速度 | デザインツール(Hot Reload)で即時反映が可能 | ブラウザで動くデモをテストできる |
| UIの柔軟性 | カスタムWidgetで独自デザインが容易 | Material DesignとCupertinoスタイルを切り替え可 |
| コスト効率 | 1コードベースで2プラットフォーム対応 | 開発者数やリリース期間を削減 |
Flutterを選べば、iOSとAndroidの両方を同じコードで開発できることから、チーム規模が小さくても効率よく進められます。
Dart言語の基本構文を5分でマスター
FlutterではDartというプログラミング言語を使用します。変数や関数の定義方法に注目し、実際のコード例を交えながら解説します。プログラミング経験がない人でも理解できるよう、直感的な表現で説明します。
変数とデータ型
Dartは動的型付け言語ですが、静的型付けもサポートしています。変数宣言にはvarやfinalを使用します。
var name = "Alice";→ 型が自動判定されるint age = 30;→ 整数型を明示的に指定final List<String> tasks = ["買い物", "掃除"];→ 不変のコレクション
関数の定義と呼び出し
関数はvoidや戻り値の型を定義し、()で括ります。
|
1 2 3 4 5 6 7 8 |
String greet(String name) { return "こんにちは、$nameさん!"; } void main() { print(greet("田中")); // 出力: こんにちは、田中さん! } |
DartはJavaScriptに似た構文を持ちながらも、型の厳密さが特徴です。
Android StudioでのFlutter環境設定手順
Android StudioでFlutter開発を始めるには、インストール前の準備と設定方法を正しく行う必要があります。エラー対処法も簡潔に紹介します。
インストール前の準備
- JDKの確認:Java Development Kit(JDK)がバージョン17以上でインストールされているかチェック(Flutter 3.0以降はJDK 17推奨)。
- Android Studioのインストール:公式サイトから最新版をダウンロードし、インストール。
- Flutter SDKの取得:Flutter公式サイトからSDKをダウンロード。
インストーラーの選択と設定
- Android Studioを起動後、「Configure」→「Plugins」で「Flutter」プラグインをインストール。
- Flutter SDKのパスを環境変数に追加(例:
PATH=$PATH:/Users/username/flutter/bin)。 flutter doctorコマンドで必要なパッケージがすべてインストールされているか確認。
必須手順:
flutter doctor --android-licensesを実行し、ライセンス承諾が済んでいることを必ず確認してください。エラーが出た場合は、flutter upgradeやflutter pub getで解決できる場合があります。
プロジェクト作成からビルドまでを5分で実践
Android Studioで新規プロジェクトを作成し、最初のアプリのビルド手順を紹介します。コマンドラインでの操作も簡潔に解説します。
新規プロジェクトのテンプレート選択
- Android Studio起動 → 「New Project」を選択。
- テンプレートで「Flutter Application」を選ぶ。
- プロジェクト名を入力し、保存先を指定。
- デフォルトでは「Material App」テンプレートが選択されている。
コードエディタでの最初の変更
プロジェクト作成後、lib/main.dartを開き、以下のように変更します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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( title: 'Flutter Demo', home: Scaffold( appBar: AppBar(title: Text('Hello Flutter')), body: Center(child: Text('こんにちは!')), ), ); } } |
flutter runコマンドでエミュレータや実機にアプリをインストールできます。
UIコンポーネントを組み立てる実例
FlutterのUIはWidget(ウィジェット)で構成されます。ボタンやテキスト、カラーやフォントの変更方法を具体例で解説します。
ボタンとテキストの配置
以下のようにElevatedButtonやTextを使用して基本的なUIを作成します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Container( padding: EdgeInsets.all(16), child: Column( children: [ Text('タップしてみましょう!', style: const TextStyle(fontSize: 20)), ElevatedButton( onPressed: () { print("ボタンが押されました"); }, child: const Text('クリック'), ), ], ), ) |
カラーやフォントの変更方法
- テキスト色は
style: TextStyle(color: Colors.red)で指定。 - フォントサイズは
fontSize: 24のように数値を入力。 - 背景色は
Containerにcolor: Colors.yellowを設定。
FlutterのWidgetは階層構造を持ち、レイアウト設計が直感的です。
5分で作るTo-Doリストアプリ
状態管理やリスト表示の基礎を理解するため、簡単なTo-Doリストアプリを作成します。statelessとstateful widgetの使い分けも解説します。
状態管理の仕組み
以下のようにsetState()で画面を更新できます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
class TodoApp extends StatefulWidget { const TodoApp({super.key}); @override _TodoAppState createState() => _TodoAppState(); } class _TodoAppState extends State<TodoApp> { final TextEditingController _controller = TextEditingController(); List<String> tasks = []; void _addTask() { setState(() { if (_controller.text.isNotEmpty) { tasks.add(_controller.text); _controller.clear(); } }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('To-Doリスト')), body: Column( children: [ TextField( controller: _controller, onSubmitted: (value) => _addTask(), ), Expanded( child: ListView.builder( itemCount: tasks.length, itemBuilder: (context, index) { return ListTile(title: Text(tasks[index])); }, ), ), ], ), ); } } |
リスト表示と入力処理
_addTask()でテキストフィールドの内容をリストに追加。ListView.builderで動的に項目を描画。
状態管理はアプリの基本的な機能であり、さらに複雑なロジックにも応用できます。