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
52
ふくもく会 LT / Flutter やりなおし
今 Flutter で 1 から書くならこの辺に気を使うかなーというものまとめ。
他にも多分いっぱいあるけど思いつくものベースで。
Takahiro Yamakoshi
January 25, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
130
プロパティベーステストによるUIテスト: LLMによるプロパティ定義生成でエッジケースを捉える
tetta_pdnt
0
4.1k
AI Coding Agentのセキュリティリスク:PRの自己承認とメルカリの対策
s3h
0
230
速いWebフレームワークを作る
yusukebe
5
1.7k
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
1
450
Ruby×iOSアプリ開発 ~共に歩んだエコシステムの物語~
temoki
0
350
Putting The Genie in the Bottle - A Crash Course on running LLMs on Android
iurysza
0
140
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
420
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
870
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
4.1k
Performance for Conversion! 分散トレーシングでボトルネックを 特定せよ
inetand
0
3.2k
Ruby Parser progress report 2025
yui_knk
1
460
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
530
BBQ
matthewcrist
89
9.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
Balancing Empowerment & Direction
lara
3
620
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Optimizing for Happiness
mojombo
379
70k
Side Projects
sachag
455
43k
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 はや くきて