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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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.7k
Design and implementation of "Markdown to Google Slides" / phpconfuk 2025
k1low
1
1.1k
analysis パッケージの仕組みの上でMulti linter with configを実現する / Go Conference 2025
k1low
1
880
Flight recorder at the application layer (NOT the FlightRecoder newly added at Go 1.25) / Fukuoka.go #22
k1low
0
200
ソフトウェア開発におけるインターフェイスという考え方 / PHPerKaigi 2025
k1low
12
6.4k
Parsing HCL/CUE / Fukuoka.go #21
k1low
0
11k
実践 net/http Middleware パターン / Kizuku.go Vol.1
k1low
2
470
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
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
600
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
4
530
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
360
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
160
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
150
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
180
なぜJMBC(Japan MCP Business Community)? MCPってどう活用できるの?
cdataj
0
100
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
240
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
1k
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
760
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
480
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Automating Front-end Workflow
addyosmani
1369
210k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Docker and Python
trallard
47
4.2k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
220
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Tell your own story through comics
letsgokoyo
1
1.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
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!!!