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
CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること / CI/CD...
Search
Ken’ichiro Oyama
March 26, 2024
Technology
12k
18
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること / CI/CD Test Night #7
https://testnight.connpass.com/event/311263/
Ken’ichiro Oyama
March 26, 2024
More Decks by Ken’ichiro Oyama
See All by Ken’ichiro Oyama
Introducing RFC9111 / YAPC::Fukuoka 2025
k1low
2
5.8k
Design and implementation of "Markdown to Google Slides" / phpconfuk 2025
k1low
1
1.2k
analysis パッケージの仕組みの上でMulti linter with configを実現する / Go Conference 2025
k1low
1
920
Flight recorder at the application layer (NOT the FlightRecoder newly added at Go 1.25) / Fukuoka.go #22
k1low
0
210
ソフトウェア開発におけるインターフェイスという考え方 / PHPerKaigi 2025
k1low
12
6.5k
Parsing HCL/CUE / Fukuoka.go #21
k1low
0
11k
実践 net/http Middleware パターン / Kizuku.go Vol.1
k1low
2
480
Cleanup handling in Go / Go Conference 2024
k1low
7
4.2k
Command-line interface tool design / PHPerKaigi 2024
k1low
8
4k
Other Decks in Technology
See All in Technology
契約で守るコンパウンドプロダクトのデザインシステム
yug1224
1
1.4k
国際カードブランドルール変更に伴うクレジットカード決済取引仕様変更について
k1style
0
240
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
360
クラウドエージェントの先駆け Devin。今も最先端を走る、他との違い
kinopeee
0
380
Let's Change Our World—Again
snoozer05
PRO
6
680
BacklogのRAG 今ならこう作る - S3 Vectorsと自前パイプラインの勘所
revsystem
0
130
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
310
What Is JetBrains Air
x5gtrn
PRO
0
170
導入から定着へ ~コーディングエージェントを日常業務に組み込む実践知~
yukisakai1225
0
230
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
2
1.7k
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
250
プロダクトが成長すると、 プロダクトマネージャーの仕事はどう変わるのか - 「まず作る」から「小さく学び、確かめながら進む」へ
sansantech
PRO
1
370
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
HDC tutorial
michielstock
2
980
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
900
The Limits of Empathy - UXLibs8
cassininazir
2
730
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
440
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Documentation Writing (for coders)
carmenintech
77
5.6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
640
Navigating Team Friction
lara
192
16k
Transcript
CI/CD͕͋ͨΓ·͑ͷࠓͷ࣌ʹ APIςεςΟϯάπʔϧʹ ٻΊΒΕ͍ͯΔ͜ͱ খࢁ݈Ұ / GMO PEPABO inc. 2024.3.26 CI/CD
Test Night #7 1
ࣗݾհ ٕज़෦ɹٕज़ج൫νʔϜ 2018 த్ೖࣾ খࢁ ݈Ұ Ken’ichiro Oyama গ࣮͠༻తͰখ͞ͳOSSΛॻ͘ͷ͕झຯɻ •
GitHub : k1LoW • Twitter : @k1LoW 2
GMOϖύϘʹ͍ͭͯ 3 https://pepabo.com
ΞδΣϯμ • runnͷհ • ຊൃදͷલఏ • APIςεςΟϯάπʔϧʹٻΊΒΕ͍ͯΔ͜ͱ • ͓ΘΓʹ 4
5
• runn ( means "Run N". is pronounced /rʌ́n én/.
) is a package/tool for running operations following a scenario. • https://github.com/k1LoW/runn • γφϦΦΛYAMLͰॻ͍ͯͦΕΛͱʹૢ࡞ʢΦϖϨʔγϣϯʣΛࣗಈԽͰ͖Δύοέʔδ/πʔϧ • ίϚϯυͱͯ͠GoͷύοέʔδʢϥΠϒϥϦʣͱͯ͑͠Δ • APIςετϢʔεέʔεͷϑΝʔετϓϥΠΦϦςΟͱͯ͠Ґஔ͚͍ͯΔ • ϝΠϯͰ։ൃ͍ͯ͠Δͷ @k1LoW ɹɹɹͱ @k2tzumi ɹɹɹ ͷ2ਓ • ͦΕͧΕrunnΛυοΫϑʔσΟϯά͍ͯͯ͠ɺ@k1LoW͕Goύοέʔδͱͯ͠ͷrunnɺ@k2tzumi ͕ίϚϯυͱͯ͠ͷrunnΛओʹ͍ͬͯΔ 6 https://github.com/k1LoW/runn runnʢϥϯΤψʣ
7 https://github.com/k1LoW/runn runnʹ͓͚ΔAPIςετͷ࣮ߦ > runn run **/*.yml
8 γφϦΦYAMLϑΝΠϧ ʢϥϯϒοΫʣ
9 https://github.com/k1LoW/runn
10 https://github.com/k1LoW/runn
11 https://github.com/k1LoW/runn
12 https://github.com/k1LoW/runn
13 https://github.com/k1LoW/runn
14 https://github.com/k1LoW/runn
15 https://github.com/k1LoW/runn
16 https://github.com/k1LoW/runn Runnerͷઃఆ มͷઃఆ ɹɹɹɹ֤εςοϓ 0 1 2 3
17 runnͷػೳ
• 1όΠφϦͷγφϦΦ࣮ߦͷCLIίϚϯυʢπʔϧʣͱͯ͠༻Ͱ͖Δ • 1όΠφϦ = CIϑϨϯυϦ • ͞·͟·ͳϓϩτίϧʹରԠ͓ͯ͠Γɺ1ͭͷγφϦΦͰෳΈ߹ΘͤΔ͜ͱ͕Մೳ • HTTP
• gRPC • DatabaseʢSQLʣ • Chrome DevTools Protocol • ҙίϚϯυͷ࣮ߦʢϩʔΧϧ/SSHʣ • GoͷTest Helperʢύοέʔδʣͱͯ͠༻Ͱ͖Δ 18 https://github.com/k1LoW/runn runnͷػೳʢv0.101.1ʣʢ1/3ʣ
19 https://github.com/k1LoW/runn runnͷػೳʢv0.101.1ʣʢ2/3ʣ • γφϦΦϑΝΠϧʢYAMLʣͷϑΥʔϚοτ͕OpenAPI SpecϥΠΫ • γφϦΦͷεςοϓؒͷ͕ࣗಈͰ࿈ܞ͞Ε͍ͯΔ • ʮεςοϓAΛ࣮ߦ͔ͯ͠Βͦͷ݁ՌΛͬͯεςοϓBΛ࣮ߦ͢Δʯͱ͍͏γφϦΦΛߏங͍͢͠
• ෳͷγφϦΦͷ࣮ߦΛఆ࣮ͨ͠ • ෳͷγφϦΦͷׂ࣮ߦɺαϯϓϦϯά࣮ߦɺϥϯμϜ࣮ߦͳͲ͕Մೳ • ϧʔϓ࣮ߦϦτϥΠ࣮ߦͷΈ͕ΈࠐΈͰඋΘ͍ͬͯΔ • ಉ͡γφϦΦϑΝΠϧΛͬͨෛՙςετʢϩʔυςετʣ͕Մೳ • ίϚϯυΛ runn run ͔Β runn loadt ʹมߋ͢Δ͚ͩɻෳγφϦΦ࣮ߦͦͷ··Մೳ • γφϦΦ࣮ߦͷϩάهՄೳ • γφϦΦ࣮ߦͷϓϩϑΝΠϧऔಘՄೳʢ֤εςοϓͷܦա࣌ؒʣ
20 https://github.com/k1LoW/runn runnͷػೳʢv0.101.1ʣʢ3/3ʣ • εςοϓ࣮ߦ͕Մೳʢ ——attach ʣɻGDBϥΠΫͳػೳ͖ɻ • ͍ΘΏΔϥϯϒοΫʢΦϖϨʔγϣϯ࣮ߦʣͷεςοϓ࣮ߦσόοάʹศར •
ΧελϜϥϯφʔ • طଘϥϯφʔΛͬͯ৽͍͠ϥϯφʔΛߏஙՄೳɻ • εςοϓͷγϯλοΫεʢॻ͖ํʣΛมߋͨ͠ΓɺσϑΥϧτͷઃఆͳͲʹศར
21 ຊൃදͷલఏ
22 ຊൃදͷલఏ APIςεςΟϯάπʔϧ͕ରͱ͢ΔςεταΠζϛσΟΞϜςετҎ্ • εϞʔϧςετͳΒେͷWebΞϓϦέʔγϣϯϑϨʔϜϫʔΫ͕࣋ͭςεςΟϯάπʔϧͰྑ ͍ɻ • ͳͥΘ͟Θ͟ʢϛσΟΞϜςετҎ্Ͱ͏ʣAPIςεςΟϯάπʔϧΛඞཁͱ͍ͯ͠Δͷ͔ • ςετରͷΞϓϦέʔγϣϯͷ֎ଆ͔ΒͷςετΛٻΊ͍ͯΔ
• ʮAPIͷI=ΠϯλʔϑΣΠεʯͱ͍͏ڥքʢ͔Βʣͷςετ͕͍ͨ͠ • APIεΩʔϚϑΝʔετͷ։ൃ • ϚΠΫϩαʔϏε • ༷ܖͱͯ͠ͷଆ໘Λςετ͍ͨ͠
23 ຊൃදͷલఏ APIςετεϞʔϧςετΑΓίετ͕େ͖͍ • ςεταΠζ͕ϛσΟΞϜςετҎ্Ͱ͋ΔAPIςετεϞʔϧςετΑΓίετ͕େ͖͍ • ྫ͑ʮϢχοτςετʯͱݺΕΔςετͷଟ͘ͷςεταΠζεϞʔϧ • ʮίετ͕େ͖͍ʯ •
ʮ࣮ίετʯ͕େ͖͍ • ϛσΟΞϜςετͰ͋Δ࣌ͰͦͷڥΛඋ͢Δͷ໘ • ʮ࣮ߦίετʯ͕େ͖͍ • 1ςετ͋ͨΓͷ࣮ߦ͕࣌ؒ͘ͳΔ
24 ຊൃදͷલఏ ࣗಈςετͱCIطʹͬͯΓͤͳ͍ • ࣗಈςετͷ࣮ߦखಈ͚ͩͰͳ͘CIͰ͞ΒʹࣗಈͰ࣮ߦ͢Δ • ʮࣗಈςετͱɺ։ൃରͷίʔυʹର͢Δςετίʔυͱͯ͠ॻ͍ͯʢςετίʔυʣɺͦͷίʔυΛ࣮ߦ ͢Δ͜ͱͰςετͷ࣮ࢪΛࣗಈతʹߦ͍ͬͯ͘औΓΈͷ͜ͱͰ͢ʢాਓʮอक͘͢͠มԽʹڧ͍ιϑτ ΣΞΛࢧ͑Δபɹࣗಈςετͱςετۦಈ։ൃɺͦͷશମ૾ʯ https://gihyo.jp/article/2024/01/automated-test-and-
tdd ΑΓʣɻʯ • ίϯϐϡʔςΟϯάϦιʔεΛ׆༻ͯ͠։ൃ͢Δ࣌ • ίετͷࢧ͍Λ։ൃऀͷίϯϐϡʔλ͔ΒΓ͢͜ͱ͕Ͱ͖Δ • ΑΓίετͷେ͖͍ςετ࣮ߦͰ͖ΔΑ͏ʹͳ͖ͬͯͨ • APIςετͦͷ1ͭ
25 APIςεςΟϯάπʔϧʹ ٻΊΒΕΔ͜ͱ
26 APIςεςΟϯάπʔϧʹٻΊΒΕΔ͜ͱ APIςεςΟϯάπʔϧΛ։ൃͯ͠ಘͨؾ͖ͮ • ͔͜͜Βհ͢Δ͜ͱN=1ͷײͰ͢ɻ • Կ͔͠Β͔֬Β͍͠౷ܭσʔλ͕͋ΔΘ͚Ͱͳ͍ɻ • ͨͩɺඞཁʹײͯ͡APIςεςΟϯάπʔϧΛ։ൃ͠ɺυοάϑʔσΟϯάΛ͠ͳ͕ΒػೳՃ Λଓ͚ɺଞͷํʹͬͯΒͬͯଟ͘ͷϑΟʔυόοΫΛΒ্ͬͨͰͷؾ͖ͮͳͷͰɺҰఆ
ͷՁ͋Δͱࢥ͍ͬͯΔɻ • ߹Θͤͯɺ͜͜·Ͱڞ༗ͨ͠લఏΛͱʹ͍ͯ͠Δɻ • ͍࣋ͬͯΔલఏ͕ҧ͏ͱࢥ͏ํదٓಡΈସ͑ͯฉ͍͍͚ͯͨͩΔͱ͍Ͱ͢ɻ
Chaining Requestsʹ ରԠ͍ͯ͠Δ 27
28 Chaining RequestsʹରԠ͍ͯ͠Δ Chaining Requests • ʮ/path/to/A ʹϦΫΤετͨ݁͠ՌΛͬͯɺ࣍ͷ /path/to/B ʹϦΫΤετ͢Δʯͱ͍͏
Α͏ʹෳͷϦΫΤετͰΓཱͭςετγφϦΦ • APIύε୯ҐͰAPIςετΛ͢Δͷ࣮࣮ίετ͕͔͔Δ • ೝূτʔΫϯ͕ඞཁͳAPIύεͳͲɺલఏΛ࡞Δඞཁ͕͋ΔAPIύε͕গͳ͔Βͣ͋ΔͨΊ • ςετରͷ֎͔ΒલఏΛ࡞Δͷ͔Β࡞ΔΑΓ͍͠ • Chaining RequestsͳςετγφϦΦΛ࡞ΕΔͳΒʮೝূτʔΫϯͷ֫ಘ͔Β։࢝͢ΔγφϦ ΦʯʹͰ͖Δ
29 Chaining RequestsʹରԠ͍ͯ͠Δ runnͷ߹ • ֤ϥϯφʔͷϨεϙϯεσʔλࣗಈͰه͞ΕࢀরͰ͖ΔΑ͏ʹͳ͍ͬͯΔ • Ϩεϙϯε … HTTPϨεϙϯεɺgRPCϨεϙϯεɺσʔλϕʔεΫΤϦͷϨεϙϯεɺඪ
४ग़ྗ/ඪ४Τϥʔ/ऴྃίʔυ • ಛʹԿ͔هड़͢Δඞཁͳ͍ • current. previous. step[*]. step.<key>. ͰࢀরͰ͖Δ • ͱͱChaining RequestsΛҙࣝͯ͠։ൃΛ։࢝ͨ͠ܦҢ͕͋Δ
ੑͷߴ͍ ςετμϒϧڥ͕͋Δ 30
31 ੑͷߴ͍ςετμϒϧڥ͕͋Δ ςετμϒϧڥ • APIςεςΟϯάπʔϧ͕ඞཁͳϨϕϧͷαʔϏεن͕େ͖͘ͳΔʢؾ͕͢Δʣ • ྫ͑APIΛ࣋ͭΞϓϦέʔγϣϯͱσʔλϕʔε͚ͩͰ݁͢Δ͜ͱ͋·Γͳ͍ʢؾ͕ ͢Δʣ • A
-> B -> C ͱ͍͏APIͷ࿈ܞΛ͢ΔαʔϏε͕͋ͬͨ߹ɺB -> CͷAPIςετAPIςεςΟϯ άπʔϧͰ࣮ݱͰ͖Δ͕ɺA -> BͷAPIςετΛ࣮ݱ͢ΔͨΊʹCͷαʔϏεͷςετμϒϧ͕ ඞཁʹͳΔ • ςετμϒϧڥAPIςεςΟϯάπʔϧͱಉ༷ʹςετରͷΞϓϦέʔγϣϯͷ֎Ͱߏங Ͱ͖Δ͜ͱ͕·͍͠ • ͜͜Ͱςετରͷ֎͔ΒલఏΛ࡞Δͷ͔Β࡞ΔΑΓ͍͜͠ͱ͕Өڹ͍ͯ͠Δ
32 ੑͷߴ͍ςετμϒϧڥ͕͋Δ runnͷ߹ • ͳ͍… • গͳ͘ͱrunnͷػೳͱͯ͠༻ҙ͍ͯ͠ͳ͍ • ྫ͑ɺAPIϓϥοτϑΥʔϜͰ͋ΔPostmanͳͲελϒαʔόͷαϙʔτ͕͋Δ •
ϖύϘͰͲ͏͍ͯ͠Δ͔ͱ͍͏ͱrunnΛGoͷςετϔϧύʔͱͯ͠ىಈͯ͠ར༻͓ͯ͠Γɺಉ࣌ ʹ https://github.com/k1LoW/httpstub https://github.com/k1LoW/grpcstub ͳͲͰελϒαʔόΛ ཱ͍ͯͯΔ • ৄ͘͠Go Conference 2023Ͱͷൃදࢿྉ • https://speakerdeck.com/k1low/go-conference-2023 •
ςετέʔεʹID͕͋Δ 33
34 ςετέʔεʹID͕͋Δ ID • ID=ࣝผࢠ • શͯͷςετέʔεͷத͔Β1ͭͷςετέʔεΛҰҙʹಛఆͰ͖Δࣝผࢠ • େͷϓϩάϥϛϯάݴޠͷςεςΟϯάπʔϧʹ͋Δ •
Namespace + Function name • ҟͳΔϓϥοτϑΥʔϜʹ͓͍ͯҰҙʹಛఆͰ͖Δඞཁ͕͋Δ • CIڥͰ֬ೝͨ͠IDϩʔΧϧʹ͓͍ͯಉ͡IDͰ͋Δ͜ͱ • ࣮ॳrunnʹIDͱݺΔͷͳ͔ͬͨ
35 ςετέʔεʹID͕͋Δ ͳͥID͕ඞཁͳͷ͔ • ࣮ߦίετͷେ͖͞ʹର߅͢ΔͨΊ • ʮͯ͢Λຖճ࣮ߦ͢Δͷίετ͕େ͖͍ʯͱ͍͏ࢹ • ςετ͕ࣦഊͨ͠ͱ͖ɺશͯΛ࣮ߦ͢Δͱ࣮ߦίετ͕େ͖͍ͨΊࣦഊͨ͠ςετ͚ͩΛ࣮ߦ͠ ͯݕূ͍ͨ͠
… IDΛࢦఆ࣮ͨ͠ߦ • ࣮ߦ͕͍࣌ؒςετΛಛఆ͍ͨ͠ … IDͱϝτϦΫεͷ࿈ܞ • Αࣦ͘ഊ͢Δςετ͔Βॱʹ࣮ߦͯ͠ɺࣦഊ͢ΔͳΒૣΊʹ݁ՌΛಘ͍ͨ … IDΛࢦఆͨ͠ॱ൪ Ͱͷ࣮ߦ • IDΛͬͨॊೈͳ࣮ߦͰର߅͢Δ
36 ςετέʔεʹID͕͋Δ runnͷ߹ • IDΛಈతʹੜ͍ͯ͠Δ • ʢϢχοτςετͱൺͯʣγφϦΦ͝ͱʹIDΛࢦఆ͢Δͷ͕໘ʹͳΔͱஅ • खݩͷ։ൃڥͰCIڥͰҰҙʹID͕ੜͰ͖Δඞཁ͕͋Δ •
ڥ͕ҧ͏ͱγφϦΦϑΝΠϧͷઈରύεҧ͏ • runnͷ࣮ߦσΟϨΫτϦҧ͏͜ͱ͕͋Δ • runn path/to/*.yml runs ../path/to/*.yml • γφϦΦͷ༰Λमਖ਼ͯ͠ಉ͡IDͰ͋Δඞཁ͕͋Δ
37 ςετέʔεʹID͕͋Δ Generate IDs using an array of absolute paths
in reverse order. 1. ·ͣશͯͷγφϦΦςετͷઈରύεΛऔಘ 2. ͦΕͧΕύεͰׂ͠ྻʹ͢Δʢϧʔτύε͕ઌ಄ɺϑΝΠϧ໊͕ඌʣ 3. ྻΛٯॱʹฒͼସ͑Δʢϧʔτύε͕ඌɺϑΝΠϧ໊͕ઌ಄ʣ 4. ͦΕͧΕͷྻͷN൪·ͰΛऔΓ݁߹ͯ͠จࣈྻʹ͢ΔɻશͯͷςετͰҰҙͷจࣈྻʹͳΕ ͦΕͰऴྃɻҰҙʹͳΒͳ͚ΕN+1൪·Ͱऔಘ͢Δ 5. ҰҙʹͳͬͨจࣈྻΛϋογϡԽ͢Δ • GitͷίϛοτϋογϡͷΑ͏ʹલํҰகͰࢦఆՄೳʹ͍ͯ͠Δ • Design doc • https://github.com/k1LoW/runn/blob/main/docs/designs/id.md
APIεΩʔϚͱͷ࿈ܞ͕͋Δ 38
39 APIεΩʔϚͱͷ࿈ܞ͕͋Δ APIͷI=ΠϯλʔϑΣΠε • APIςετʮAPIͷI=ΠϯλʔϑΣΠεʯͱ͍͏ڥքʢ͔Βʣͷςετ • APIͷςετέʔεࣗମ͕͋Δఔਖ਼͍͜͠ͱΛ֬ೝ͢Δखஈͱͯ͠APIεΩʔϚͱͷ࿈ܞ͕͋Δ • OpenAPIͷDocumentɺProtocol BuffersͷఆٛϑΝΠϧʢ.protoϑΝΠϧʣͳͲ
• ʮAPIεΩʔϚʹ߹க͍ͯ͠Δ͔Ͳ͏͔ʯΛҰछͷܖςετͱͯ͠༻͢Δ • ϦΫΤετ͕APIεΩʔϚʹ߹க͍ͯ͠ͳ͚ΕΤϥʔɺͱಉ࣌ʹϨεϙϯε͕APIεΩʔϚʹ߹ க͍ͯ͠ͳ͚ΕΤϥʔ • APIεΩʔϚͱ͍͏ܖͷҧΛݕग़
40 APIεΩʔϚͱͷ࿈ܞ͕͋Δ runnͷ߹ • ֤ϥϯφʔʹAPIεΩʔϚΛࢦఆ͢Δ͜ͱͰ࿈ܞͰ͖Δ • OpenAPI Spec v3ͱProtocol Buffers
v2/v3 ʹରԠ • ςετதͷશͯͷϦΫΤετ/ϨεϙϯεΛ֬ೝ͠APIεΩʔϚͱ߹க͠ͳ͚ΕଈΤϥʔʹ͢Δ
ϙʔλϏϦςΟ͕͋Δ 41
42 ϙʔλϏϦςΟ͕͋Δ ϙʔλϏϦςΟ • ʮՄൖੑʯʮҠ২ੑʯ • ʮ࠶ར༻ੑʯ • ·ͣ։ൃڥͱCIڥͰಉҰͷڥʹͳΔΑ͏ʹ͍͢͠ঢ়ଶͳ͜ͱ͕·͍͠ •
CIϑϨϯυϦ • ͞Βʹ࣮ίετ͕େ͖͍APIςετͷγφϦΦΛ༗ޮ׆༻͢Δ͜ͱͰඅ༻ରޮՌΛ͍͋͛ͨ • ෛՙࢼݧͱͯ͠ • ຊ൪ڥͷ֎ܗࢹɾܭଌͱͯ͠ • APIૢ࡞ͷϥϯϒοΫͱͯ͠
43 ϙʔλϏϦςΟ͕͋Δ runnͷ߹ • ෛՙςετػೳ • runn run Λ runn
loadt ʹίϚϯυΛมߋ͢Δ͜ͱͰςετγφϦΦΛͦͷ··ෛՙςετʹ͢Δ͜ͱ͕Մೳ • ڥมల։ػೳ • ֤γφϦΦʹ͓͍ͯڥมͷల։ʹରԠ͍ͯ͠ΔʢσϑΥϧτͷઃఆՄೳʣ • ໊લղܾػೳ • curl ——resolveʹ૬͢ΔػೳΛ֤ϥϯφʔ͕͍࣋ͬͯΔ • ϖύϘͰϓϩΩγαʔόͷςετʹ͍ͬͯΔ • ϦϞʔτγφϦΦ࣮ߦػೳ • http:// github:// ɺ gist:// ͱ͍ͬͨεΩʔϚʹରԠ͠ϦϞʔτϑΝΠϧΛγφϦΦͱ࣮ͯ͠ߦͰ͖Δ • Faker • ͍ΘΏΔμϛʔσʔλੜث • ຖճσʔλετΞͷΛ៉ྷʹ͢Δඞཁ͕͋ΔΑ͏ͳϙʔλϏϦςΟͷ໘Ͱෆར • ྫɿݻఆͷςετϝʔϧΞυϨεͩͱຊ൪ڥͰαΠϯΞοϓςετ͕Ͱ͖ͳ͍ • ʮຖճσʔλετΞΛ៉ྷʹ͢Δʯඞཁ͕ͳ͍ͱϙʔλϏϦςΟ͚ͩͰͳ࣮͘ߦίετͷ໘ͰϝϦοτ͕͋Δ
44 ͓ΘΓʹ
45 ͓ΘΓʹ ͓ΘΓʹ • APIςεςΟϯάπʔϧϢχοτςετͷπʔϧE2EςεςΟϯάπʔϧΑΓɺ։ൃڥ Ͱຊ൪ڥͰΘΕΔ͜ͱ͕ଟ͍ • APIςετͷଟ͕͘ϛσΟΞϜςετҎ্Ͱ͋Δ͜ͱ͔Β࣮ίετ࣮ߦίετ͕εϞʔϧς ετΑΓେ͖͍ɻͦͷޮՌΛ࠷େʹ͍ͨ͠ͱ͍͏ཁٻ͕͋Δ •
ʮ࣮ߦ࣌ͷίϯϐϡʔςΟϯάϦιʔείετͦ͜·ͰؾʹͳΒͳ͍͕ɺ࣮ߦ࣮࣌ؒ ίετͳΜͱ͔͍ͨ͠ʯͱͳΓ͕ͪ • ࠓճհͨ͠ʮAPIςεςΟϯάπʔϧʹٻΊΒΕ͍ͯΔ͜ͱʯ͔ΒબఆൃలͷͨΊͷؾ͖ͮ ΛಘͯΒ͑ͨΒ͍Ͱ͢ɻ
46 PR
47 PR • by @k2tzumi • https://qiita.com/advent-calendar/2023/runn- tutorial • APIγφϦΦςετπʔϧͰ͋Δ
runn ͷ ͍ํΛεςοϓόΠεςοϓͰཧղ͍ͯ͘͠ νϡʔτϦΞϧ runn։ൃऀʹΑΔrunnνϡʔτϦΞϧ
48 PR runn։ൃऀʹΑΔrunnΫοΫϒοΫ • by @k1LoW • https://zenn.dev/k1low/books/runn-cookbook • Ұ෦༗ྉͰ͕͢ଟ͘Λແྉެ։͍ͯ͠ΔͷͰ
͚ͦͩ͜ͰͰ͖Δ͜ͱ͕ݟ͖͑ͯ·͢
49 Thank you!!!