Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Androidアプリをリアーキテクチャした話/Android-rearchitecture
morizooo
September 17, 2021
Technology
1
73
Androidアプリをリアーキテクチャした話/Android-rearchitecture
morizooo
September 17, 2021
Tweet
Share
More Decks by morizooo
See All by morizooo
Flipperを活用した デバッグ効率化について/flipper
morizooo
0
180
Mirrativ-android-efforts
morizooo
1
6.4k
Android上でUnityを動かすためのノウハウ / Android with Unity
morizooo
2
430
消費型課金を導入する / Introduction to consumable In-App Billing
morizooo
0
270
カンファレンスアプリを作ったぞ!! / builderscon tokyo 2017 LT
morizooo
0
2.4k
Other Decks in Technology
See All in Technology
開発者のための GitHub Organization の安全な運用と 継続的なモニタリング
flatt_security
3
4k
[SRE NEXT 2022]メルカリグループにおけるSREs
srenext
0
550
ドキュメントの翻訳に必要なこと
mayukosawai
0
190
Remixの凄みを紹介したい
aiji42
4
3.1k
スクラムマスターの「観察」スキルを掘り下げる / Scrum Fest Niigata 2022
ama_ch
0
850
Data-Driven Healthcare - Techplay
kotaroito
0
120
srenext2022-skaru
mixi_engineers
PRO
1
1k
統計学と機械学習の違いと接点とは?
ueniki
0
150
AWS ChatbotでEC2インスタンスを 起動できるようにした
iwamot
0
170
【初心者向け】ググらずに!? ターミナル上で Pythonオブジェクトを調べよう
yumihiki
0
110
失敗を経験したあなたへ〜建設的なインシデントの振り返りを行うために実践するべきこと〜
nobuakikikuchi
0
210
Steps toward self-service operations in eureka
fukubaka0825
0
980
Featured
See All Featured
The Web Native Designer (August 2011)
paulrobertlloyd
74
1.9k
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
The Art of Programming - Codeland 2020
erikaheidi
32
5.8k
jQuery: Nuts, Bolts and Bling
dougneiner
56
6.4k
The Invisible Customer
myddelton
110
11k
Fontdeck: Realign not Redesign
paulrobertlloyd
73
4.1k
Designing for humans not robots
tammielis
241
23k
Writing Fast Ruby
sferik
612
57k
Designing with Data
zakiwarfel
91
3.9k
GitHub's CSS Performance
jonrohan
1020
410k
Building Better People: How to give real-time feedback that sticks.
wjessup
343
17k
Designing Experiences People Love
moore
130
22k
Transcript
Androidアプリを リアーキテクチャした話 2021.09.16 morizooo Tech Night © 2021 Mirrativ, Inc.
•Profile •morizooo(@morizo_999) •ミラティブAndroid担当(2018/2〜) •マイブーム:高級食パン,APEX
99 • リアーキテクチャをした理由 • リアーキテクチャを実施した流れ • 現在取り組んでいること 今日話すこと
目次 99 リアーキテクチャを した理由
99 • 副業メンバーからのフィードバック ◦ 既存のコードのキャッチアップがつらい ◦ ルールがないのでどのように書けばいか迷う • 既存コードが原因で離脱してしまうことも → チームとしてスケールするために見直しが必要
理由
99 • 厳密なルールがないのでActivityに処理が集中 ◦ 6000行のActivityが存在😇 • 最凶のBaseクラス ◦ すべてのActivityが1000行のクラスを継承 ◦
状態の変更が意図せず起こってしまう • EventBusでたらい回しにされる ◦ たらい回しの途中で状態が更新されていることもある • 度重なるパッチコード対応で意図がわからない • Android Annotationsの学習コスト 既存コードの問題の例
目次 99 リアーキテクチャを 実施した流れ
99 • Baseクラスを解体 • ライブラリへの依存(Android Annotationsなど)をなくす • パッケージ構造の整理 • Kotlin化する
詳細はTech Blogへ!! https://tech.mirrativ.stream/entry/android-dx 既存コードの問題を整理(2019/04 - 2019/10)
99 • Fluxアーキテクチャを選定 ◦ 状態管理の問題を解消できそうだった ◦ iOSもFluxを選定していた • Fluxでのリファレンス実装を作成 ◦
12月時点のPRで新規画面ではFlux実装を必須にした ◦ 現在でも都度都度議論して随時更新している 理想形の作成と周知(2019/10 - 2019/12)
99 FLUXアーキテクチャについて ActionCreator Dispatcher Store View User Interaction ActionEvent EventBus
State (BindModel)
99 • コードはTech Blogに詳細を書いたので見てください!! https://tech.mirrativ.stream/entry/2021/06/01/102044 FLUXアーキテクチャについて
99 • 触ったところをFluxに書き換えていくようにした ◦ プロダクト開発が最優先 ◦ 既存コードの変更はnice to have ◦
追加開発に時間がかかるようになってきたものは、長めに 開発期間をもらう等の交渉はした ◦ QA時に影響がありそうな部分は伝えて見てもらう ▪ targetSDKのバージョンアップはフルチェック → お祭りとして強気に変更していた FLUXアーキテクチャに置き換え(2020/01 -)
99 • 画面リニューアルの場合はまるっと書き換えた ◦ 既存のコードは引きづられるので見ないほうがいい • 更新がない画面はそのまま残っている ◦ リーアキテクチャするメリットが無い 現在では普段触る部分はFluxになっている
FLUXアーキテクチャに置き換え(2020/01 -)
目次 99 現在 取り組んでいること
99 • Multi Module化 ◦ ビルド速度早くしたい ◦ 機能単位のモジュールは作ったので移行中 • Jetpack
Composeの導入 ◦ 状態が以前の状態に左右されず処理がわかりやすい ◦ リファレンス実装作って導入済み ▪ 今は各々実装しながら議論しているところ 現在の取り組み
99 • 今QのOKR 現在の取り組み
99 • 段階的にリアーキテクチャをすすめた ◦ まずは既存コードの見通しをよくする ◦ 理想系を決めて周知し、プロダクト開発と一緒に書き換え ていく • リアーキテクチャの効果
◦ 副業時にコードが辛いと離脱した人も今では社員に! ◦ 最近Joinしたメンバーからも好評 • 更に一緒に改善していく仲間を探しています!!! まとめ