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
53
ふくもく会 LT / Flutter やりなおし
今 Flutter で 1 から書くならこの辺に気を使うかなーというものまとめ。
他にも多分いっぱいあるけど思いつくものベースで。
Takahiro Yamakoshi
January 25, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
Kotlin 2.2が切り拓く: コンテキストパラメータで書く関数型DSLと新しい依存管理のかたち
knih
0
190
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
510
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
10
2k
TransformerからMCPまで(現代AIを理解するための羅針盤)
mickey_kubo
7
5.9k
釣り地図SNSにおける有料機能の実装
nokonoko1203
0
200
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
250
Leading Effective Engineering Teams in the AI Era
addyosmani
7
700
AIのバカさ加減に怒る前にやっておくこと
blueeventhorizon
0
130
React Nativeならぬ"Vue Native"が実現するかも?_新世代マルチプラットフォーム開発フレームワークのLynxとLynxのVue.js対応を追ってみよう_Vue Lynx
yut0naga1_fa
2
2k
Dive into Triton Internals
appleparan
0
390
Inside of Swift Export
giginet
PRO
1
290
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
490
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.6k
Code Reviewing Like a Champion
maltzj
526
40k
Bash Introduction
62gerente
615
210k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
950
The Cult of Friendly URLs
andyhume
79
6.6k
Fireside Chat
paigeccino
41
3.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Writing Fast Ruby
sferik
630
62k
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 はや くきて