Flutterって何?
Flutter (フラッター) は、Googleによって開発されたフリーかつオープンソースの
モバイルアプリケーションフレームワークである。FlutterはAndroidやiOS向けの
アプリケーションの開発に利用されている。Fuchsiaではアプリケーションの開発
は主にFlutterを利用して行われている[4]。
2018年12月4日、ロンドンで開催されたFlutter Live '18にて、初の正式版となる
Flutter 1.0のリリースが発表された[5]。
最も重要なことは、「マルチプラットフォーム」の開発ができるフレームワークであるということです。
作りたいアプリがある場合に、通常の開発であれば、動作させる環境毎に言語・開発環境が異なります。その為、全ての環境のアプリケーションを作るには、それぞれ技術を保有する人材が必要となり1つのアプリを作るコストが大きくなります。
新規事業で、新しいアプリケーションを作る場合にブラウザ(WEB)アプリケーションが多いのは、動作させるブラウザがAndroid、iPhone、Windows、Macをカバーしている為、1つのブラウザ(WEB)アプリケーションを作るだけで実現でき比較的難易度が低いから選定されています。

Flutterでは、Dart言語とFlutterFWで、全てのアプリケーションを作成可能であり、開発コストを大幅に削減することが可能です。
OS固有の技術を利用する場合は、KotlinやSwift、C++などで拡張する必要があります。
どんなことを実現したいアプリケーションなのかで、利用技術を選定してください。
ハンズオンのゴール
Flutterでの開発方法、動作確認を学ぶ
開発選択肢の1つに加えてもらう
Step
- 環境構築(Mac/Windows)
- 所要時間:45分
- HelloWorld
- 所要時間:15分
- ボタンを配置してみる
- 所要時間:15分
- 画面遷移してみる
- 所要時間:15分
環境構築(Mac/Windows)
- 所要時間:45分
-
Flutter SDKをインストールする
-
FlutterでWindows/Macを有効にする
flutter channel dev flutter upgrade flutter config --enable-windows-desktop flutter config --enable-macos-desktop
-
Flutter doctorで必要なアプリケーションをインストールする
flutter doctor
- MacOS
- Android Studio
- Dart/Flutterプラグイン設定
- Xcode
- VS Code
- Dart/Flutterプラグイン設定
- Chrome
- Android Studio
- Windows
- Android Studio
- Dart/Flutterプラグイン設定
- VS Code
- Dart/Flutterプラグイン設定
- Visual Studio
- C++ (WindowsDesktopアプリケーション開発環境)
- Chrome
- Android Studio
- MacOS
HelloWorld
- 所要時間:15分
プロジェクトを作成し、VSCodeで表示
プロジェクト作成
flutter create handson


Flutterのディレクトリ構造説明
- pubspec.yaml
- プロジェクト定義ファイル
- 類似
- Node.js - package.json
- PHP Larabel - composer.json
- Python - requirements.txt
- 類似
- プロジェクト定義ファイル
- lib/*
- Flutterの実行ロジックを格納するディレクトリ
- 最初に読み込みされるファイルは、
lib/main.dart
- test/* , integration_test/*
- Flutterのテストロジックを格納するディレクトリ
- android/* , ios/* , macos/* , web/* , windows/*
- 実行環境毎の定義ファイルや、拡張ロジックを格納するディレクトリ
- アプリ系(android/iso/macos)などのマイク機能、カメラ機能を利用します。などの許可定義などもここ
- ビルド定義もここになるので、うまくビルドが通らない時は、このディレクトリのファイルを変更する
- build/*
- ビルドで作成された実行ファイルが格納されるディレクトリ
Flutterを実行してみる
flutter run
# macos
flutter run -d macos
# windows
flutter run -d windows
# chrome
flutter run -d chrome
# ios
open -a simulator
flutter run

HelloWorldの文字を追加してみる
Text(
'Hello World!!!',
),
ボタンを配置してみる
- 所要時間:15分
RaisedButton(
child: Text('ボタンです!'),
onPressed: () {},
),
RaisedButton(
child: Text('ボタンです!'),
onPressed: () => showDialog(
context: context,
builder: (_) {
return AlertDialog(
title: Text("message"),
content: Text("Flutterって面白い!"),
actions: <Widget>[
// ボタン領域
FlatButton(
child: Text("閉じる"),
onPressed: () => Navigator.pop(context),
),
],
);
},
),
),
画面遷移してみる
- 所要時間:15分
遷移先の画面作成
import 'package:flutter/material.dart';
class SubPage extends StatefulWidget {
@override
_SubPageState createState() => _SubPageState();
}
class _SubPageState extends State<SubPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Subページです'),
),
body: const Text('Subページです!!'),
);
}
}
遷移処理の追加
import 'sub_container.dart';
routes: <String, WidgetBuilder>{
'/sub': (BuildContext context) => (SubPage()),
},
RaisedButton(
splashColor: Colors.purple,
child: Text('Subページに移動'),
onPressed: () => {Navigator.pushNamed(context, '/sub')},
),
動かしてみる


締め
Flutterの技術記事は増えてきているので、調べてみるといろいろ出てきます。
私が学習に利用したサイトを紹介します。
-
https://flutter.dev/docs
- 公式ドキュメント
-
https://pub.flutter-io.cn/
- Dart/Flutterのパッケージサイト
- Qiita&GitHub
- 動くものをローカルにクローンして手当たり次第に実行
Flutter/Dartは、Reactをオブジェクト指向にした感じだなーと。
マルチプラットフォームで動かせることは、非常に魅力的な要素なので少しアプリ作ってみるときにFlutterってあったな〜と思い出してもらえれば幸いです。