Slide 1

Slide 1 text

CI/CD͕͋ͨΓ·͑ͷࠓͷ࣌୅ʹ APIςεςΟϯάπʔϧʹ ٻΊΒΕ͍ͯΔ͜ͱ খࢁ݈Ұ࿠ / GMO PEPABO inc. 2024.3.26 CI/CD Test Night #7 1

Slide 2

Slide 2 text

ࣗݾ঺հ ٕज़෦ɹٕज़ج൫νʔϜ 2018೥ த్ೖࣾ খࢁ ݈Ұ࿠ Ken’ichiro Oyama গ࣮͠༻తͰখ͞ͳOSSΛॻ͘ͷ͕झຯɻ ● GitHub : k1LoW ● Twitter : @k1LoW 2

Slide 3

Slide 3 text

GMOϖύϘʹ͍ͭͯ 3 https://pepabo.com

Slide 4

Slide 4 text

ΞδΣϯμ • runnͷ঺հ • ຊൃදͷલఏ • APIςεςΟϯάπʔϧʹٻΊΒΕ͍ͯΔ͜ͱ • ͓ΘΓʹ 4

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

• 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ʢϥϯΤψʣ

Slide 7

Slide 7 text

7 https://github.com/k1LoW/runn runnʹ͓͚ΔAPIςετͷ࣮ߦ > runn run **/*.yml

Slide 8

Slide 8 text

8 γφϦΦYAMLϑΝΠϧ ʢϥϯϒοΫʣ

Slide 9

Slide 9 text

9 https://github.com/k1LoW/runn

Slide 10

Slide 10 text

10 https://github.com/k1LoW/runn

Slide 11

Slide 11 text

11 https://github.com/k1LoW/runn

Slide 12

Slide 12 text

12 https://github.com/k1LoW/runn

Slide 13

Slide 13 text

13 https://github.com/k1LoW/runn

Slide 14

Slide 14 text

14 https://github.com/k1LoW/runn

Slide 15

Slide 15 text

15 https://github.com/k1LoW/runn

Slide 16

Slide 16 text

16 https://github.com/k1LoW/runn Runnerͷઃఆ ม਺ͷઃఆ ɹɹɹɹ֤εςοϓ 0 1 2 3

Slide 17

Slide 17 text

17 runnͷػೳ

Slide 18

Slide 18 text

• 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ʣ

Slide 19

Slide 19 text

19 https://github.com/k1LoW/runn runnͷػೳʢv0.101.1ʣʢ2/3ʣ • γφϦΦϑΝΠϧʢYAMLʣͷϑΥʔϚοτ͕OpenAPI SpecϥΠΫ • γφϦΦ಺ͷεςοϓؒͷ஋͕ࣗಈͰ࿈ܞ͞Ε͍ͯΔ • ʮεςοϓAΛ࣮ߦ͔ͯ͠Βͦͷ݁ՌΛ࢖ͬͯεςοϓBΛ࣮ߦ͢Δʯͱ͍͏γφϦΦΛߏங͠΍͍͢ • ෳ਺ͷγφϦΦͷ࣮ߦΛ૝ఆ࣮ͨ͠૷ • ෳ਺ͷγφϦΦͷ෼ׂ࣮ߦɺαϯϓϦϯά࣮ߦɺϥϯμϜ࣮ߦͳͲ͕Մೳ • ϧʔϓ࣮ߦ΍ϦτϥΠ࣮ߦͷ࢓૊Έ͕૊ΈࠐΈͰඋΘ͍ͬͯΔ • ಉ͡γφϦΦϑΝΠϧΛ࢖ͬͨෛՙςετʢϩʔυςετʣ͕Մೳ • ίϚϯυΛ runn run ͔Β runn loadt ʹมߋ͢Δ͚ͩɻෳ਺γφϦΦ࣮ߦ΋ͦͷ··Մೳ • γφϦΦ࣮ߦͷϩά΋ه࿥Մೳ • γφϦΦ࣮ߦͷϓϩϑΝΠϧ΋औಘՄೳʢ֤εςοϓͷܦա࣌ؒʣ

Slide 20

Slide 20 text

20 https://github.com/k1LoW/runn runnͷػೳʢv0.101.1ʣʢ3/3ʣ • εςοϓ࣮ߦ͕Մೳʢ ——attach ʣɻGDBϥΠΫͳػೳ෇͖ɻ • ͍ΘΏΔϥϯϒοΫʢΦϖϨʔγϣϯ࣮ߦʣͷεςοϓ࣮ߦ΍σόοάʹศར • ΧελϜϥϯφʔ • طଘϥϯφʔΛ࢖ͬͯ৽͍͠ϥϯφʔΛߏஙՄೳɻ • εςοϓͷγϯλοΫεʢॻ͖ํʣΛมߋͨ͠ΓɺσϑΥϧτ஋ͷઃఆͳͲʹศར

Slide 21

Slide 21 text

21 ຊൃදͷલఏ

Slide 22

Slide 22 text

22 ຊൃදͷલఏ APIςεςΟϯάπʔϧ͕ର৅ͱ͢ΔςεταΠζ͸ϛσΟΞϜςετҎ্ • εϞʔϧςετͳΒେ఍ͷWebΞϓϦέʔγϣϯϑϨʔϜϫʔΫ͕࣋ͭςεςΟϯάπʔϧͰྑ ͍ɻ • ͳͥΘ͟Θ͟ʢϛσΟΞϜςετҎ্Ͱ࢖͏ʣAPIςεςΟϯάπʔϧΛඞཁͱ͍ͯ͠Δͷ͔ • ςετର৅ͷΞϓϦέʔγϣϯͷ֎ଆ͔ΒͷςετΛٻΊ͍ͯΔ • ʮAPIͷI=ΠϯλʔϑΣΠεʯͱ͍͏ڥքʢ͔Βʣͷςετ͕͍ͨ͠ • APIεΩʔϚϑΝʔετͷ։ൃ • ϚΠΫϩαʔϏε • ࢓༷΍ܖ໿ͱͯ͠ͷଆ໘Λςετ͍ͨ͠

Slide 23

Slide 23 text

23 ຊൃදͷલఏ APIςετ͸εϞʔϧςετΑΓ΋ίετ͕େ͖͍ • ςεταΠζ͕ϛσΟΞϜςετҎ্Ͱ͋ΔAPIςετ͸εϞʔϧςετΑΓ΋ίετ͕େ͖͍ • ྫ͑͹ʮϢχοτςετʯͱݺ͹ΕΔςετͷଟ͘ͷςεταΠζ͸εϞʔϧ • ʮίετ͕େ͖͍ʯ • ʮ࣮૷ίετʯ͕େ͖͍ • ϛσΟΞϜςετͰ͋Δ࣌఺Ͱͦͷ؀ڥΛ੔උ͢Δͷ΋໘౗ • ʮ࣮ߦίετʯ͕େ͖͍ • 1ςετ͋ͨΓͷ࣮ߦ͕࣌ؒ௕͘ͳΔ

Slide 24

Slide 24 text

24 ຊൃදͷલఏ ࣗಈςετͱCI͸طʹ੾ͬͯ΋੾Γ཭ͤͳ͍ • ࣗಈςετͷ࣮ߦ͸खಈ͚ͩͰ͸ͳ͘CIͰ͞ΒʹࣗಈͰ࣮ߦ͢Δ • ʮࣗಈςετͱ͸ɺ։ൃର৅ͷίʔυʹର͢Δςετ΋ίʔυͱͯ͠ॻ͍ͯʢςετίʔυʣɺͦͷίʔυΛ࣮ߦ ͢Δ͜ͱͰςετͷ࣮ࢪΛࣗಈతʹߦ͍ͬͯ͘औΓ૊Έͷ͜ͱͰ͢ʢ࿨ా୎ਓʮอक͠΍͘͢มԽʹڧ͍ιϑτ ΢ΣΞΛࢧ͑Δபɹࣗಈςετͱςετۦಈ։ൃɺͦͷશମ૾ʯ https://gihyo.jp/article/2024/01/automated-test-and- tdd ΑΓʣɻʯ • ίϯϐϡʔςΟϯάϦιʔεΛ׆༻ͯ͠։ൃ͢Δ࣌୅ • ίετͷࢧ෷͍Λ։ൃऀͷίϯϐϡʔλ͔Β੾Γ཭͢͜ͱ͕Ͱ͖Δ • ΑΓίετͷେ͖͍ςετ΋࣮ߦͰ͖ΔΑ͏ʹͳ͖ͬͯͨ • APIςετ΋ͦͷ1ͭ

Slide 25

Slide 25 text

25 APIςεςΟϯάπʔϧʹ ٻΊΒΕΔ͜ͱ

Slide 26

Slide 26 text

26 APIςεςΟϯάπʔϧʹٻΊΒΕΔ͜ͱ APIςεςΟϯάπʔϧΛ։ൃͯ͠ಘͨؾ͖ͮ • ͔͜͜Β঺հ͢Δ͜ͱ͸N=1ͷײ૝Ͱ͢ɻ • Կ͔͠Β͔֬Β͍͠౷ܭσʔλ͕͋ΔΘ͚Ͱ͸ͳ͍ɻ • ͨͩɺඞཁʹײͯ͡APIςεςΟϯάπʔϧΛ։ൃ͠ɺυοάϑʔσΟϯάΛ͠ͳ͕Βػೳ௥Ճ Λଓ͚ɺଞͷํʹ΋࢖ͬͯ΋Βͬͯଟ͘ͷϑΟʔυόοΫΛ΋Β্ͬͨͰͷؾ͖ͮͳͷͰɺҰఆ ͷՁ஋͸͋Δͱࢥ͍ͬͯΔɻ • ߹Θͤͯɺ͜͜·Ͱڞ༗ͨ͠લఏΛ΋ͱʹ͍ͯ͠Δɻ • ͍࣋ͬͯΔલఏ͕ҧ͏ͱࢥ͏ํ͸దٓಡΈସ͑ͯฉ͍͍͚ͯͨͩΔͱ޾͍Ͱ͢ɻ

Slide 27

Slide 27 text

Chaining Requestsʹ ରԠ͍ͯ͠Δ 27

Slide 28

Slide 28 text

28 Chaining RequestsʹରԠ͍ͯ͠Δ Chaining Requests • ʮ/path/to/A ʹϦΫΤετͨ݁͠ՌΛ࢖ͬͯɺ࣍ͷ /path/to/B ʹϦΫΤετ͢Δʯͱ͍͏ Α͏ʹෳ਺ͷϦΫΤετͰ੒ΓཱͭςετγφϦΦ • APIύε୯ҐͰAPIςετΛ͢Δͷ͸࣮͸࣮૷ίετ͕͔͔Δ • ೝূτʔΫϯ͕ඞཁͳAPIύεͳͲɺલఏΛ࡞Δඞཁ͕͋ΔAPIύε͕গͳ͔Βͣ͋ΔͨΊ • ςετର৅ͷ֎͔ΒલఏΛ࡞Δͷ͸಺͔Β࡞ΔΑΓ೉͍͠ • Chaining RequestsͳςετγφϦΦΛ࡞ΕΔͳΒʮೝূτʔΫϯͷ֫ಘ͔Β։࢝͢ΔγφϦ ΦʯʹͰ͖Δ

Slide 29

Slide 29 text

29 Chaining RequestsʹରԠ͍ͯ͠Δ runnͷ৔߹ • ֤ϥϯφʔͷϨεϙϯεσʔλ͸ࣗಈͰه࿥͞ΕࢀরͰ͖ΔΑ͏ʹͳ͍ͬͯΔ • Ϩεϙϯε … HTTPϨεϙϯεɺgRPCϨεϙϯεɺσʔλϕʔεΫΤϦͷϨεϙϯεɺඪ ४ग़ྗ/ඪ४Τϥʔ/ऴྃίʔυ • ಛʹԿ͔هड़͢Δඞཁ͸ͳ͍ • current. ΍ previous. ΍ step[*]. ΍ step.. ͰࢀরͰ͖Δ • ΋ͱ΋ͱChaining RequestsΛҙࣝͯ͠։ൃΛ։࢝ͨ͠ܦҢ͕͋Δ

Slide 30

Slide 30 text

਌࿨ੑͷߴ͍ ςετμϒϧ؀ڥ͕͋Δ 30

Slide 31

Slide 31 text

31 ਌࿨ੑͷߴ͍ςετμϒϧ؀ڥ͕͋Δ ςετμϒϧ؀ڥ • APIςεςΟϯάπʔϧ͕ඞཁͳϨϕϧͷαʔϏε͸ن໛͕େ͖͘ͳΔʢؾ͕͢Δʣ • ྫ͑͹APIΛ࣋ͭΞϓϦέʔγϣϯͱσʔλϕʔε͚ͩͰ׬݁͢Δ͜ͱ͸͋·Γͳ͍ʢؾ͕ ͢Δʣ • A -> B -> C ͱ͍͏APIͷ࿈ܞΛ͢ΔαʔϏε͕͋ͬͨ৔߹ɺB -> CͷAPIςετ͸APIςεςΟϯ άπʔϧͰ࣮ݱͰ͖Δ͕ɺA -> BͷAPIςετΛ࣮ݱ͢ΔͨΊʹ͸CͷαʔϏεͷςετμϒϧ͕ ඞཁʹͳΔ • ςετμϒϧ؀ڥ͸APIςεςΟϯάπʔϧͱಉ༷ʹςετର৅ͷΞϓϦέʔγϣϯͷ֎Ͱߏங Ͱ͖Δ͜ͱ͕๬·͍͠ • ͜͜Ͱ΋ςετର৅ͷ֎͔ΒલఏΛ࡞Δͷ͸಺͔Β࡞ΔΑΓ೉͍͜͠ͱ͕Өڹ͍ͯ͠Δ

Slide 32

Slide 32 text

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 •

Slide 33

Slide 33 text

ςετέʔεʹID͕͋Δ 33

Slide 34

Slide 34 text

34 ςετέʔεʹID͕͋Δ ID • ID=ࣝผࢠ • શͯͷςετέʔεͷத͔Β1ͭͷςετέʔεΛҰҙʹಛఆͰ͖Δࣝผࢠ • େ఍ͷϓϩάϥϛϯάݴޠͷςεςΟϯάπʔϧʹ͸͋Δ • Namespace + Function name • ҟͳΔϓϥοτϑΥʔϜʹ͓͍ͯ΋ҰҙʹಛఆͰ͖Δඞཁ͕͋Δ • CI؀ڥͰ֬ೝͨ͠ID͸ϩʔΧϧʹ͓͍ͯ΋ಉ͡IDͰ͋Δ͜ͱ • ࣮͸౰ॳrunnʹ͸IDͱݺ΂Δ΋ͷ͸ͳ͔ͬͨ

Slide 35

Slide 35 text

35 ςετέʔεʹID͕͋Δ ͳͥID͕ඞཁͳͷ͔ • ࣮ߦίετͷେ͖͞ʹର߅͢ΔͨΊ • ʮ͢΂ͯΛຖճ࣮ߦ͢Δͷ͸ίετ͕େ͖͍ʯͱ͍͏ࢹ఺ • ςετ͕ࣦഊͨ͠ͱ͖ɺશͯΛ࣮ߦ͢Δͱ࣮ߦίετ͕େ͖͍ͨΊࣦഊͨ͠ςετ͚ͩΛ࣮ߦ͠ ͯݕূ͍ͨ͠ … IDΛࢦఆ࣮ͨ͠ߦ • ࣮ߦ͕࣌ؒ௕͍ςετΛಛఆ͍ͨ͠ … IDͱϝτϦΫεͷ࿈ܞ • Αࣦ͘ഊ͢Δςετ͔Βॱʹ࣮ߦͯ͠ɺࣦഊ͢ΔͳΒૣΊʹ݁ՌΛಘ͍ͨ … IDΛࢦఆͨ͠ॱ൪ Ͱͷ࣮ߦ • IDΛ࢖ͬͨॊೈͳ࣮ߦͰର߅͢Δ

Slide 36

Slide 36 text

36 ςετέʔεʹID͕͋Δ runnͷ৔߹ • IDΛಈతʹੜ੒͍ͯ͠Δ • ʢϢχοτςετͱൺ΂ͯʣγφϦΦ͝ͱʹIDΛࢦఆ͢Δͷ͕໘౗ʹͳΔͱ൑அ • खݩͷ։ൃ؀ڥͰ΋CI؀ڥͰ΋ҰҙʹID͕ੜ੒Ͱ͖Δඞཁ͕͋Δ • ؀ڥ͕ҧ͏ͱγφϦΦϑΝΠϧͷઈରύε͸ҧ͏ • runnͷ࣮ߦσΟϨΫτϦ΋ҧ͏͜ͱ͕͋Δ • runn path/to/*.yml ΍ runs ../path/to/*.yml • γφϦΦͷ಺༰Λमਖ਼ͯ͠΋ಉ͡IDͰ͋Δඞཁ͕͋Δ

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

APIεΩʔϚͱͷ࿈ܞ͕͋Δ 38

Slide 39

Slide 39 text

39 APIεΩʔϚͱͷ࿈ܞ͕͋Δ APIͷI=ΠϯλʔϑΣΠε • APIςετ͸ʮAPIͷI=ΠϯλʔϑΣΠεʯͱ͍͏ڥքʢ͔Βʣͷςετ • APIͷςετέʔεࣗମ͕͋Δఔ౓ਖ਼͍͜͠ͱΛ֬ೝ͢Δखஈͱͯ͠APIεΩʔϚͱͷ࿈ܞ͕͋Δ • OpenAPIͷDocumentɺProtocol BuffersͷఆٛϑΝΠϧʢ.protoϑΝΠϧʣͳͲ • ʮAPIεΩʔϚʹ߹க͍ͯ͠Δ͔Ͳ͏͔ʯΛҰछͷܖ໿ςετͱͯ͠࢖༻͢Δ • ϦΫΤετ͕APIεΩʔϚʹ߹க͍ͯ͠ͳ͚Ε͹Τϥʔɺͱಉ࣌ʹϨεϙϯε͕APIεΩʔϚʹ߹ க͍ͯ͠ͳ͚Ε͹Τϥʔ • APIεΩʔϚͱ͍͏ܖ໿ͷҧ൓Λݕग़

Slide 40

Slide 40 text

40 APIεΩʔϚͱͷ࿈ܞ͕͋Δ runnͷ৔߹ • ֤ϥϯφʔʹAPIεΩʔϚΛࢦఆ͢Δ͜ͱͰ࿈ܞͰ͖Δ • OpenAPI Spec v3ͱProtocol Buffers v2/v3 ʹରԠ • ςετதͷશͯͷϦΫΤετ/ϨεϙϯεΛ֬ೝ͠APIεΩʔϚͱ߹க͠ͳ͚Ε͹ଈΤϥʔʹ͢Δ

Slide 41

Slide 41 text

ϙʔλϏϦςΟ͕͋Δ 41

Slide 42

Slide 42 text

42 ϙʔλϏϦςΟ͕͋Δ ϙʔλϏϦςΟ • ʮՄൖੑʯʮҠ২ੑʯ • ʮ࠶ར༻ੑʯ΋ • ·ͣ։ൃ؀ڥͱCI؀ڥͰಉҰͷ؀ڥʹͳΔΑ͏ʹ͠΍͍͢ঢ়ଶͳ͜ͱ͕๬·͍͠ • CIϑϨϯυϦ • ͞Βʹ࣮૷ίετ͕େ͖͍APIςετͷγφϦΦΛ༗ޮ׆༻͢Δ͜ͱͰඅ༻ରޮՌΛ͍͋͛ͨ • ෛՙࢼݧͱͯ͠ • ຊ൪؀ڥ΁ͷ֎ܗ؂ࢹɾܭଌͱͯ͠ • APIૢ࡞ͷϥϯϒοΫͱͯ͠

Slide 43

Slide 43 text

43 ϙʔλϏϦςΟ͕͋Δ runnͷ৔߹ • ෛՙςετػೳ • runn run Λ runn loadt ʹίϚϯυΛมߋ͢Δ͜ͱͰςετγφϦΦΛͦͷ··ෛՙςετʹ͢Δ͜ͱ͕Մೳ • ؀ڥม਺ల։ػೳ • ֤γφϦΦʹ͓͍ͯ؀ڥม਺ͷల։ʹରԠ͍ͯ͠ΔʢσϑΥϧτ஋ͷઃఆ΋Մೳʣ • ໊લղܾػೳ • curl ——resolveʹ૬౰͢ΔػೳΛ֤ϥϯφʔ͕͍࣋ͬͯΔ • ϖύϘͰ͸ϓϩΩγαʔόͷςετʹ࢖͍ͬͯΔ • ϦϞʔτγφϦΦ࣮ߦػೳ • http:// ΍ github:// ɺ gist:// ͱ͍ͬͨεΩʔϚʹରԠ͠ϦϞʔτϑΝΠϧΛγφϦΦͱ࣮ͯ͠ߦͰ͖Δ • Faker • ͍ΘΏΔμϛʔσʔλੜ੒ث • ຖճσʔλετΞͷ஋Λ៉ྷʹ͢Δඞཁ͕͋ΔΑ͏ͳϙʔλϏϦςΟͷ໘Ͱෆར • ྫɿݻఆͷςετϝʔϧΞυϨεͩͱຊ൪؀ڥͰαΠϯΞοϓςετ͕Ͱ͖ͳ͍ • ʮຖճσʔλετΞΛ៉ྷʹ͢Δʯඞཁ͕ͳ͍ͱϙʔλϏϦςΟ͚ͩͰͳ࣮͘ߦίετͷ໘ͰϝϦοτ͕͋Δ

Slide 44

Slide 44 text

44 ͓ΘΓʹ

Slide 45

Slide 45 text

45 ͓ΘΓʹ ͓ΘΓʹ • APIςεςΟϯάπʔϧ͸Ϣχοτςετͷπʔϧ΍E2EςεςΟϯάπʔϧΑΓ΋ɺ։ൃ؀ڥ Ͱ΋ຊ൪؀ڥͰ΋࢖ΘΕΔ͜ͱ͕ଟ͍ • APIςετͷଟ͕͘ϛσΟΞϜςετҎ্Ͱ͋Δ͜ͱ͔Β࣮૷ίετ΍࣮ߦίετ͕εϞʔϧς ετΑΓ΋େ͖͍ɻͦͷ෼ޮՌΛ࠷େʹ͍ͨ͠ͱ͍͏ཁٻ͕͋Δ • ʮ࣮ߦ࣌ͷίϯϐϡʔςΟϯάϦιʔείετ͸ͦ͜·ͰؾʹͳΒͳ͍͕ɺ࣮ߦ࣌ؒ΍࣮ ૷ίετ͸ͳΜͱ͔͍ͨ͠ʯͱͳΓ͕ͪ • ࠓճ঺հͨ͠ʮAPIςεςΟϯάπʔϧʹٻΊΒΕ͍ͯΔ͜ͱʯ͔Βબఆ΍ൃలͷͨΊͷؾ͖ͮ Λಘͯ΋Β͑ͨΒ޾͍Ͱ͢ɻ

Slide 46

Slide 46 text

46 PR

Slide 47

Slide 47 text

47 PR • by @k2tzumi • https://qiita.com/advent-calendar/2023/runn- tutorial • APIγφϦΦςετπʔϧͰ΋͋Δ runn ͷ࢖ ͍ํΛεςοϓόΠεςοϓͰཧղ͍ͯ͘͠ νϡʔτϦΞϧ runn։ൃऀʹΑΔrunnνϡʔτϦΞϧ

Slide 48

Slide 48 text

48 PR runn։ൃऀʹΑΔrunnΫοΫϒοΫ • by @k1LoW • https://zenn.dev/k1low/books/runn-cookbook • Ұ෦༗ྉͰ͕͢ଟ͘Λແྉެ։͍ͯ͠ΔͷͰ ͚ͦͩ͜Ͱ΋Ͱ͖Δ͜ͱ͕ݟ͖͑ͯ·͢

Slide 49

Slide 49 text

49 Thank you!!!