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
14
17k
High 意識 Android - Mercari Day
Presentation at #mercariday
Motohiro Takayama
January 20, 2017
Tweet
Share
More Decks by Motohiro Takayama
See All by Motohiro Takayama
4 Years Startup & Architecture
mootoh
3
1k
近未来的並列 LL
mootoh
1
300
Other Decks in Technology
See All in Technology
사이드 프로젝트를 20번 실패한 주니어의 오답노트 훔쳐보기(feat. KMP)
yjyoon
0
560
入社半年で PTE に! 元海外在住者が語る Google Cloud × G-genで 成長する秘訣
risatube
PRO
0
130
もうVPNは古い? VPNを使わずに オンプレサーバーを 管理する手法あれこれ
ebibibi
0
160
空が堕ち、大地が割れ、海が涸れた日~もしも愛用しているフレームワークが開発停止したら?~ #phperkaigi 2025
77web
2
850
非エンジニアにも伝えるメールセキュリティ / Email security for non-engineers
ykanoh
10
2.3k
単一の深層学習モデルによる不確実性の定量化の紹介 ~その予測結果正しいですか?~
ftakahashi
PRO
3
450
AWS のポリシー言語 Cedar を活用した高速かつスケーラブルな認可技術の探求 #phperkaigi / PHPerKaigi 2025
ytaka23
7
1.1k
EM初心者として半年間マネジャーをやってみて分かったこと
sansantech
PRO
0
150
30代エンジニアが考える、エンジニア生存戦略~~セキュリティを添えて~~
masakiokuda
4
1.6k
ドメインイベントを活用したPHPコードのリファクタリング
kajitack
0
580
Oracle Cloud Infrastructure:2025年3月度サービス・アップデート
oracle4engineer
PRO
0
180
パスキー導入の課題と ベストプラクティス、今後の展望
ritou
0
180
Featured
See All Featured
Site-Speed That Sticks
csswizardry
4
440
Why Our Code Smells
bkeepers
PRO
336
57k
Writing Fast Ruby
sferik
628
61k
Typedesign – Prime Four
hannesfritz
41
2.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Designing for Performance
lara
605
69k
Testing 201, or: Great Expectations
jmmastey
42
7.3k
How STYLIGHT went responsive
nonsquared
99
5.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
GraphQLの誤解/rethinking-graphql
sonatard
69
10k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Faster Mobile Websites
deanohume
306
31k
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