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
220
1
Share
Androidアプリをリアーキテクチャした話/Android-rearchitecture
morizooo
September 17, 2021
More Decks by morizooo
See All by morizooo
Flipperを活用した デバッグ効率化について/flipper
morizooo
0
800
Mirrativ-android-efforts
morizooo
1
7.6k
Android上でUnityを動かすためのノウハウ / Android with Unity
morizooo
2
850
消費型課金を導入する / Introduction to consumable In-App Billing
morizooo
0
530
カンファレンスアプリを作ったぞ!! / builderscon tokyo 2017 LT
morizooo
0
3.3k
Other Decks in Technology
See All in Technology
Swift Sequence の便利 API 再発見
treastrain
1
290
AIAgentと取り組むKaggle
508shuto
2
430
アプリブロック機能のつくりかたと、AIとHTMLの不合理な相性の良さについて
kumamotone
1
260
AI-Assisted Contributions and Maintainer Load - PyCon US 2026
pauloxnet
1
180
Fラン学生が考える、AI時代のデザインに執着した突破口
husengs7
1
220
生成AI時代に信頼性をどう保ち続けるか - Policy as Code の実践
akitok_
1
510
分断された OT と IT を繋ぐ架け橋 -Kubernetes が切り拓く 産業用組み込み製品の現在地 -
yudaiono
1
130
全社統制を維持しながら現場負担をどう減らすか〜プラットフォームチームとセキュリティチームで進めたSecurity Hub活用によるAWS統制の見直し〜/secjaws-security-hub-custom-insights
mhrtech
1
620
GitHub Copilot CLI で考える複数エージェント設計
tomokusaba
0
130
Pythonでベイズモデリング
soogie
0
140
Gaussian Splattingの実用化 - 映像制作への展開
gpuunite_official
0
200
AI Agent に“攻略本”を渡したら、150フォームの移行が回り始めた話/登壇資料(高橋 悟生)
hacobu
PRO
0
160
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Leo the Paperboy
mayatellez
7
1.8k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
370
Thoughts on Productivity
jonyablonski
76
5.2k
Optimizing for Happiness
mojombo
378
71k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
How GitHub (no longer) Works
holman
316
150k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Automating Front-end Workflow
addyosmani
1370
210k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
370
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したメンバーからも好評 • 更に一緒に改善していく仲間を探しています!!! まとめ