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
ふくもく会 LT / Flutter やりなおし
Search
Takahiro Yamakoshi
January 25, 2020
Programming
0
41
ふくもく会 LT / Flutter やりなおし
今 Flutter で 1 から書くならこの辺に気を使うかなーというものまとめ。
他にも多分いっぱいあるけど思いつくものベースで。
Takahiro Yamakoshi
January 25, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
Crafting a Own PHP - ウキウキ手作りミニマリストPHP
uzulla
4
1.1k
Compiling Python to WebAssembly with py2wasm
syrusakbary
0
130
Swiftの型推論を学ぼう | Let's Learn About Type Inference in Swift
omochi
2
510
ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜 / namespace and autoloading in php
okashoi
2
470
WebComponentsで フレームワークを1ページに共存させる
webuilder240
0
150
ISUCONってなんだか難しそう……!!でも、初めてのISUCONにPHPで挑戦してきました!
kotomin_m
1
300
マイクロサービスがほしいと思ったときに本当に必要だったもの〜なぜ人は共通基盤の夢を見るのか〜 / why microservice
77web
5
980
document.write再考
brn
5
2.5k
まっちすいっち戦争 / match vs switch
takuyakatsusa
2
660
Honoとhtmx
yusukebe
6
1.2k
Understanding Ast By Looking
inouehi
0
120
チームでモデリングを育てるうえで 考えたこと・気づいたこと / Cultivating Modeling in Teams: Thoughts and Insights
mackey0225
5
1.7k
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
689
190k
Product Roadmaps are Hard
iamctodd
43
9.6k
Statistics for Hackers
jakevdp
789
220k
A Philosophy of Restraint
colly
195
15k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
1
3.3k
jQuery: Nuts, Bolts and Bling
dougneiner
57
7.1k
The Brand Is Dead. Long Live the Brand.
mthomps
48
21k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Writing Fast Ruby
sferik
619
59k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.8k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
319
20k
Transcript
Flutter やりなおし 1 から作り直したいと思ったっていい 時を戻そう
これからする話 Flutter で半年ガッツリ仕事してきて、概ね満足してるが後悔もある。 「今からアプリを1から作るならこうするな」と思っている内容を話す。
Flutter 採用するかどうかの見極め方 • UI ヘビーなアプリであればあるほど恩恵を得られるはず • もともと Native 書けるなら、基本的に問題はない ◦
Native の plugin を書くのは(ものによるけど)難しくない • Native 比重がどんな程度になるかは抑えておくべき • Flutter チームが行ったアンケート の「このプラグインがない/品質が低いから辛 い」の結果は要注意 ◦ Geo, Media, Webview, Ads, Payment … ◦ これらは現状、自分で plugin を書くことになると思ったほうがよい
Lint • 最初から入れたかった ◦ 開発中盤に突っ込んだけどまぁまぁ面倒だった • https://github.com/dart-lang/pedantic とかで厳し目にいれとくとよさそう • const
にすべきところは const にってルール入れてるけど微妙…… ◦ コスパ悪い感じ
CI/CD • 最初に作って自動配布するような仕組み作っておくと非常に楽になる • https://cirrus-ci.org/ が鉄板? • 上記 CI が
Docker イメージ公開してるので、それ使って GitLab Runner とかでも 回せる • Mac は Mac mini に GitLab Runner 入れて回したりもできる • 公式は Fastlane 押し
• Navigation を制するものが Flutter を制する • Navigation Stack は細かい作り込みが難しい ◦
ダイアログもモーダルも基本的にすべて Navigation の Stack に積まれる ◦ Android バックキーと iOS スワイプバックの違い ◦ ある画面からある画面への状態引き継ぎ • 特に Nested Navigation するなら最初にしっかり ◦ bottom tab 使う場合には必要になると思う • Navigator 2.0 の話がある。要注目 まずはハリボテを作り切る
State Management の検討 • https://flutter.dev/docs/development/data-and-backend/state-mgmt/option s をしっかり確認 • おすすめは BLoC
主軸、 setState 補助 • setState いらないのでは → 小さい Widget では効果的 ◦ 確かに setState を考えなしにやるとあきらかにパフォーマンス落ちたりする ◦ が、それはだいたいでかい Widget での話 ◦ setState 以外の方法は基本的に冗長で、コードが長くなりがち • 上記の方針をチームで検討し、共通認識を持つ
例外処理 • 例外が起こったら無視するのか、ログだけ残すのか、トーストで済ますのか、ダイ アログを出すのか • BLoC 内で起こったエラーをどう処理してやるかは結構課題 • 例外処理も UI
はすべて UI Widget 側でやったほうがよい ◦ 無理やり BuildContext 持ってきてダイアログを表示したりしてしまったが後悔してる ◦ (想定してない BuildContext で呼ばれたり……)
開発後期に Golden テスト • 作るものにもチームにもよるけど、デザイン面のデグレが割と起きやすい気がして いる • 後半になってデザインが固まってきたら、 Golden テストを書きたい
• https://medium.com/flutter-community/flutter-golden-tests-compare-widget s-with-snapshots-27f83f266cea
おまけ: 率直な感想 Q. Flutter は好き? A. 好き。大体のコンポーネントが多少無 茶してもヌルヌル動く Q. 次
Native アプリ作るなら? A. Flutter!! Q. Dart は好き? A. 正直微妙。強いて言うなら NNBD はや くきて