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
94
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
97
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
710
Other Decks in Technology
See All in Technology
グループ ポリシー再確認 ③
murachiakira
0
140
AIに実況させる / AI Streamer
motemen
3
1.2k
テスト設計チュートリアル ちびこん編 ’25
omn
1
440
OSMnx Galleryの紹介
mopinfish
0
120
オープンソースとビジネス: 位置情報の世界からみえる流れ / 札幌IT石狩鍋#2
sorami
0
220
Microsoft Season of Agent AI エージェントの使用開始
takas0522
0
120
declaration mergingの威力:ライブラリアップデート時の書き換え作業を90%短縮するテクニック
yutake27
2
250
Machine Intelligence for Vision, Language, and Actions
keio_smilab
PRO
0
200
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
37k
Cloud Run を解剖して コンテナ監視を考える / Breaking Down Cloud Run to Rethink Container Monitoring
aoto
PRO
0
110
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
8
65k
VueUseから学ぶ実践TypeScript #TSKaigi #TSKaigi2025
bengo4com
3
5.3k
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
41
2.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
The Pragmatic Product Professional
lauravandoore
33
6.6k
Designing for Performance
lara
608
69k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
How to Ace a Technical Interview
jacobian
276
23k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
Building Adaptive Systems
keathley
41
2.6k
Docker and Python
trallard
44
3.4k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
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