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.1k
analysis パッケージの仕組みの上でMulti linter with configを実現する / Go Conference 2025
k1low
1
910
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.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
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
230
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
110
LocalStack を使ったサーバーレスアプリケーション開発 / Serverless Development with LocalStack
kakakakakku
1
430
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
430
分析AIエージェントを育てる、動く環境を育てる
codatum
1
1k
WasmをRustにする
sansantech
PRO
0
220
Loop Engineering, beyond prompt, context, and harness engineering
glaforge
0
110
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
200
Cognition AI Japan - ウェビナー2_テストQA_運用監視
cogakira
0
140
大型犬好きによるPugの紹介
yamanoku
1
150
会社説明資料
persolserverworks
0
9.7k
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
930
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
The Cult of Friendly URLs
andyhume
79
7k
A Soul's Torment
seathinner
8
3.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
Designing for Performance
lara
612
70k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
300
Discover your Explorer Soul
emna__ayadi
2
1.3k
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!!!