SlideShare a Scribd company logo
Flutter
Android/iOS両対応の
アプリ開発
GDG DevFest 2017 Tokyo
@najeira
generated by Marp 1
Target
Flutterの概要を知りたい
エンジニア
デザイナー
FlutterでAndroid/iOS両対応のアプリ開発 2
Engineer/Developer
モバイルアプリを作る
エンジニア/デベロッパー
FlutterでAndroid/iOS両対応のアプリ開発 3
Designer
FlutterのUIは宣言的
new Row(children: <Widget>[
new Icon(Icons.thumb_up),
new Text('Welcome to Flutter!',
style: const TextStyle(
color: Colors.red,
fontSize: 20.0,
),
),
]),
レイアウト/スタイルを編集しやすい
FlutterでAndroid/iOS両対応のアプリ開発 4
Other
モバイルアプリを作るにあたり
どのような選択肢があるか
知っておきたい人にも
FlutterでAndroid/iOS両対応のアプリ開発 5
Agenda
概要、特徴
仕組み
機能、UI
事例
FlutterでAndroid/iOS両対応のアプリ開発 6
Flutter
FlutterでAndroid/iOS両対応のアプリ開発 7
Flutter とは?
開発フレームワーク、SDK
モバイルアプリ
単一のコードベース
Android、iOS、Fuchsia
FlutterでAndroid/iOS両対応のアプリ開発 8
目指すもの
高い開発効率
高い実行パフォーマンス
FlutterでAndroid/iOS両対応のアプリ開発 9
対象
2Dの「アプリ」
ゲームを作るものではない
FlutterでAndroid/iOS両対応のアプリ開発 10
特徴
Dart language
Reactive framework
inspired by React
自前UI (Material and iOS)
オープンソースon GitHub
developed by Google and community
FlutterでAndroid/iOS両対応のアプリ開発 11
特徴
ネイティブのARMコードにコンパイル
iOS: C/C++/Dartすべて
Android: C/C++すべて、Dartの大半
2D GPU-accelerated APIs
IntelliJ プラグイン& IDEデバッグ
ホットリロード
FlutterでAndroid/iOS両対応のアプリ開発 12
注意点
まだアルファ版
自前UIなので、OEM UIと混在できない
Flutter画面とプラットフォーム画面の往来は可能
FlutterでAndroid/iOS両対応のアプリ開発 13
クロスプラットフォーム
他にもいろいろある
React Native
JavaScript & CSS, Facebook, ホットリロード, Web
のReact, OEM UI, JavaScript Runtime
Xamarin
C#, Microsoft, OEM UI & Xamarin.Forms, ネイティ
ブコンパイル(iOS) & Mono VM (Android)
などなど
FlutterでAndroid/iOS両対応のアプリ開発 14
Flutter UI
FlutterでAndroid/iOS両対応のアプリ開発 15
Hello, Flutter!
void main() {
runApp(new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: const Text('DevFest 2017'),
),
body: const Center(child: const Text(
'Hello, Flutter!',
style: const TextStyle(fontSize: 48.0),
)),
),
));
}
FlutterでAndroid/iOS両対応のアプリ開発 16
多数のWidget
よく使うもの
Text, TextStyle, Icon, Theme, RaisedButton, FlatButton,
Scaffold, AppBar, ListView, GridView, ScrollView,
ListTile, ListBody, Container, Row, Column, Stack, Padding,
Expand, Image, BottomNavigationBar, TabBar, TabBarView,
MaterialApp, Drawer, Card, AlertDialog, Color, EdgeInset,
InkWell, GestureDetector, ...
Widgetだけで1000近くある
FlutterでAndroid/iOS両対応のアプリ開発 17
Widget
class YourPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text('My App')),
body: new Center(child: new Text('Hello!')),
);
}
}
StatelessWidget, StatefullWidgetをextendsして
自分のWidget(部品や画面)を作る
FlutterでAndroid/iOS両対応のアプリ開発 18
StatefullWidget
class YourApp extends StatefullWidget {
YourAppState createState() => new YourAppState();
}
class YourAppState extends State<YourApp> {
int counter = 0;
Widget build(BuildContext context) {
return new RaisedButton(
child: new Text('counter = $counter'),
onPressed: () { setState(() { counter++; }); },
);
}
}
FlutterでAndroid/iOS両対応のアプリ開発 19
build, setState
buildメソッドが返すWidgetツリーが描画される
setStateで状態を変えると、再buildされる
Flutterは前回のbuildと今回のbuildの
Widgetツリーの差分を再描画する
FlutterでAndroid/iOS両対応のアプリ開発 20
Flutter の機能
FlutterでAndroid/iOS両対応のアプリ開発 21
ホットリロード
FlutterでAndroid/iOS両対応のアプリ開発 22
テスト
unit
Dart標準の単体テスト用のパッケージ
widget
Widgetに対してテストを行う
操作するための手段が提供されている
integration
実際のアプリを起動してスクリプトから操作する
FlutterでAndroid/iOS両対応のアプリ開発 23
Widgetテスト
testWidgets('description', (WidgetTester tester) async {
await tester.pumpWidget(
...
new FlatButton(...),
...
);
expect(
tester.getSize(
find.byType(FlatButton)),
equals(const Size(88.0, 36.0),
),
);
}
FlutterでAndroid/iOS両対応のアプリ開発 24
Platform Channels
プラットフォーム側のAPIを呼び出すことも出来る
※カメラ、位置情報など
FlutterでAndroid/iOS両対応のアプリ開発 25
Flutter の仕組み
FlutterでAndroid/iOS両対応のアプリ開発 26
Stack
from utter.io
FlutterでAndroid/iOS両対応のアプリ開発 27
Rendering
Flutter
App | Platform
Native Code
Widget Tree -- Renderer ---- | -------------------- Canvas
React Native
App | Platform
JavaScript
Virtual Widgets -- Bridge -- | -- OEM Widgets ------ Canvas
FlutterでAndroid/iOS両対応のアプリ開発 28
from Chromium
Chromiumからのコードが多数ある
utter/engine にはCopyright
Chromium Authors
Apple Inc
のファイルが多数ある
※HTMLのDOMを表示するブラウザと
Widget treeを表示するアプリの共通性
FlutterでAndroid/iOS両対応のアプリ開発 29
Dart
by Google
動的型付け
Javaに似ている
当初はブラウザにおける
JavaScriptの置き換えを狙っていた……
GoogleのAdWordsとAdSenseの
サーバ側はDartらしい
FlutterではDartコードをネイティブコンパイル
FlutterでAndroid/iOS両対応のアプリ開発 30
事例
FlutterでAndroid/iOS両対応のアプリ開発 31
事例
まだ少ない
Google (mobile sales tool app)
Hamilton musical
Newsvoice
CARTUNE
FlutterでAndroid/iOS両対応のアプリ開発 32
CARTUNE
FlutterでAndroid/iOS両対応のアプリ開発 33
CARTUNE
FlutterでAndroid/iOS両対応のアプリ開発 34
CARTUNE
※アニメーションGIFのため粗いですが、実際はもっと綺麗です
FlutterでAndroid/iOS両対応のアプリ開発 35
まとめ・感想
FlutterでAndroid/iOS両対応のアプリ開発 36
なぜFlutter を選んだのか
Dartの型チェックが期待できた
IntelliJのプラグインやデバッグ機能
FlutterでAndroid/iOS両対応のアプリ開発 37
開発してみて
いくつかバグには遭遇した
テキスト入力で改行まわり
プラットフォーム側のテキスト入力画面を表示
クラッシュまわりはログをIssue登録
修正してもらえたり、調査中
機能の追加のPull-Requestを送ってマージされた
FlutterでAndroid/iOS両対応のアプリ開発 38
開発してみて
UIまわりはFlutter提供のものを組み合わせればOK
プラットフォーム側の機能との連携は実装が必要
プラグインは少ない
StackOver owで質問すると即回答
Googleの人も見てくれている
フレームワークのソースコードが公開されており
Dartなので読めば分かる
FlutterでAndroid/iOS両対応のアプリ開発 39
向き不向き
新規のアプリ開発には有力な候補
本アプリを作ってもよし
プロトタイプだけでもよし
既存アプリにハイブリッド的に組み込むのは
向かない(と思う)
作成済みUIを利用できないなど
FlutterでAndroid/iOS両対応のアプリ開発 40
まとめ
FlutterでAndroid/iOS両対応のアプリ開発 41
Flutter
モバイルアプリのSDK
Android / iOS 両対応
高い開発効率(ホットリロード・IDEデバッグ)
アルファ版
FlutterでAndroid/iOS両対応のアプリ開発 42

More Related Content

PDF
Flutter2
PPTX
Flutter (フラッター)
PDF
Namespace API を用いたマルチテナント型 Web アプリの実践
PDF
粗探しをしてGoのコントリビューターになる方法
PDF
GoによるiOSアプリの開発
PDF
僕がAndroid開発する時にちょっと便利だと思うtips
PDF
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
PDF
goパッケージで型情報を用いたソースコード検索を実現する
Flutter2
Flutter (フラッター)
Namespace API を用いたマルチテナント型 Web アプリの実践
粗探しをしてGoのコントリビューターになる方法
GoによるiOSアプリの開発
僕がAndroid開発する時にちょっと便利だと思うtips
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
goパッケージで型情報を用いたソースコード検索を実現する

What's hot (20)

PPTX
ネットワークの切り替えを感知する方法
PDF
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
PDF
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
PPTX
[ABC2016S]Android Wear アプリ開発入門
PDF
HoloLens 2 開発入門
PDF
Cloud functionsの紹介
PDF
オススメの標準・準標準パッケージ20選
PDF
[Lt]versionごとにurlを自動生成
PDF
2015年度研究室プレ卒研用Android講座1
PDF
Goだけでモバイルアプリを作ろう
PDF
2017823 pythonを始めよう
PDF
Android概要資料
PDF
Pythonを始めよう
PDF
Android Studio 2.2の紹介@Google I/O 2016東京報告会
PDF
[デブサミ2015]Androidで広がる世界&エンジニアとしての歩み
PDF
Android dev summit 2019 recap
PDF
Go MobileでAndroidアプリ開発
PDF
Android Wearアプリ開発経験談
PPTX
オープンソースによるドローン開発の概要( #ABC2015S )
PDF
Android Wearアプリ プレビュー版→正式版への移植ガイド
ネットワークの切り替えを感知する方法
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
[ABC2016S]Android Wear アプリ開発入門
HoloLens 2 開発入門
Cloud functionsの紹介
オススメの標準・準標準パッケージ20選
[Lt]versionごとにurlを自動生成
2015年度研究室プレ卒研用Android講座1
Goだけでモバイルアプリを作ろう
2017823 pythonを始めよう
Android概要資料
Pythonを始めよう
Android Studio 2.2の紹介@Google I/O 2016東京報告会
[デブサミ2015]Androidで広がる世界&エンジニアとしての歩み
Android dev summit 2019 recap
Go MobileでAndroidアプリ開発
Android Wearアプリ開発経験談
オープンソースによるドローン開発の概要( #ABC2015S )
Android Wearアプリ プレビュー版→正式版への移植ガイド
Ad

Similar to FlutterでAndroid/iOS両対応のアプリ開発 (20)

PDF
超高速でflutterアプリをビルドする
PDF
Flutterやってみよう
PPTX
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
PPTX
Flutter first impression
KEY
スマートフォンアプリケーション開発の最新動向
PPTX
Flutter、いいじゃん
PDF
iPhoneとAndroidのアプリ開発最新潮流
PDF
FlutterをRenderObjectまで理解する
PDF
Flutter移行の苦労と、乗り越えた先に得られたもの
PDF
Flutter移行の苦労と、乗り越えた先に得られたもの
PDF
DartPad+CodePenで、Flutterを体験してみよう
PDF
リビルドへの道登壇資料.pdf
PDF
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
PDF
マッチングアプリ『Omiai』の Flutter へのリプレイスの挑戦 (FlutterKaigi 2024)
PDF
Flutterとプラットフォーム依存の処理の対応について
PPTX
社内発表資料
PDF
Google I/O 2021 Flutter 全体報告
PDF
iPhone、Android両対応アプリ開発講座 概論
PPTX
Track paint
PDF
Flutter_Forward_Extended_Kyoto-Keynote_Summary
超高速でflutterアプリをビルドする
Flutterやってみよう
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
Flutter first impression
スマートフォンアプリケーション開発の最新動向
Flutter、いいじゃん
iPhoneとAndroidのアプリ開発最新潮流
FlutterをRenderObjectまで理解する
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
DartPad+CodePenで、Flutterを体験してみよう
リビルドへの道登壇資料.pdf
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
マッチングアプリ『Omiai』の Flutter へのリプレイスの挑戦 (FlutterKaigi 2024)
Flutterとプラットフォーム依存の処理の対応について
社内発表資料
Google I/O 2021 Flutter 全体報告
iPhone、Android両対応アプリ開発講座 概論
Track paint
Flutter_Forward_Extended_Kyoto-Keynote_Summary
Ad

FlutterでAndroid/iOS両対応のアプリ開発