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
新規サービスのWebAPI開発でスキーマ駆動開発を目指してみた話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
shibadog1121
August 28, 2019
Programming
3
13k
新規サービスのWebAPI開発でスキーマ駆動開発を目指してみた話
スキーマ駆動開発の取り組み事例を紹介します。
@shibadog39
shibadog1121
August 28, 2019
Tweet
Share
More Decks by shibadog1121
See All by shibadog1121
新規事業におけるWebAPI開発をよしなにリードする方法
shibadog1121
9
3.4k
Other Decks in Programming
See All in Programming
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
280
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
230
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
510
CSC307 Lecture 06
javiergs
PRO
0
690
SourceGeneratorのススメ
htkym
0
200
ぼくの開発環境2026
yuzneri
0
250
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
630
今から始めるClaude Code超入門
448jp
8
9.1k
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
CSC307 Lecture 05
javiergs
PRO
0
500
CSC307 Lecture 01
javiergs
PRO
0
690
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.6k
Design in an AI World
tapps
0
150
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
150
The Curse of the Amulet
leimatthew05
1
8.7k
Automating Front-end Workflow
addyosmani
1371
200k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
120
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Bash Introduction
62gerente
615
210k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.7k
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