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 @ Scale
Search
rallat
April 13, 2018
Technology
0
24k
Android @ Scale
5 minute talk at Shibuya APK
rallat
April 13, 2018
Tweet
Share
More Decks by rallat
See All by rallat
Effective java 2 Effective Kotlin short version
rallat
0
99
Effective Java to Effective Kotlin
rallat
8
1.3k
Android at Scale in Mercari
rallat
0
130
App development pragmatic best practices
rallat
0
170
Droidkaigi Smoke and Mirrors
rallat
0
98
Smoke and mirrors
rallat
2
610
AndroidDevLikeAProDroidconSF
rallat
17
3.9k
Android development like a pro
rallat
77
14k
Building First Class Android Sdks
rallat
7
720
Other Decks in Technology
See All in Technology
RSCの時代にReactとフレームワークの境界を探る
uhyo
6
540
ここ一年のCCoEとしてのAWSコスト最適化を振り返る / CCoE AWS Cost Optimization devio2025
masahirokawahara
1
1k
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
420
おやつは300円まで!の最適化を模索してみた
techtekt
PRO
0
250
実践データベース設計 ①データベース設計概論
recruitengineers
PRO
4
2k
クラウドセキュリティを支える技術と運用の最前線 / Cutting-edge Technologies and Operations Supporting Cloud Security
yuj1osm
2
250
『FailNet~やらかし共有SNS~』エレベーターピッチ
yokomachi
1
190
コスト削減の基本の「キ」~ コスト消費3大リソースへの対策 ~
smt7174
2
310
LLM翻訳ツールの開発と海外のお客様対応等への社内導入事例
gree_tech
PRO
0
420
7月のガバクラ利用料が高かったので調べてみた
techniczna
3
810
【Grafana Meetup Japan #6】Grafanaをリバプロ配下で動かすときにやること ~ Grafana Liveってなんだ ~
yoshitake945
0
220
攻撃と防御で実践するプロダクトセキュリティ演習~導入パート~
recruitengineers
PRO
3
1.7k
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
328
39k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Optimizing for Happiness
mojombo
379
70k
Site-Speed That Sticks
csswizardry
10
800
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
The Language of Interfaces
destraynor
160
25k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Documentation Writing (for coders)
carmenintech
73
5k
A better future with KSS
kneath
239
17k
Transcript
Android @ Scale
Israel Ferrer Camacho @rallat
MV
MV WW
WW = “whatever works”
Define Principles
Apply Principles
with Consistency Apply Principles
Principles must evolve
Principles?
Dependency Injection
Dependency Injection
Dependency Injection Allows to declare dependencies of an object upfront.
Dependency Injection Allows to declare dependencies of an object upfront.
This helps to easily mock dependencies and unit test the object
Single Responsibility
None
View layer
UI Manipulation
UI Manipulation
Logic layer UI Manipulation
Screen Behavior UI Manipulation
Screen Behavior UI Manipulation
Screen Behavior UI Manipulation Data layer
Screen Behavior UI Manipulation Repository Interface Network DB Memory cache
Complex screens
Complex screens Multiple logic layer components each with a single
responsibility.
Complex screens Multiple logic layer components each with a single
responsibility. Logic layer components can subscribe to events tied to their logic (E.g. Rx, EventBus)
Shared logic
Shared logic If the view is shared you can create
a 3 layered complete feature component.
Shared logic If the view is shared you can create
a 3 layered complete feature component. If the view is not share then add another layer…
Data layer View layer Logic layer
Use cases Screen behavior View layer Data layer
Screen behavior View layer Data layer
Screen behavior View layer Data layer Sort Items
Screen behavior View layer Data layer Sort Items Buy Item
Screen behavior View layer Data layer Sort Items Buy Item
Like Item
Screen behavior View layer Data layer Sort Items Buy Item
Like Item Comment Item
Goal
Goal Each layer has a reason to exist.
Goal Each layer has a reason to exist. Consistency in
codebase
Goal Each layer has a reason to exist. Consistency in
codebase Testable logic layer
Goal Each layer has a reason to exist. Consistency in
codebase Testable logic layer Reusable of logic layer
Do Not Over-Engineer
Do Not Over-Engineer Libraries, patterns are tools not goals
Do Not Over-Engineer Libraries, patterns are tools not goals The
goal is to ship and maintain speed of development
Questions? @rallat