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
新規サービスのWebAPI開発でスキーマ駆動開発を目指してみた話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
shibadog1121
August 28, 2019
Programming
13k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
新規サービスのWebAPI開発でスキーマ駆動開発を目指してみた話
スキーマ駆動開発の取り組み事例を紹介します。
@shibadog39
shibadog1121
August 28, 2019
More Decks by shibadog1121
See All by shibadog1121
新規事業におけるWebAPI開発をよしなにリードする方法
shibadog1121
9
3.4k
Other Decks in Programming
See All in Programming
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
340
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
500
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.5k
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
870
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
160
AI-Powered Domain-Driven Design
ziobrando
0
380
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
350
LLM 101
dalinaum
0
450
sbt 2.0: takeoff
eed3si9n
0
190
Getting Started with Vibe Coding
miccheng
0
180
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
Railsバージョンを4倍にした話
optim
0
920
Featured
See All Featured
Music & Morning Musume
bryan
48
7.5k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
560
Evolving SEO for Evolving Search Engines
ryanjones
0
350
Side Projects
sachag
456
43k
It's Worth the Effort
3n
188
29k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
370
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
Building Applications with DynamoDB
mza
96
7.3k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
470
The agentic SEO stack - context over prompts
schlessera
0
990
Transcript
৽نαʔϏεͷ8FC"1*։ൃͰ εΩʔϚۦಈ։ൃΛࢦͯ͠Έͨ !TIJCBEPH ᓎҪوԝ
ࣗݾհ ᓎҪوԝ !TIJCBEPH ɾ݄͔ΒϝυϐΞࣾһ ɾ৽نࣄۀΛ୲͢ΔνʔϜͷΤϯδχΞ ɾ3BJMT7VFKT ɾ͡Ίͯͷ-5ొஃ
αʔϏεհ ʮLBLBSJʯ ױऀ͞ΜͷϦϐʔλʔԽΛࢦ͢ௐࡎༀہΛࢧԉ
LBLBSJͷఏڙՁ ɾνϟοτ૬ஊ ɾ͓ΒͤҰ੪ૹ৴ FUD ɾॲํͤΜૹ৴ ɾళ಄νΣοΫΠϯ ɾࣄલ
େ͖ͳసͷ࣌ظΛܴ͍͑ͯΔௐࡎༀہۀք ױऀ͞Μͷༀہ બఆཧ༝ ڝ૪ཁҼ લༀہ පӃͷۙ͘Ͱศར ཱ͕த৺ ͳ͡ΈͷༀہͰ҆৺ ༀہػೳༀࡎࢣͷ࣭ࡏݿྔ FUD
͔͔Γ͚ͭༀہ පӃ ॲํͤΜ ༀہ ༀہ ॲํͤΜ පӃ ॲํͤΜͷԠधͷେ͕ ͷલͷපӃɾΫϦχοΫ ༷ʑͳҩྍػ͔ؔΒ ॲํͤΜΛԠध͢Δༀہ ͜Ε·Ͱ ͜Ε͔Β
ༀہۀքͷಈ͖Λݟӽͯ͠ͲΜͲΜػೳ։ൃத
ༀہ༻8FCը໘ ױऀ༻ϞόΠϧΞϓϦ
LBLBSJͷ։ൃମ੍ 8FCϑϩϯτΤϯδχΞ ϞόΠϧΞϓϦΤϯδχΞ αʔόʔαΠυΤϯδχΞ º º º
8F`SFIJSJOH
͍ͭͰʹ
ༀہܦӦऀͷํ୳͍ͯ͠·͢
ΞδΣϯμ εΩʔϚۦಈΛࢦ͢ཧ༝ 0QFO"1*ͱ ͳʹ͕Ͱ͖Δͷ͔ LBLBSJͷ"1*։ൃ
·ͱΊ
εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝
8FC"1*։ൃ͍͠ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝
8FC"1*։ൃγʔϯ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝ υΩϡϝϯτͷϝϯς͞Εͯͳͯͭ͘Β͍ͷਤ よっしゃ開発するぜ ΫϥΠΞϯταΠυͪΌΜ 定義通りに実装したのに 動かん αʔόʔαΠυ͘Μ 資料更新するの忘れてた
8FC"1*։ൃγʔϯ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝ ɾυΩϡϝϯτ௨ΓͷϨεϙϯεΛظ࣮ͯͨ͠͠ͷʹಈ͔ͳ͍ ɾυΩϡϝϯτ͡Όͳͯ͘ɺ࣮ݟͯͱ͔ݴΘΕΔ ɾͱ͍͑υΩϡϝϯτΛϝϯς͢Δͷ໘͍͘͞
8FC"1*։ൃγʔϯ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝ ΫϥΠΞϯταΠυ։ൃελʔτͰ͖ͳͯ͘ਏ͍ͷਤ αʔόʔαΠυ͘Μ よっしゃAPI開発するぜ やばい 思ったより時間かかりそう ΫϥΠΞϯταΠυͪΌΜ テトリスして待ってるわ
8FC"1*։ൃγʔϯ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝ ɾαʔόʔαΠυͷ࣮͕ऴΘΔ·ͰΫϥΠΞϯταΠυػ ɾΫϥΠΞϯταΠυ͔Βͷ'#͕͘ͳΔͷͰखΓίετ͕େ ɾؤு࣮ͬͯͨ͠෦͕࣮ෆཁͩͬͨΈ͍ͨͳ͜ͱ͕ى͖ͯ൵͍͠
8FC"1*։ൃͷେ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝ υΩϡϝϯτͱ࣮͕ဃ ฒྻͰ։ൃΛਐΊΒΕͣɺ։ൃޮ্͕͕Βͳ͍
8FC"1*։ൃͭΒ͍ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝
ͦΜͳ͋ͳͨʹ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝ εΩʔϚۦಈ։ൃ
εΩʔϚۦಈ։ൃͱ ɾͤʹ"1*։ൃΛߦ͍ͬͯ͘͜ͱΛࢦͨ͠։ൃख๏ ɾ"1*هड़ݴޠ˞Λ༻͍ͯεΩʔϚ ʹ"1*ఆٛ Λදݱ ɾεΩʔϚ͔ΒυΩϡϝϯτɾίʔυΛγεςϚςΟοΫʹࣗಈੜ ˞0QFO"1*"1*#MVF1SJOU3".-͕͋Δ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝
εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝ ਐΊํͷΠϝʔδ ΫϥΠΞϯταΠυ αʔόʔαΠυ "1*ఆٛΛ ҰॹʹܾΊΔ ϞοΫͷఏڙ ࣮ ࣮ ݁߹ςετ
ϦϦʔε ૣ͍λΠϛϯάͰ ૬ޓ'#
ͬͯΈ͍ͨ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝
0QFO"1*ͱ ͳͥ͏ͷ͔
0QFO"1*ͱ ɾ8FC"1*ͷεΩʔϚΛهड़͢ΔͨΊͷϑΥʔϚοτ KTPOZBNMܗࣜ ɾ0QFO"1**OJUJBUJWFͱ͍͏ஂମ (PPHMF.JDSPTPGU*#.͕ࢀՃ ͕ਪ ਐ͍ͯ͠Δ ɾͱͱʮ4XBHHFSʯ˞ ʹ0QFO"1*ϦωʔϜ͞Εͨ 0QFO"1*ͱ
ͳͥ͏ͷ͔ ˞͜ͷ໊Ͱ0QFO"1*ͷपลπʔϧͷ໊લʹ4XBHHFS͕͍ͬͯͨΓ͢Δ IUUQTXXXPQFOBQJTPSH
0QFO"1*ͱ ͳͥ͏ͷ͔ IUUQTHJUIVCDPN0"*0QFO"1*4QFDJGJDBUJPOCMPCNBTUFSFYBNQMFTWQFUTUPSFZBNM ΤϯυϙΠϯτͷύ ε )551ϝιου ظ͞ΕΔϨεϙϯε ϦΫΤετύϥϝʔλʔ
पลπʔϧ͕ڧྗ εΩʔϚͷڞ༗ɾ֬ೝָ͕ʹͰ͖Δ 0QFO"1*ͱ ͳͥ͏ͷ͔ ˠεΩʔϚۦಈ։ൃʹॏཁͳཁૉ͕ଗ͍ͬͯΔ εΩʔϚ͔ΒίʔυΛࣗಈੜ εΩʔϚͷฤूָ͕ʹͰ͖Δ IUUQTHJUIVCDPN0QFO"1*5PPMT PQFOBQJHFOFSBUPS IUUQTFEJUPSTXBHHFSJP
IUUQTTXBHHFSJPUPPMTTXBHHFSVJ
ΫϥΠΞϯταΠυ αʔόʔαΠυ "1*ఆٛΛ ҰॹʹܾΊΔ ϞοΫͷఏڙ ࣮ ࣮ ݁߹ςετ ϦϦʔε 0QFO"1*ͱ
ͳͥ͏ͷ͔ εΩʔϚͷڞ༗ɾ֬ೝָ͕ʹͰ͖Δ εΩʔϚ͔ΒίʔυΛࣗಈੜ εΩʔϚͷฤूָ͕ʹͰ͖Δ
ͬͯΈ͍ͨ εΩʔϚۦಈ։ൃΛࢦ͢ཧ༝
LBLBSJͷ"1*։ൃ
8FC"1*։ൃͷେ υΩϡϝϯτͱ࣮͕ဃ ฒྻͰ։ൃΛਐΊΒΕͣɺ։ൃޮ্͕͕Βͳ͍ LBLBSJͷ"1*։ൃ
8FC"1*։ൃͷେ υΩϡϝϯτͱ࣮͕ဃ ฒྻͰ։ൃΛਐΊΒΕͣɺ։ൃޮ্͕͕Βͳ͍ LBLBSJͷ"1*։ൃ
υΩϡϝϯτͱ࣮ͷဃΛ͙ LBLBSJͷ"1*։ൃ ࡞ઓ"1*ϦΫΤετΛεΩʔϚ௨Γʹ͢Δ εΩʔϚ͔ΒΫϥΠΞϯτϥΠϒϥϦΛࣗಈੜ ࡞ઓ"1*ϨεϙϯεΛεΩʔϚ௨Γʹ͢Δ εΩʔϚ௨Γͷܗࣜʹͳ͍ͬͯΔ͔ࣗಈςετͰνΣοΫ
υΩϡϝϯτͱ࣮ͷဃΛ͙ ϦΫΤετฤ LBLBSJͷ"1*։ൃ ΫϥΠΞϯτϥΠϒϥϦΛ0QFO"1*(FOFSBUPSͰࣗಈੜ ࣗಈੜͷΈ$*ʹऔΓࠐΜͰ͍Δ ˠεΩʔϚͷߋ৽ʹࣗಈͰਵ ίʔυ͚ͩͰͳ͘ɺϝιουͷҰཡ ͷυΩϡϝϯτҰॹʹࣗಈੜ͞ΕΔ
LBLBSJͷ"1*։ൃ ΫϥΠΞϯταΠυ ࣗಈੜ͞ΕͨϥΠϒϥϦͷϝιουΛୟ͚ͩ͘
LBLBSJͷ"1*։ൃ υΩϡϝϯτͱ࣮ͷဃΛ͙ Ϩεϙϯεฤ ɾʮDPNNJUUFFʯͱ͍͏HFNΛಋೖ https://github.com/interagent/committee ɾ"1*ϦΫΤετɾϨεϙϯε͕εΩʔϚ௨Γ͔νΣοΫͰ͖Δ ɾϨεϙϯεͷςετͰBTTFSU@TDIFNB@DPOGPSNΛݺͿ͚ͩͰ͍͍
ɾܕνΣοΫ ɾSFRVJSFE υΩϡϝϯτͱ࣮ͷဃΛ͙ Ϩεϙϯεฤ LBLBSJͷ"1*։ൃ
ɾOVMMBCMF ɾFOVN υΩϡϝϯτͱ࣮ͷဃΛ͙ Ϩεϙϯεฤ LBLBSJͷ"1*։ൃ
ɾBEEJUJPOBM1SPQFSUJFT εΩʔϚʹఆٛ͞Ε͍ͯͳ͍QSPQFSUZ ͕Ϩεϙϯεʹؚ·Ε͍ͯͳ͍͔Ͳ͏ ͔νΣοΫͰ͖Δ υΩϡϝϯτͱ࣮ͷဃΛ͙ Ϩεϙϯεฤ LBLBSJͷ"1*։ൃ
8FC"1*։ൃͷେ υΩϡϝϯτͱ࣮͕ဃ ฒྻͰ։ൃΛਐΊΒΕͣɺ։ൃޮ্͕͕Βͳ͍ LBLBSJͷ"1*։ൃ
ΫϥΠΞϯταΠυ αʔόʔαΠυ "1*ఆٛΛ ҰॹʹܾΊΔ ϞοΫͷఏڙ ࣮ ࣮ ݁߹ςετ ϦϦʔε ૣ͍λΠϛϯάͰ
૬ޓ'# ฒྻͰ։ൃΛਐΊͯޮΛ্͛Δ LBLBSJͷ"1*։ൃ ͜ͷ෦ΛͲ͏ͬͯਐΊΔ͔
ฒྻͰ։ൃΛਐΊͯޮΛ্͛Δ LBLBSJͷ"1*։ൃ ࡞ઓϞοΫΛૉૣ͘ఏڙ͢Δ 4XBHHFS6*ͷFYBNQMFΛར༻͢Δ ࡞ઓ"1*ఆٛͷڞ༗Λ؆୯ʹ TXBHHFSWJFXFSͱ͍͏$ISPNF֦ுΛར༻͢Δ
ϞοΫΛૉૣ͘ఏڙ͢Δ LBLBSJͷ"1*։ൃ ࣗಈੜ͞ΕΔFYBNQMFΛجʹ߈ͰϞοΫͷ࣮͕Ͱ͖Δ ίϐϖ͚ͨͩ͠ͰϞοΫͷ࣮͕ྃ 4XBHHFS6*Ͱࣗಈੜ͞Εͨ FYBNQMF
LBLBSJͷ"1*։ൃ ɾΛ͔͚ͣʹϞοΫΛఏڙ˞ ɾૣ͍λΠϛϯάͰΫϥΠΞϯταΠυ͔Βͷ'#͕ಘΒΕΔͷͰ मਖ਼ίετ͕͍ ˞0QFO"1*(FOFSBUPSΛ༻͍ͯϞοΫαʔόʔΛఏڙ͢Δํ๏͋ΔͷͰ͕͢ɺϞοΫ༻ͷίϯςφ্ཱͪ͛ ΔΑ͏ʹͨ͠ΓΫϥΠΞϯταΠυͷ͚ઌΛม͑ͨΓͱ໘ͦ͏͔ͳͱࢥ͍ͬͯ·͢ɻݟٻΉʂ ϞοΫΛૉૣ͘ఏڙ͢Δ
ΫϥΠΞϯταΠυ αʔόʔαΠυ "1*ఆٛΛ ҰॹʹܾΊΔ ϞοΫͷఏڙ ࣮ ࣮ ݁߹ςετ ϦϦʔε εΩʔϚͷڞ༗ɾ֬ೝָ͕ʹͰ͖Δ
LBLBSJͷ"1*։ൃ "1*ఆٛͷڞ༗
LBLBSJͷ"1*։ൃ 4XBHHFS6*ศར 公式のライブデモ: https://petstore.swagger.io/?_ga=2.240324099.1201964793.1566722432-82597943.1560763776#/ ͨͩɺTXBHHFSVJͷίϯςφΛ্ཱͪ͛Δඞཁ͕͋Δ "1*ఆٛͷڞ༗
LBLBSJͷ"1*։ൃ "1*ఆٛͷڞ༗ HJUIVC্ͷεΩʔϚΛ4XBHHFS6*ͷܗࣜͰ֬ೝͰ͖Δ✌
LBLBSJͷ"1*։ൃ σϞ ެࣜͷεΩʔϚFYBNQMFIUUQTHJUIVCDPN0"*0QFO"1* 4QFDJGJDBUJPOCMPCNBTUFSFYBNQMFTWQFUTUPSFZBNM
LBLBSJͷ8FC"1*։ൃ LBLBSJͷ"1*։ൃ 8FCϑϩϯτ 41"ը໘ "1* 0QFO"1*ܥಋೖࡁΈ 4XBHHFS6*&EJUPSར༻ ࣗಈςετͰϨεϙϯεͷόϦσʔγ ϣϯ࣮ࢪ 0QFO"1*(FOFSBUPSͰΫϥΠΞϯτ
ϥΠϒϥϦࣗಈੜ ϞόΠϧΞϓϦ"1* 0QFO"1*ܥಋೖࡁΈ 4XBHHFS6*&EJUPSར༻ ࣗಈςετͰϨεϙϯεͷόϦσʔγ ϣϯ࣮ࢪ
·ͱΊ
ɾυΩϡϝϯτΛϝϯς͢ΔͷͭΒ͍ͱ͍͏ؾ͔࣋ͪΒͷղ์ ɾυΩϡϝϯτ͕ஔ͍͚ͯ΅ΓʹͳΔڪා͔Βͷղ์ ɾϑϩϯτΤϯδχΞͨͤΔͷͼͳ͍ͱ͍͏ؾ͔࣋ͪΒͷղ์ ·ͱΊ εΩʔϚۦಈͨͪΛղ์ͯ͘͠ΕΔ
ɾपลπʔϧ͕ͱͯॆ࣮͍ͯ͠Δ ɾࣗͨͪͷ։ൃϑϩʔʹ͍͔ʹΈࠐΉͷ͔ͷ͠Ͳ͜Ζ ɾͰ͖Δͱ͜Ζ͔Βগͣͭ͠ಋೖ͢Δ͜ͱ͕Ͱ͖Δ ·ͱΊ 0QFO"1*ڧ͍
None