SlideShare a Scribd company logo
LT 土佐陽生
開発しているflutterアプリをリファクタリング
してみた
自己紹介
• 土佐陽生(とさ)
• twitter(@tosa_now)
• 明治大学理工学部情報科学科3年
• Go, Ruby, PHP, Dart(flutter)
• チェンソーマンにハマっています
flutter/Dart概要
(1)
Flutter is Google’s UI toolkit for building beautiful, natively compiled
applications for mobile, web, and desktop from a single codebase.
-> (ぼんやり訳) iOS, android, webアプリを作成できる!
(引用元: https://flutter.dev/)
flutter/Dart概要
(2)
• HotReload
• Material Designにのっとったアプリ開発がとてもやりやすい!
• Dartと呼ばれる一つの言語で作成されている
作成中のアプリケーション
作成中のアプリケーション
ディレクトリ構造
リファクタリングしようと思ったきっかけ
• コードが汚くなっていると開発意欲が下がる
• 初めてflutterで作成したアプリだったので学習していく内にいい書き方がわ
かってくる
• これからも開発が続きそう
• Fat ができ始めてきた
リファクタリング
静的解析の導入
• twitterのエンジニアさんに教えてもらった
• 真っ赤っか(Dartは型チェックが緩め)
• まずはこれを修正していくことでよりいいコードを目指す
analysis_options.yaml の導入
constやfinalをきちんとつける
静的解析(1)
asでしっかりと型を指定する
静的解析(2)
• dynamic型じゃだめ!しっかりとキャストしてあげる
を に変更
静的解析(3)
改善できなかったところ
静的解析(4)
VscodeからAndroidStdioへ
リファクタリング(2)
• メモリの効率化(8GBの環境だととても効く)
• 名称の変更が簡単にできる(Android Studio -> refactoring)
• performanceの計測ツールがある
リロードが頻繁に起こっている箇所の特定
リファクタリング(3)
• flutter performanceを使用してみてみる!
• レンダリング->データの取得->
レンダリング->データの取得…
と永遠にリロードが起こっている箇所が…
ルーティングの修正
リファクタリング(4)
• モデルを意識して組み立てる
• railsっぽく…
状態管理の見直し
リファクタリング(5)
• 状態管理をすべきところにロジックを書きすぎていた(service層へ移動)
• こちらもモデルを中心に考えて作成(homeroomのデータは
homeroom_provider.dartに)
現在はここを取り組み中!
このあとはWidgetの切り分けとかやっていきたい…(願望)
まとめ
• 静的解析ツールを用いて∼らしくないコードをきれいにしていく
• ボトルネックになっている場所を特定して改善
• 処理をあるべき場所に移す
• ルーティングはモデルを意識して変更
• でも一番は..(テストを書きましょう)
• ios/androidアプリの開発難易度が下がります!
• flutter楽しいです!!
ありがとうございました!

More Related Content

PPT
Natural language processing
PDF
MNE-Python Coregistration
PPTX
Mobile Application Development Process
PDF
Web scraping in python
PPTX
NLP Bootcamp
PDF
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
PPTX
Natural Language processing
PDF
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
Natural language processing
MNE-Python Coregistration
Mobile Application Development Process
Web scraping in python
NLP Bootcamp
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Natural Language processing
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」

What's hot (20)

ODP
Introduction to Mobile Application Development
PPTX
Sentiment analysis using naive bayes classifier
PDF
Natural Language Processing (NLP)
PDF
MongoDB Cheat Sheet – Quick Reference
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
PDF
【15-A-4】Redmine + Lychee 導入のアンチパターン
PPTX
Expense tracker
PDF
Twitter sentimentanalysis report
PPTX
Day: 1 Introduction to Mobile Application Development (in Android)
PPTX
Java EE パフォーマンスTips #glassfish_jp
PDF
継承やめろマジやめろ。 なぜイケないのか 解説する
PDF
Python Basics | Python Tutorial | Edureka
PPTX
Chatbot ppt
PPTX
ExpenseTracker(ppt).pptx
PPTX
PPTX
PDF
Lecture: Question Answering
PPTX
Sentiment Analysis Using Product Review
PPTX
レガシーコードに向き合ってみた話
Introduction to Mobile Application Development
Sentiment analysis using naive bayes classifier
Natural Language Processing (NLP)
MongoDB Cheat Sheet – Quick Reference
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
【15-A-4】Redmine + Lychee 導入のアンチパターン
Expense tracker
Twitter sentimentanalysis report
Day: 1 Introduction to Mobile Application Development (in Android)
Java EE パフォーマンスTips #glassfish_jp
継承やめろマジやめろ。 なぜイケないのか 解説する
Python Basics | Python Tutorial | Edureka
Chatbot ppt
ExpenseTracker(ppt).pptx
Lecture: Question Answering
Sentiment Analysis Using Product Review
レガシーコードに向き合ってみた話
Ad

Similar to 自作flutterアプリをリファクタリングしてみた! (20)

PPTX
社内発表資料
PDF
Flutterやってみよう
PDF
DartPad+CodePenで、Flutterを体験してみよう
PPTX
Flex入門
PDF
論理思考とプログラミング 2013f#10
PPTX
きつねさんでもわかる Firefox OS コードリーディング入門
PDF
GDG Tokyo New Year Seminar 2018 -Dialogflow-
PDF
Fluentdcasual 02-haikanko
PPTX
Flutter first impression
PPTX
Trat_sprint3
PPTX
自己紹介とC# Devkitについて.pptx
PDF
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
PDF
できる!スマホアプリ:Webからはじまるアプリ for CMU16
PDF
[Potatotips]クロスプラットフォーム開発Tips
PDF
PHPカンファレンス福岡に 行ってきた
PDF
F*言語ワークショップ
PPTX
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
PDF
『こつこつ』ポートフォリオ用資料.pdf
PDF
ポートフォリオ用資料 (1).pdf
社内発表資料
Flutterやってみよう
DartPad+CodePenで、Flutterを体験してみよう
Flex入門
論理思考とプログラミング 2013f#10
きつねさんでもわかる Firefox OS コードリーディング入門
GDG Tokyo New Year Seminar 2018 -Dialogflow-
Fluentdcasual 02-haikanko
Flutter first impression
Trat_sprint3
自己紹介とC# Devkitについて.pptx
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
できる!スマホアプリ:Webからはじまるアプリ for CMU16
[Potatotips]クロスプラットフォーム開発Tips
PHPカンファレンス福岡に 行ってきた
F*言語ワークショップ
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
『こつこつ』ポートフォリオ用資料.pdf
ポートフォリオ用資料 (1).pdf
Ad

自作flutterアプリをリファクタリングしてみた!