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
960
analysis パッケージの仕組みの上でMulti linter with configを実現する / Go Conference 2025
k1low
1
790
Flight recorder at the application layer (NOT the FlightRecoder newly added at Go 1.25) / Fukuoka.go #22
k1low
0
170
ソフトウェア開発におけるインターフェイスという考え方 / PHPerKaigi 2025
k1low
12
6.3k
Parsing HCL/CUE / Fukuoka.go #21
k1low
0
11k
実践 net/http Middleware パターン / Kizuku.go Vol.1
k1low
2
460
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 Agentic Coding 導入實戰 — 流程整合與安全治理
appleboy
0
170
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
170
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
0
400
BPaaSで進むAIオペレーションの現在地 AI実装が効く領域とスケーラビリティの選定と実装
kentarofujii
0
220
AIは、人間らしい仕事の夢を見るか?─ AI時代のtoB/toEプロダクトを再設計する
techtekt
PRO
0
170
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
100
そこにあるから地図ができる~位置を示す"モノ"を愉しむ~ - Interface 2026年6月号GPS特集オフ会 / interface_202606_GPS_offline
sakaik
1
130
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
190
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
110
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
310
起点・思考・出力で分解する 〜PM業務の自動化設計〜
kazu_kichi_67
2
1.2k
Docker Desktop不要の時代が来る? WSL標準の「wslc」で Linuxコンテナを動かしてみた.
ueponx
0
240
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
610
Typedesign – Prime Four
hannesfritz
42
3.1k
A better future with KSS
kneath
240
18k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Context Engineering - Making Every Token Count
addyosmani
9
990
From π to Pie charts
rasagy
0
220
Testing 201, or: Great Expectations
jmmastey
46
8.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
170
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!!!