SlideShare a Scribd company logo
1 of 20
Download to read offline
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

What's hot

What's hot (20)

【Unity道場】物理シミュレーション完全マスター
【Unity道場】物理シミュレーション完全マスター【Unity道場】物理シミュレーション完全マスター
【Unity道場】物理シミュレーション完全マスター
 
Mobilitydev2019 10 31_slideshare
Mobilitydev2019 10 31_slideshareMobilitydev2019 10 31_slideshare
Mobilitydev2019 10 31_slideshare
 
【Unite Tokyo 2019】Render Streaming - WebRTC を用いたストリーミングソリューション
【Unite Tokyo 2019】Render Streaming - WebRTC を用いたストリーミングソリューション【Unite Tokyo 2019】Render Streaming - WebRTC を用いたストリーミングソリューション
【Unite Tokyo 2019】Render Streaming - WebRTC を用いたストリーミングソリューション
 
IETFの道しるべ-IETFの歩き方-20230124.pdf
IETFの道しるべ-IETFの歩き方-20230124.pdfIETFの道しるべ-IETFの歩き方-20230124.pdf
IETFの道しるべ-IETFの歩き方-20230124.pdf
 
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/EloquentQoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/Eloquent
 
第六回全日本コンピュータビジョン勉強会資料 UniT (旧題: Transformer is all you need)
第六回全日本コンピュータビジョン勉強会資料 UniT (旧題: Transformer is all you need)第六回全日本コンピュータビジョン勉強会資料 UniT (旧題: Transformer is all you need)
第六回全日本コンピュータビジョン勉強会資料 UniT (旧題: Transformer is all you need)
 
ROSでつながるVRChat
ROSでつながるVRChatROSでつながるVRChat
ROSでつながるVRChat
 
Cartographer と Autoware を用いた自律走行
Cartographer と Autoware を用いた自律走行Cartographer と Autoware を用いた自律走行
Cartographer と Autoware を用いた自律走行
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
オープンソース SLAM の分類
オープンソース SLAM の分類オープンソース SLAM の分類
オープンソース SLAM の分類
 
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
 
第1回 配信講義 計算科学技術特論A (2021)
第1回 配信講義 計算科学技術特論A (2021)第1回 配信講義 計算科学技術特論A (2021)
第1回 配信講義 計算科学技術特論A (2021)
 
メタバースのビジネスモデルと技術限界
メタバースのビジネスモデルと技術限界メタバースのビジネスモデルと技術限界
メタバースのビジネスモデルと技術限界
 
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
 
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
OSTree: OSイメージとパッケージシステムの間にGitのアプローチをOSTree: OSイメージとパッケージシステムの間にGitのアプローチを
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
 
WebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボットWebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボット
 
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャ
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
 
研修成果プレゼン資料
研修成果プレゼン資料研修成果プレゼン資料
研修成果プレゼン資料
 

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

論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10
Noritada Shimizu
 
Fluentdcasual 02-haikanko
Fluentdcasual 02-haikankoFluentdcasual 02-haikanko
Fluentdcasual 02-haikanko
Naotoshi Seo
 
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Noritada Shimizu
 
すまべんLite@関西#4
すまべんLite@関西#4すまべんLite@関西#4
すまべんLite@関西#4
Shin Ise
 
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
Win/Mac/Android/iOS向けクロスプラットフォーム開発にXamarinがうまくハマりそうだった話Win/Mac/Android/iOS向けクロスプラットフォーム開発にXamarinがうまくハマりそうだった話
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
Takuya Kikuchi
 

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

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

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