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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
110
Effective Java to Effective Kotlin
rallat
8
1.3k
Android at Scale in Mercari
rallat
0
140
App development pragmatic best practices
rallat
0
180
Droidkaigi Smoke and Mirrors
rallat
0
110
Smoke and mirrors
rallat
2
640
AndroidDevLikeAProDroidconSF
rallat
17
4k
Android development like a pro
rallat
77
14k
Building First Class Android Sdks
rallat
7
720
Other Decks in Technology
See All in Technology
Agent Ready になるためにデータ基盤チームが今年やること / How We're Making Our Data Platform Agent-Ready
zaimy
0
160
「技術的にできません」を越えて価値を生み出せ──研究開発チームをPMが率いて生み出した価値創出
hiro93n
1
320
AWS CDK の目玉新機能「Mixins」とは / cdk-mixins
gotok365
2
250
AIエージェントで変わる開発プロセス ― レビューボトルネックからの脱却
lycorptech_jp
PRO
2
660
「OSアップデート:年に一度の「大仕事」を乗り切るQA戦略」_Mobile Tech Flex 〜4社合同!私たちのモバイル開発自慢大会〜
gu3
0
220
Kubernetes環境周りの責任範囲をいい機会なので考える / Taking the Opportunity to Clarify Kubernetes Responsibilities
kohbis
1
110
三菱UFJ銀行におけるエンタープライズAI駆動開発のリアル / Enterprise AI_Driven Development at MUFG Bank: The Real Story
muit
10
17k
Snowflakeデータ基盤で挑むAI活用 〜4年間のDataOpsの基礎をもとに〜
kaz3284
1
130
失敗できる意思決定とソフトウェアとの正しい歩き方_-_変化と向き合う選択肢/ Designing for Reversible Decisions
soudai
PRO
7
520
今、求められるデータエンジニア
waiwai2111
2
1.4k
社内でAWS BuilderCards体験会を立ち上げ、得られた気づき / 20260225 Masaki Okuda
shift_evolve
PRO
1
100
LINEヤフーにおけるAI駆動開発組織のプロデュース施策
lycorptech_jp
PRO
0
140
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
3
2.6k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
270
How to train your dragon (web standard)
notwaldorf
97
6.5k
Design in an AI World
tapps
0
160
Odyssey Design
rkendrick25
PRO
2
520
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
130
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
370
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.3k
The Spectacular Lies of Maps
axbom
PRO
1
570
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
310
Joys of Absence: A Defence of Solitary Play
codingconduct
1
300
Ruling the World: When Life Gets Gamed
codingconduct
0
160
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