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
API になろう / Let's become an API
Search
Pちゃん
December 18, 2019
Programming
0
3.5k
API になろう / Let's become an API
Pちゃん
December 18, 2019
Tweet
Share
More Decks by Pちゃん
See All by Pちゃん
天下一 Dev Server 武道会 / World Dev Server Tournament
p1ch_jp
2
990
この先生きのこるためのPostCSS実践入門
p1ch_jp
1
1.6k
エンジニアのためのデザインの話
p1ch_jp
0
940
Other Decks in Programming
See All in Programming
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
120
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
570
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
240
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
580
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
2.2k
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
310
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
16
3.4k
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
160
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
270
AI活用のコスパを最大化する方法
ochtum
0
350
安いハードウェアでVulkan
fadis
1
840
RailsのValidatesをSwift Macrosで再現してみた
hokuron
0
140
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
120
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
300
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
500
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
460
Large-scale JavaScript Application Architecture
addyosmani
515
110k
WCS-LA-2024
lcolladotor
0
500
Evolving SEO for Evolving Search Engines
ryanjones
0
170
For a Future-Friendly Web
brad_frost
183
10k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
250
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
110
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
150
Transcript
өͬͨΒ͢
͜ΜΜ
PͪΌΜ @p1ch_jp
͓·͑ͩΕ w ॴଐ w גࣜձࣾσΟʔɾΤψɾΤʔ w Կͯ͠Δ w ϑϩϯτΤϯυΤϯδχΞ
͍
ࠓͳΜͰ͕͢
-5ότϧͱ͍͏͜ͱͰ Ժ͔͡Όͳ͍Ͱ͢Ͷ
͍
΅͕͘͜͜ʹ͍Δ ܦҢͳΜͰ͕͢
None
None
ͳΜ͔ΜͰ
͏͔ͬΓϦϯάʹ ্͕Δ͜ͱʹͳͬͯ͠·ͬͨ
͔͠ͳ͔ͥ όοΫΤϯυͰ
ϏϏͬͯ·͢
ԿΛ͢ͷ͔
ຊͷ΅͘ͷςʔϚ
όοΫΤϯυͱ ͍͏͜ͱͳΜͰ͕͢
ͨͿΜདྷͯΔਓͷ ΄ͱΜͲͷਓ͕
σβΠφʔ ϑϩϯτΤϯυΤϯδχΞ 03
ΑͶʁ
ͳʹΑΓ ΅͕ࣗ͘ৄ͘͠ͳ͍
ͱ͍͏Θ͚Ͱ
ࠓͰ͢Ͷ
࣮ͰΞϨίϨͯ͠ಘͨ ҝʹͳΔݟͷڞ༗ͱ͔
ͦ͏͍͏ͷ Ͱ͖ͯ·ͤΜ
ԿΛ͔͢ͱݴ͏ͱʜ
࠷ۙझຯͰ࡞ͬͨAPI ͷͰ ͠Α͏ͱࢥ͍·͢
גࣜձࣾσΟʔɾΤψɾΤʔσβΠϯຊ෦αʔϏεσβΠϯ෦%&(( ౻ݪ৻ଠBLB1$IBO APIʹͳΖ͏ FROKAN x UIT #2 - ΕLT ότϧ
ఆௌߨऀ
ఆௌߨऀ w ීஈɺࣄͰϑϩϯτΤϯυΛॻ͍͍ͯΔ͕ɺझຯ ݸਓ։ൃͰόοΫΤϯυॻ͍͍͖͍ͯͨਓ w มͳAPI͕ੜ͑ͯΔͷΛݟ͚ͭΔͱָ͘͠ͳͬͪΌ͏ਓ
͜͏ͳΔͱΑͦ͞͏ w ॳֶऀʹෛ୲ͷগͳ͍ٕज़ελοΫΛͬͯɺ࣮ࡍʹ (FUUJOH4UBSU͢Δػӡ͕ߴ·Δ w ͱݴ͑Կͭ͘Ε͑͑ͶΜΛղফͯ͠ɺ࣮ࡍʹ (FUUJOH4UBSU͢Δػӡ͕ߴ·Δ
Ͱ
ࠓɺग़ͯ͘ΔՌ શ෦JSONͳΜͰ
Έͳ͞Μ͓खݩʹ
1PTUNBO
ͱ͔
1PTUXPNBO
ͱ͔
*OTPNOJB
ͱ͔ى্ͪ͛ͳ͕Β ฉ͍͍͚ͯͨͩΔͱ
ָ͍͔͠͠Ε·ͤΜ
ΈΜͳ͕ى্ͪ͛ͯΔؒʹ ΅͕͘ञΛҿΉ࣌ؒ
͍
ࠓճ࡞ͬͨͷ 0
P-Chan API
IUUQTBQJQDIBOJN
ಡΜͰυϝΠϯͷ͘
΅͘ʹؔ͢Δใ͕ฦΓ·͢
GET /identification GET /accounts GET /assets PATCH /assets
༻ٕज़
͜Μͳײ͡Ͱ͢
ࠓ
ୈҰষɺίίΒΜ
ୈೋষɺίίΒΜ
ʹผ͚ͯհ͍͖ͯ͠·͢
ͱΓ·αʔόʔΛى্ͪ͛ͯ ੩తͳใΛฦͯ͠ΈΔ 1
ίίΒΜͷ
͜ͷষݴ͍͍ͨ͜ͱ ͻͱ͔ͭ͠ͳ͍
झຯor ݸਓ։ൃ && ॳΊͯͷαʔόʔαΠυNode.js
TypeScript + Express Ͱ͏
5ZQF4DSJQU &YQSFTT w &YQSFTTӫރਰͷܹ͍͠ք۾ʹ͓͍ͯ͘͠ɺރΕ ͭͭݱͰ͑ΔͷͰʢރΕͯΔͷใྔ͕๛ w 5ZQF4DSJQUϑϩϯτ·ͩ54ͱ૬ੑͷྑ͍ϑϨʔϜϫʔ Ϋͦ͏͡Όͳ͍ϑϨʔϜϫʔΫ͋Δ͕ɺόοΫΤϯυ ͍͍ͩͨ૬ੑ͍͍ɻϑϩϯτͱҧͬͯXFCQBDLͷઃఆ Ͱ͠ΜͲ͍ͱ͔ͳͯ͘ɺجຊUTDίϚϯυͰઓ͑ΔͷͰ
ྑ͞Έ͕͋Δɻ
࠷ۙNest.jsͱ͔͕ ྲྀߦͬͯ·͕͢
Ұ൪ॳΊΦʔιυοΫεʹ ExpressͰΉ͜ͱΛΦεεϝ σΟεͬͯͳ͍Αɺ510ͶʢҰԠ
P-Chan APIͷ߹ ͜ΕͰ
GET /identification
GET /accounts
͋ͨΓΛฦͯ͠·͢
͍
ͱΓ·͜ΕͰAPIΊ·ͨ͠
ͱݴ͑͜Ε͚ͩ͡Ό Կ໘ന͘Ͷ͑
όοΫΤϯυͳΒͰͷ
औ͖ͬͯͨσʔλΛ อଘͨ͠Γɺు͖ग़ͨ͠Γ
ͦ͏͍͏ͷ͍ͨ͠
σʔλΛऔ͖ͬͯͯอଘͯ͠ ు͖ग़͢·ͰͷΞϨίϨ 2
ͲΜͳΤϯυϙΠϯτ ੜ͔͢ͳʔͱࢥ͍ͬͯͨΒ
͜ΜͳIssue͕ͨͬͯͨͷͰ
ݮΔΜ͡Όͳ͍͍͍͔͠
͜ΜͳΤϯυϙΠϯτΛ ༻ҙ͠·ͨ͠
PATCH /assets GET /assets ࢿ࢈ใͷฦ٫ͱߋ৽
αϯϓϧσʔλͰ ͍͍͔ͱࢥͬͨΜͰ͕͢
໘നΈʹ͚ܽΔͷͰ
ʢϦΞϧΨνσʔλฦ͠·͢ʣ
͜ΕΒͷΤϯυϙΠϯτ ओʹ2ͭͷఔͰΓཱͬͯΔ
PuppeteerͰ σʔλΛऔͬͯ͘Δఔ Prisma FrameworkͰ σʔλΛग़͠ೖΕ͢Δఔ Prisma Framework
PuppeteerͰ σʔλΛऔͬͯ͘Δఔ Prisma FrameworkͰ σʔλΛग़͠ೖΕ͢Δఔ Prisma Framework
Puppeteer ͏ͳΒσϓϩΠઌΑ͘ߟ͑Α͏ w ZEIT Nowɺv2͔ΒFaaSతͳײ͡ʹͳͬͨͷͰɺ͋Μ ·ΓϔουϨεϒϥβΛͿΜճ͢Έ͍ͨͳέʔεΛఆ ͞Ε͍ͯͳ͍ɻλΠϜΞτ͕10 ඵɻ ՝ۚͰ5 ʹ
w ͓ͱͳ͘͠GAE/SE λΠϜΞτ60ඵ ͱ͔ɺGoogle Cloud Functions λΠϜΞτ540ඵ ͱ͔ͬͨ΄͏͕ ྑ͍ w ͨͿΜP-Chan APIɺ͖͡ʹΓ͑Δ
PuppeteerͰ σʔλΛऔͬͯ͘Δఔ Prisma FrameworkͰ σʔλΛग़͠ೖΕ͢Δఔ Prisma Framework
ࠓҰ൪ͬͯ΄͍ͭ͠
͋ͨΓ·͑ͳΜͰ͕͢
ϑϩϯτΤϯυͰͰ͖ͳ͍ όοΫΤϯυͷ໘ന͞ͱͯ͠
σʔλͷӬଓԽ͕͋Δ
2019ͷ ΞϓϦέʔγϣϯ։ൃʹ͓͍ͯ
େମͷ߹ɺORMͱ͍͏ྨͷ ϥΠϒϥϦΛ͏͜ͱʹΑͬͯ
SQLΛॻ͖͢Δ͜ͱͳ͘ ؆୯ʹDBͷCRUD͕Ͱ͖ΔΑ͏ʹ
ͱݴ͑
ॳֶऀʹͱͬͯ
ίʔυ͕ Ұ൪ΰνϟΓΨνͳ෦Ͱ͋Γ
ORMಠࣗͷϚΠάϨʔγϣϯϧʔ ϧه๏Ͱམ͕ͪ͠
ͦ͜Ͱࠓճͬͨͷ͕
Prisma Framework
ORM Migration Sequel Pro ͬΆ͍ͭ
͍ํ؆୯
εΩʔϚΛఆٛ͢Δ Prettierαϙʔτ͞ΕͯΔΑ TDIFNBQSJTNB
ϚΠάϨʔγϣϯͷੜͱ࣮ߦ prisma2 lift save && prisma2 lift up 5FSNJOBM
͜Μͳײ͡ͰՃͨ͠Γ DPOUSPMMFSTBTTFUTUT
͜Μͳײ͡Ͱfindͨ͠Γ DPOUSPMMFSTBTTFUTUT
ΊͪΌͪ͘Όײతͳ ΦϒδΣΫτͷૢ࡞Ͱ݁
·ͩ·ͩ͜Ε͔ΒͳORM͚ͩͲɺ ৮ͬͨײ͡ɺखʹೃછΉؾ͕͢Δ
ҰԠTypeScript ORMքͷԦऀ TypeORMͱͷൺֱ
vs TypeORM (1/2) w ޙൃͷͨΊɺશମతʹ·ͩ·ͩউͯͳ͍ʢػೳͷଟ͞ɺ ରԠ͢Δσʔλϕʔεͷଟ͞ɺ࣮ࡍͷར༻ྫͳͲͳͲʣ w ͱݴ͑ɺ๏ਓ͕։ൃମͳͷͰɺ։ൃεϐʔυ͕҆ఆ ͍ͯ͠Δʢ࠷ͰִिͰΞϓσ͢Δͱݴͬͯͨʣ w
TypeORM ʹൺͯରԠ͢Δσʔλϕʔε͕ߜΒΕͯΔ ͷɺܽͰ͋Δ͕རͰ͋Γͦ͏
vs TypeORM (2/2) w Photon JS ORM Lift JS Migration
͕ಠཱͯ͠ ಈ͘ͱ͍͏ͷNodeͬΆ͖ͯ͘ʢΈͷ w ԿΑΓɺ·ͩv0.xͰ͋ΓProductionͰͷ༻ਪ͞ Ε͍ͯͳ͍ͷͰɺશମతʹࠓޙʹظͱ͍͏ײ͡ w ʢTypeScript Ͱॻ͚ΔORM͕ͦΜͳʹଟ͘ͳ͍தͰɺ બࢶ͕૿͑Δ͜ͱࣗମɺ݁ߏՁ͕͋Γͦ͏ʣ
·ͱΊ 3
·ͱΊ w όοΫΤϯυ͜ͱ͡ΊʮTypeScript + Express + Prisma Frameworkʯ͕͍͍͔͠Εͳ͍Α w ࣗͷใΛίϯςϯπʹͨ͠ΒɺແݶʹΤϯυϙΠϯ
τΛ࡞ΕΔͷͰɺʮͱݴ͑Կ࡞Ε͑͑ͶΜʯͰ ΤλΔͱ͔ͳͦ͞͏ɺΦεεϝ
ࠓհͨ͠APIͳΜͰ͕͢
୭ಘ͔͔Βͳ͍͚Ͳ
ಛʹೝՄػߏͱ͔ ੵΜͰͳ͍ΜͰ
୭Ͱୟ͚·͢
ͱ͍͏Θ͚Ͱ
Ҏ্
גࣜձࣾσΟʔɾΤψɾΤʔσβΠϯຊ෦αʔϏεσβΠϯ෦%&(( ౻ݪ৻ଠBLB1$IBO APIʹͳΖ͏ FROKAN x UIT #2 - ΕLT ότϧ
Ͱͨ͠
͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠