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
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.5k
Design and implementation of "Markdown to Google Slides" / phpconfuk 2025
k1low
1
930
analysis パッケージの仕組みの上でMulti linter with configを実現する / Go Conference 2025
k1low
1
770
Flight recorder at the application layer (NOT the FlightRecoder newly added at Go 1.25) / Fukuoka.go #22
k1low
0
160
ソフトウェア開発におけるインターフェイスという考え方 / PHPerKaigi 2025
k1low
12
6.3k
Parsing HCL/CUE / Fukuoka.go #21
k1low
0
11k
実践 net/http Middleware パターン / Kizuku.go Vol.1
k1low
2
450
Cleanup handling in Go / Go Conference 2024
k1low
7
4.1k
Command-line interface tool design / PHPerKaigi 2024
k1low
8
3.9k
Other Decks in Technology
See All in Technology
あなたの AI ワークスペースに、 専門コーダーを連れてくる - Amazon Quick Desktop 最新情報
kawaji_scratch
1
130
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
110
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
3
200
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
130
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
150
FDE という解 ― 暗黙知と明示知をつなぐ、伴走型エンジニアリング ―
otanet
0
130
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
610
20260619 私の日常業務での生成 AI 活用
masaruogura
1
130
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
1.9k
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
160
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
5
1.3k
RAG を使わないという選択肢
tatsutaka
1
190
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
690
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
580
Prompt Engineering for Job Search
mfonobong
0
340
Testing 201, or: Great Expectations
jmmastey
46
8.2k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Leo the Paperboy
mayatellez
7
1.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
22k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Building Applications with DynamoDB
mza
96
7.1k
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!!!