Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Android @ Scale
Search
rallat
April 13, 2018
Technology
24k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android @ Scale
5 minute talk at Shibuya APK
rallat
April 13, 2018
More Decks by rallat
See All by rallat
Effective java 2 Effective Kotlin short version
rallat
0
140
Effective Java to Effective Kotlin
rallat
8
1.4k
Android at Scale in Mercari
rallat
0
160
App development pragmatic best practices
rallat
0
200
Droidkaigi Smoke and Mirrors
rallat
0
150
Smoke and mirrors
rallat
2
680
AndroidDevLikeAProDroidconSF
rallat
17
4k
Android development like a pro
rallat
77
14k
Building First Class Android Sdks
rallat
7
750
Other Decks in Technology
See All in Technology
プロダクトが成長すると、 プロダクトマネージャーの仕事はどう変わるのか - 「まず作る」から「小さく学び、確かめながら進む」へ
sansantech
PRO
1
370
アカウント統制の健康診断
kenichinakamura
1
200
AIで選択肢が広がった組織設計の理想と現実
konifar
14
5.8k
Codex を使った障害対応机上演習の実際
orgachem
PRO
0
360
Vue で書く 空間コンピューティング、TresJS と WebXR を使ったXR デバイスのフロントエンド開発
hiranuma
0
110
AIエージェント時代、Kaggleにどう取り組むか
takanao
1
200
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
2
150
契約で守るコンパウンドプロダクトのデザインシステム
yug1224
1
1.5k
AWS DevOps Agentはどこまで任せられるか 〜機能の現在地と、機能拡張の実践〜
nyankotaro
0
250
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
13k
Let's Change Our World—Again
snoozer05
PRO
6
690
外国人エンジニアがVueプロトタイプで仕様を合わせている話 / Vue Fes Japan 2026 LT
eluwing
0
170
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
143
7.8k
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
GitHub's CSS Performance
jonrohan
1033
470k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Documentation Writing (for coders)
carmenintech
77
5.6k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
Speed Design
sergeychernyshev
33
2.2k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Crafting Experiences
bethany
1
390
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
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