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
新規アプリ開発を支えるユーザ・決済基盤
Search
uzzu
February 27, 2019
Technology
2
2.8k
新規アプリ開発を支えるユーザ・決済基盤
Cookpad TechConf 2019 登壇資料
https://techconf.cookpad.com/2019/
uzzu
February 27, 2019
Tweet
Share
More Decks by uzzu
See All by uzzu
Context Receiversに思いを馳せる / Context Receivers
uzzu
0
710
StoreKitのこれまでとこれから / StoreKit 2 from 1
uzzu
5
18k
Autofill Framework
uzzu
0
130
アプリ内課金の最新事情 クライアントサイド編 / In-app Purchase in Cookpad 2019
uzzu
3
4.5k
Billing Client 2.0 acknowledgement
uzzu
0
17k
Promoting IAP対応から学ぶ外部アプリ内課金実装 / Promoting IAP and others
uzzu
2
1.5k
ブログ作り直した / My blog @ Othlo Tech
uzzu
0
170
kotlin-mpp-library-tips
uzzu
1
6.4k
Coroutine Kyuin
uzzu
2
300
Other Decks in Technology
See All in Technology
なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える
mizzy
51
15k
クレジットカードの不正を防止する技術
yutadayo
16
7.3k
AIと共に開発する時代の組織、プロセス設計 freeeでの実践から見えてきたこと
freee
3
680
re:Invent完全攻略ガイド
junjikoide
1
320
探求の技術
azukiazusa1
7
2k
Master Dataグループ紹介資料
sansan33
PRO
1
3.9k
プログラミング言語を書く前に日本語を書く── AI 時代に求められる「言葉で考える」力/登壇資料(井田 献一朗)
hacobu
PRO
0
160
なぜThrottleではなくDebounceだったのか? 700並列リクエストと戦うサーバーサイド実装のすべて
yoshiori
12
4.3k
⽣成 AI で進化する AWS オブザーバビリティ
o11yfes2023
0
110
CloudFormationコンソールから、実際に作られたリソースを辿れるようになろう!
amixedcolor
1
180
Post-AIコーディング時代のエンジニア生存戦略
shinoyu
0
280
AIエージェントによるエンタープライズ向けスライド検索!
shibuiwilliam
1
290
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
527
40k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
YesSQL, Process and Tooling at Scale
rocio
174
15k
A better future with KSS
kneath
239
18k
RailsConf 2023
tenderlove
30
1.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
The Cost Of JavaScript in 2023
addyosmani
55
9.2k
Code Review Best Practice
trishagee
72
19k
Rails Girls Zürich Keynote
gr2m
95
14k
Statistics for Hackers
jakevdp
799
220k
Writing Fast Ruby
sferik
630
62k
Transcript
Ӊ Ұ (@uzzu) Ϣʔβɾܾࡁج൫෦ ৽نΞϓϦ։ൃΛࢧ͑Δ Ϣʔβɾܾࡁج൫
ΞϓϦ ࡞ͬͯ·͔͢ʁ 2
Ϣʔβཧ/ೝূ 3
ΞϓϦ՝ۚ 4
5
6
ΫοΫύουͰഓͬͨ Ϣʔβཧ/ܾࡁϊϋΛ ༗ޮ׆༻ͯ͠ ৽نΞϓϦ։ൃΛՃ͢Δඞཁ͕͋Δ
Cuisine 8
Cuisine/Client 9
Cuisine/Client 10 ϢʔβೝূͱΞϓϦ՝ۚػೳͷಋೖΛՃ͢Δʹ ɾAPI௨৴࣌ʹࣗಈ࠶ೝূ͢Δ ɾೝূϑϩʔΛΧελϚΠζͰ͖Δ ɾΞϓϦ՝ۚ(ఆظߪಡ)Λ؆୯ʹར༻Ͱ͖Δ
API௨৴࣌ʹࣗಈͰ࠶ೝূ͢Δ 11 ɾAPI௨৴࣌ʹೝূॲཧΛͳΔ͘ҙࣝͤ͞ͳ͍ ɹೝূࣦഊ࣌ʹࣗಈͰ࠶ೝূΛ࣮ࢪ ɾ[iOS] APIΫϥΠΞϯτ·ͰؚΊͯఏڙ (APIKit-likeͳܗ) ɾ[Android] OkHttp(HTTPΫϥΠΞϯτϥΠϒϥϦ)ͷར༻Λ ɹલఏͱ্ͨ͠ͰͷඞਢίϯϙʔωϯτΛఏڙ
ೝূϑϩʔΛΧελϚΠζͰ͖Δ 12 ɾStateMachineϕʔεͰͷ࣮(StartStateඞਢͳFSM) ɾೝূϑϩʔΛඪ४Ͱύλʔϯఏڙͯ͠ҰఆͷχʔζΛΧόʔ ɾΧελϚΠζ࣌… ɹStateΛఆٛ ɹStateʹରԠ͢ΔActionΛ࣮ ɹඪ४ͷϑϩʔΛࢀߟʹStateMachineGraphΛߏங
ΞϓϦ՝ۚΛ؆୯ʹར༻Ͱ͖Δ 13 ɾ֤ϓϥοτϑΥʔϜͷΞϓϦ՝ۚͷ ɹ༷Λ౿·্͑ͨͰॲཧϑϩʔΛඪ४Խ ɾඪ४ͷॲཧϑϩʔͷϥούʔϥΠϒϥϦΛఏڙ ɾΞϓϦ։ൃऀ࠷ݶඞཁͳॲཧͷܨ͗ࠐΈ ɹΛ͢Δ͚ͩͰར༻Մೳ ɹ
ΫϥΠΞϯταΠυͷෳࡶ͞Λ ٵऩͯ͠ ৽نΞϓϦ։ൃΛ Ճ͢Δ
Cuisine/Server 15
16 Ϣʔβొ Cookpad API ܾࡁج൫ Ϣʔβج൫ Reverse Proxy Cookpad App
(iOS, Android) ༷ʑ
17 Ϣʔβొ Cookpad API ܾࡁج൫ Ϣʔβج൫ Reverse Proxy Cookpad App
(iOS, Android) ༷ʑ New App (iOS, Android, etc…) New App API
18 Ϣʔβొ Cookpad API ܾࡁج൫ Ϣʔβཧ Reverse Proxy Cookpad App
(iOS, Android) ༷ʑ New App (iOS, Android, etc…) New App API Ϣʔβج൫ $PPLQBEݻ༗ͷػೳΛ ࡌͤͳ͍
19 Ϣʔβొ Cookpad API Ϣʔβج൫ Reverse Proxy Cookpad App (iOS,
Android) ༷ʑ New App API cuisine-api New App (iOS, Android, etc…) ܾࡁج൫ Ϣʔβཧ ΞϓϦ՝ۚఆظߪಡ "1*Λ৽ઃ
20 Ϣʔβొ Cookpad API Ϣʔβج൫ Reverse Proxy Cookpad App (iOS,
Android) ༷ʑ New App API cuisine-api New App (iOS, Android, etc…) ܾࡁج൫ ΞϓϦ՝ۚͷ ՝ۚʹ͍ͭͯ ॲཧϑϩʔͷΈඪ४Խ αʔϏεຖʹ࣮
21 Ϣʔβొ Cookpad API Ϣʔβج൫ Reverse Proxy Cookpad App (iOS,
Android) ༷ʑ New App API cuisine-api New App (iOS, Android, etc…) ܾࡁج൫ $PPLQBEͷϦιʔε ࢀরͰ͖Δ
22 Ϣʔβొ Cookpad API Ϣʔβج൫ Reverse Proxy Cookpad App (iOS,
Android) ༷ʑ New App API cuisine-api New App (iOS, Android, etc…) ܾࡁج൫
※͋͘·Ͱ CookpadͰͷ࣮ફྫ 23
Organized Around Business Capabilities 24
Organized Around Business Capabilities 25 ɾCookpadͷ৽نαʔϏεͦΕͧΕ͕ಠཱͨ͠ϏδωεΛ ɹ͍͍ͬͯͬͯΔ ɹ=> Ϣʔβܾࡁج൫ͷҰ൪ͷ ɹɹʮϢʔβཧ/ܾࡁػೳΛΑΓૣ͘ಋೖͰ͖ΔΑ͏ʹ͢Δʯ
Organized Around Business Capabilities 26 ɾྫ͑ϓϨϛΞϜαʔϏεϢʔβ֫ಘΛతͱͨ͠ ɹ৽نαʔϏεల։ͩͬͨΒ…ʁ ɹ=> ϏδωεͷओମΫοΫύουͷձһࣄۀ ɹ=>
Ϣʔβܾࡁج൫ͷҰ൪ͷ ɹɹʮΫοΫύουͱ৽نαʔϏεؒͷϢʔβঢ়ଶ/ܾࡁঢ়ଶΛ ɹɹɹෆ߹গͳ͘ಉظͰ͖Δج൫αʔϏεΛߏங͢Δʯ
27 Ϣʔβొ Cookpad API Ϣʔβཧ Reverse Proxy Cookpad App (iOS,
Android) ༷ʑ New App API cuisine-api New App (iOS, Android, etc…) ܾࡁཧ
28 ϩάΠϯಋઢ Cookpad API Ϣʔβཧ Reverse Proxy Cookpad App (iOS,
Android) ༷ʑ New App API New App (iOS, Android, etc…) ܾࡁཧ cuisine-api GSPOUFOEʹ͍ۙఔ ϏδωεىҼͰ 4FSWFS"QQͷߏ มΘΔ
29 Ϣʔβొ Cookpad API Ϣʔβཧ Reverse Proxy Cookpad App (iOS,
Android) ༷ʑ New App API New App (iOS, Android, etc…) ܾࡁཧ طଘͷ"1*ʹ ࣮͢Δະདྷ͔͋ͬͨ
ϏδωεͷํੑΛ Ѳ্ͨ͠Ͱ Ϣʔβೝূ/ܾࡁػೳͷಋೖΛ Ճ͢Δ
Cuisineͷࠓޙ 31
32
33
34 Ϣʔβొ Cookpad API Ϣʔβཧ Reverse Proxy Cookpad App (iOS,
Android) ༷ʑ New App API cuisine-api New App (iOS, Android, etc…) ܾࡁཧ $PPLQBE"QQ ಠཱͨ͠Ϗδωε
35 Cookpad API Ϣʔβཧ ༷ʑ New App API New App
(iOS, Android, etc…) ܾࡁཧ Reverse Proxy Cookpad App (iOS, Android) ߏஈ֊ cuisine-api
࣮໘Ҏ֎ 36 ɾσΟϨΫγϣϯ໘ͷෛ୲ܰݮ༨͋Γ ɹಋೖ·ͰͷϩʔυϚοϓ ɹApple৹͓ࠪ࡞๏(ઃܭ/UIσβΠϯ) ɾςετ߲ڞ௨ԽͰ͖ͦ͏ ɹಋઢͷͰ߲ͷͿΕ͋Δͷͷ ɹେےมΘΒͳͦ͏
εϥΠυ͔Β͜΅ΕམͪͨτϐοΫ 37 •ΞΧϯτ౷߹ʹ͍ͭͯ •ΞϓϦ՝ۚॲཧϑϩʔͷڞ௨Խৄࡉ •iOS/StoreKitɺAndroid/Google Play IABϊϋ •Android/Kotlin Multi Platform
ProjectͰ͍͍ͬͯͬͯΔ ɹhttps://speakerdeck.com/uzzu/kotlin-mpp-library-tips •ਐԽతΞʔΩςΫνϟͱ… ؾܰʹֻ͓͚͍ͩ͘͞
͋Γ͕ͱ͏͍͟͝·ͨ͠ @uzzu