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
High 意識 Android - Mercari Day
Search
Motohiro Takayama
January 20, 2017
Technology
17k
14
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
340
Other Decks in Technology
See All in Technology
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
130
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
810
生成AIで高い生産性を求められて、 悩み、乗り越えた話
mot_techtalk
2
160
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.7k
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
190
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
170
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.5k
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
170
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
670
予測不能な実行エージェントを安全にサクッと試せるサンドボックス環境の話
sansantech
PRO
1
140
自主式軟體工廠
philipz
0
260
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Building Adaptive Systems
keathley
44
3.2k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
350
The Cost Of JavaScript in 2023
addyosmani
55
10k
Believing is Seeing
oripsolob
1
240
Amusing Abliteration
ianozsvald
1
340
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
790
30 Presentation Tips
portentint
PRO
1
430
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Mobile First: as difficult as doing things right
swwweet
225
10k
Speed Design
sergeychernyshev
33
2.2k
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