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
Androidアプリをリアーキテクチャした話/Android-rearchitecture
Search
morizooo
September 17, 2021
Technology
1
190
Androidアプリをリアーキテクチャした話/Android-rearchitecture
morizooo
September 17, 2021
Tweet
Share
More Decks by morizooo
See All by morizooo
Flipperを活用した デバッグ効率化について/flipper
morizooo
0
650
Mirrativ-android-efforts
morizooo
1
7.2k
Android上でUnityを動かすためのノウハウ / Android with Unity
morizooo
2
740
消費型課金を導入する / Introduction to consumable In-App Billing
morizooo
0
440
カンファレンスアプリを作ったぞ!! / builderscon tokyo 2017 LT
morizooo
0
3.1k
Other Decks in Technology
See All in Technology
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
150
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
スクラム成熟度セルフチェックツールを作って得た学びとその活用法
coincheck_recruit
1
140
Can We Measure Developer Productivity?
ewolff
1
150
Platform Engineering for Software Developers and Architects
syntasso
1
520
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
300
複雑なState管理からの脱却
sansantech
PRO
1
140
Featured
See All Featured
Designing the Hi-DPI Web
ddemaree
280
34k
Fireside Chat
paigeccino
34
3k
Speed Design
sergeychernyshev
25
620
Faster Mobile Websites
deanohume
305
30k
Being A Developer After 40
akosma
86
590k
Navigating Team Friction
lara
183
14k
Music & Morning Musume
bryan
46
6.2k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Why Our Code Smells
bkeepers
PRO
334
57k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
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したメンバーからも好評 • 更に一緒に改善していく仲間を探しています!!! まとめ