Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Androidアプリをリアーキテクチャした話/Android-rearchitecture
Search
morizooo
September 17, 2021
Technology
1
210
Androidアプリをリアーキテクチャした話/Android-rearchitecture
morizooo
September 17, 2021
Tweet
Share
More Decks by morizooo
See All by morizooo
Flipperを活用した デバッグ効率化について/flipper
morizooo
0
760
Mirrativ-android-efforts
morizooo
1
7.5k
Android上でUnityを動かすためのノウハウ / Android with Unity
morizooo
2
820
消費型課金を導入する / Introduction to consumable In-App Billing
morizooo
0
510
カンファレンスアプリを作ったぞ!! / builderscon tokyo 2017 LT
morizooo
0
3.3k
Other Decks in Technology
See All in Technology
Noを伝える技術2025: 爆速合意形成のためのNICOフレームワーク速習 #pmconf2025
aki_iinuma
2
740
Active Directory 勉強会 第 6 回目 Active Directory セキュリティについて学ぶ回
eurekaberry
16
5.9k
GitLab Duo Agent Platformで実現する“AI駆動・継続的サービス開発”と最新情報のアップデート
jeffi7
0
110
AI/MLのマルチテナント基盤を支えるコンテナ技術
pfn
PRO
4
680
Digitization部 紹介資料
sansan33
PRO
1
6.1k
Introduction to Bill One Development Engineer
sansan33
PRO
0
320
Claude Code Getting Started Guide(en)
oikon48
0
130
AIにおける自由の追求
shujisado
2
470
「え?!それ今ではHTMLだけでできるの!?」驚きの進化を遂げたモダンHTML
riyaamemiya
9
4.4k
pmconf2025 - データを活用し「価値」へ繋げる
glorypulse
0
380
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
21k
ML PM Talk #1 - ML PMの分類に関する考察
lycorptech_jp
PRO
1
190
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
120
20k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Bash Introduction
62gerente
615
210k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Making Projects Easy
brettharned
120
6.5k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
BBQ
matthewcrist
89
9.9k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
700
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
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したメンバーからも好評 • 更に一緒に改善していく仲間を探しています!!! まとめ