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
1.1k
近未来的並列 LL
mootoh
1
310
Other Decks in Technology
See All in Technology
Snowflakeの生成AI機能を活用したデータ分析アプリの作成 〜Cortex AnalystとCortex Searchの活用とStreamlitアプリでの利用〜
nayuts
0
360
カミナシ社の『ID管理基盤』製品内製 - その意思決定背景と2年間の進化 #AWSUnicornDay / Kaminashi ID - The Big Whys
kaminashi
3
820
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
0
160
20250903_1つのAWSアカウントに複数システムがある環境におけるアクセス制御をABACで実現.pdf
yhana
2
430
ZOZOマッチのアーキテクチャと技術構成
zozotech
PRO
3
1.3k
Grafana MCPサーバーによるAIエージェント経由でのGrafanaダッシュボード動的生成
hamadakoji
1
1.4k
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.1k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.7k
まだ間に合う! StrandsとBedrock AgentCoreでAIエージェント構築に入門しよう
minorun365
PRO
11
1k
La gouvernance territoriale des données grâce à la plateforme Terreze
bluehats
0
120
エニグモ_会社紹介資料(エンジニア職種向け).pdf
enigmo_hr
0
2.2k
Flutterでキャッチしないエラーはどこに行く
taiju59
0
220
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
40
2k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Producing Creativity
orderedlist
PRO
347
40k
GraphQLとの向き合い方2022年版
quramy
49
14k
Facilitating Awesome Meetings
lara
55
6.5k
Thoughts on Productivity
jonyablonski
70
4.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
For a Future-Friendly Web
brad_frost
180
9.9k
Done Done
chrislema
185
16k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Fireside Chat
paigeccino
39
3.6k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
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