Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FlutterでAndroid/iOS両対応のアプリ開発
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
najeira
October 10, 2017
Programming
4.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
FlutterでAndroid/iOS両対応のアプリ開発
FlutterでAndroid/iOS両対応のアプリ開発
najeira
October 10, 2017
More Decks by najeira
See All by najeira
Flutter with Platform
najeira
4
1.5k
Google I/O 2019 Extended Tokyo - Flutter
najeira
1
210
Flutter APP DOJO 2019-04
najeira
1
200
Flutterとの1年
najeira
4
1.6k
Flutter List View 概要
najeira
0
1.2k
Flutter / Google I/O 2018 報告会 信州
najeira
0
340
仕組みを知れば怖くない! Flutter入門
najeira
16
8.1k
Google I/O 2017 報告会 Firebase/Cloud
najeira
1
190
Google I/O 2017 報告会 Flutter/Dart
najeira
1
350
Other Decks in Programming
See All in Programming
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
140
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
8.9k
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
510
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
170
関数型プログラミングのメリットって何だろう?
wanko_it
0
160
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
14
6.8k
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
240
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
350
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
840
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.3k
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
110
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
Color Theory Basics | Prateek | Gurzu
gurzu
0
390
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
KATA
mclloyd
PRO
35
15k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
260
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
260
Transcript
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