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
High 意識 Android - Mercari Day
Search
Motohiro Takayama
January 20, 2017
Technology
17k
14
Share
High 意識 Android - Mercari Day
Presentation at #mercariday
Motohiro Takayama
January 20, 2017
More Decks by Motohiro Takayama
See All by Motohiro Takayama
4 Years Startup & Architecture
mootoh
3
1.1k
近未来的並列 LL
mootoh
1
330
Other Decks in Technology
See All in Technology
Building a Standalone Programming Environment
harukasan
PRO
1
150
Choose your own adventure in agentic design patterns
glaforge
0
160
プラットフォームエンジニアリングの実践 - AWS コンテナサービスで構築する社内プラットフォーム / AWS Containers Platform Meetup #1
literalice
1
220
20260428_Product Management Summit_Loglass_JoeHirose
loglassjoe
3
4.1k
「AIに部下10人」を3ヶ月運用してわかった、生成AI駆動開発のリアル
yoheinabe777
0
110
マルチプロダクトの信頼性を効率良く保っていくために
kworkdev
PRO
0
180
"おまじない"を卒業する ボイラープレート再入門
shunsuke_1b
1
120
Do Vibe Coding ao LLM em Produção para Busca Agêntica - TDC 2026 - Summit IA - São Paulo
jpbonson
3
160
Chasing Real-Time Observability for CRuby
whitegreen
0
280
Good Enough Types: Heuristic Type Inference for Ruby
riseshia
1
320
20260428_Product Management Summit_tadokoroyoshiro
tadokoro_yoshiro
14
15k
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
2.5k
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
170
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
200
Designing Experiences People Love
moore
143
24k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
680
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
So, you think you're a good person
axbom
PRO
2
2k
What's in a price? How to price your products and services
michaelherold
247
13k
Designing for Performance
lara
611
70k
Producing Creativity
orderedlist
PRO
348
40k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
170
Color Theory Basics | Prateek | Gurzu
gurzu
0
300
Darren the Foodie - Storyboard
khoart
PRO
3
3.3k
Transcript
High ҙࣝ Android mootoh
FAQ
: ϝϧΧϦͬͯ͏ ΞϓϦͯ͠Δ͠ Δ͜ͱͳ͍Μ͡Όͳ͍ͷ?
A: ·ͩ·ͩ·ͩ·ͩ ·ͩ·ͩ·ͩ·ͩ ͋Δ
2016/02~ • νϟϨϯδ • Χϧνϟʔ • ະདྷ
2016
Stats % git diff --shortstat `git log --pretty=%H --since 'last
year' | tail -n 1` → 2,029 files changed, +385,707, -170,628 ▪▪▪▪ % git log --pretty=%H --since 'last year' | wc -l → 4,049 commits
Team of 4 in "# # "
Team of 4→7 in "#$ $ # "
ެ҆9՝
“զʑͷؒʹɺνʔϜϓϨʔͳͲͱ͍͏ ߹ͷΑ͍ݴ͍༁ଘࡏͤΜɻ ͋Δͱ͢ΕελϯυϓϨʔ͔Βੜ͡Δɺ νʔϜϫʔΫ͚ͩͩɻ” — ߥרେี, 2002
ެ҆9՝Ϟσϧ • ߈֪ػಈୂ S.A.C • ཱࣗͨ͠ଟ༷ͳϝϯόʔ • ݸʑͷ؍͔ΒϓϩμΫτ/৫ͷվળΛ ࣮ફ͢Δ
FAQ
: ̓ਓΤϯδχΞ͍Ε ेͰ͠ΐ
A: ·ΔͰΓͳ͍ • #, ", $ ͦΕͧΕʹ͔Ε͍ͯΔ • ϓϩδΣΫτ͋ͨΓ 1~2ਓ
• ͬͱ͍ΕΕΔ͜ͱΛ૿ͤΔ
Challenges
None
ଠฏ༸Λ·͙ͨ Code Review " PR # Review " Revise #
Review # LGTM " Revise " Merge ☀ ☀ ☀ ☀ PR ͷཹ͕࣌ؒ͘ͳΔ → ϦϦʔε
Solution A
6:30am standup meeting • " ϝϯόʔ͕Έͳ༮ࣇ࣋ͪͩͬͨ → ڧ੍ૣى͖ • #
ʹ༏͍͠ (ன) • Նͩͬͨ → ே໌Δ͍ͷͰૣى͖͍͢͠ → ࢼ͠ʹͬͯΈΑ͏
݁Ռ: • • Sync ͷճ͕૿͑ͨ͜ͱʹΑΓɺϨϏϡʔͷޮ ্͕͕ͬͨ • • ࢠ͕6am ʹى͖ΔͷͰग़੮Ͱ͖ͳ͍
• ҙਤͷ֬ೝͳͲͰ͖Δ͕ PR ϕʔεͳͷͰ async
Solution B https://screenhero.com
ScreenHero • ϦϞʔτϖΞϓϩ • protected void synchronized review { …
} • ࣌ؒ߹ΘͤΔඞཁ͕͋Δ
݁Ռ • ίϛϡχέʔγϣϯͷଳҬ͕͍ • ͍͚ • ॏ͍ϨϏϡʔͷ࣌ʹཱͭ • PR Ͱ2-3ΓऔΓͯͯ͠Β͕͔ͪ͋ͳ͍
→ ͭͳ͍Ͱνϟνϟͬͱղܾ
# " $ Or…
ۃ Meeting • ཱྀ͍͍ͩͨඅ30~100ສ • ͍͍ͩͨڑ • פ͍⛄️
ݟ • ૣى͖Ωπ͍͕ʹཱͭ • ෳࡶʹԠͯ͡ίϛϡχέʔγϣϯͷଳҬΛม͑Δ • ͕࣌ࠩൃੜ͠ͳ͍Α͏ʹνʔϜΛ͚Δͷ • ۃΛఘΊͳ͍❄
Challenges
https://commons.wikimedia.org/wiki/File:Adobe_guadalupe_wine_barrel.jpg ख़
ख़ίʔυ • ϓϩμΫτ։ൃΛ࠷ͰલʹਐΊ͖ͯͨ • 3ख़ (࣌) • ݹΊͷςΫϊϩδ • (ಛʹ)৽͍͠ϝϯόʔʹͱͬͯมߋͮ͠Β͍
ݹΊͷςΫϊϩδ 34 • Networking: • HttpUrlConnection / Apache HttpClient with
ൿͷϨγϐ • Async Operation: • Callback Interface / EventBus • Singletons • Giant Activities
→एฦΓ 5 • Networking: okhttp • Async Operation: RxJava •
Singletons: Dagger2 • Giant Activities: MVVM
ϦϑΝΫλϦϯά͍͕ͨ͠… • Ҋ݅։ൃͰύπύπ • ϦϑΝΫλϦϯά͢Δ͜ͱͰσάϨ͢Δ͜ͱ ͕͋ͬͨ • QA ͔Βͷ৴པஷۚ㽊
࡞ઓ⚽ • Ҋ݅ͷεέδϡʔϧʹ৫ΓࠐΉ • ϦϑΝΫλͨ͠ํ͕ૣ͍ূڌΛੵ͢Δ • ςετͰσάϨΛࢭ͠ɺ৴པΛஷΊΔ
ݟ • ৽͍͠ػೳ࣮Λ͢ΔલʹϦϑΝΫλϦϯά • εέδϡʔϧʹ৫ΓࠐΉ • ͡Θ͡Θ͛Δ • ಆ͍ଓ͚ΔɺఘΊͳ͍
Challenges
# " 1 → 8 0 → 1 Product Phase
$ # " 0 → 1 8 → 10 1
→ 8 Product Phase
Repository # " + $ • ONE OK REPOSITORY •
flavor Ͱ͚͍ͯͨ
• มߋͮ͠Β͍ • isJP(), isUS(), isUK() • #͚ͷมߋΛ͍͚ͨͩ͠ͳͷʹ"ͷίʔυΛؾʹ͠ͳ͍ͱ͍͚ͳ͍ •
࣌ࠩ (ઌड़) • QA େม • Өڹൣғ: #͚ͷมߋ͚ͩͲɺ΄Μͱʹ"յΕͯͳ͍? • Region ͝ͱͰ phase ͕ҟͳΔ • ༏ઌ։ൃελΠϧҟͳΔ
Solutions • ͻͱ·ͣ Branch Λ͚ͨ ⎇ • Fork ͨ͠ΒΔͷࠔ •
ͬͱ Region ͕૿͑ͨΒ?
Challenges
ID ج൫
ID ج൫ • Single Sign On తͳͷ • Mercari <->
Souzoh • iOS / Android ͷϥΠϒϥϦॻ͘͜ͱʹͳͬͨ
ݸਓతνϟϨϯδ • Kotlin • ຊମΞϓϦʹಋೖ᪳ΘΕΔ͕ϥΠϒϥϦʹͳΒ • gRPC • HTTP/2, Protobuf,
ΫϩεϓϥοτϑΥʔϜ
gRPC "# • #-"Ͱ gRPC ௨৴͢Δͱ͞ΔσόΠε͕ • " Ͱ͕ൃੜ͠ͳ͍
• ϥΠϒϥϦͷԞਂ͍ͱ͜Ζʹ͕͋Γͦ͏ • ී௨ͷ௨৴͕ͳ͍ • ͔͕࣌ؒ͠͠ͳ͍⌛
gRPC-gateway ? • gRPC ͷαʔϏεʹ RESTful JSON API ͰΞΫ ηεͰ͖Δ
• ී௨ͷ HTTPS ΞΫηεͭͳ͕Δ • ճආ
ݟ • Kotlin • ϥΠϒϥϦɺςετͳͲ͔Β߈ΊΔ → μϝʔδগͳ͍ • ϨϏϡʔ͞ΕͮΒ͍ •
gRPC • REST ಀ͕͛ͩʹཱͭ • ίϯτϦϏϡʔγϣϯͰ͖Δ༨༟Λ͓ͯ͘͠
Future
·ͩ·ͩ·ͩ·ͩ·ͩ·ͩ͋Δ • ܻҧ͍ʹͨ͘͞Μͷ A/B ςετΛ ؆୯ʹճͤΔΈ • ଞ Region ্ཱͪ͛
• Inter-Region ചങ • 3D ग़ɺ VR γϣοϐϯά (ໝ)
Wrap Up
Wrap up • ·ͩ·ͩνϟϨϯδ͕͋Δ • ٕज़త & ϓϩμΫτత • ެ҆̕՝Ϟσϧ
“و༷ɺ͍͍Λ͍ͯ͠Δͳɻ ࠓ͔Βࢲͷ෦ԼʹͳΕɻ” — ಽૉࢠ, 2004
JOIN US