Slide 1

Slide 1 text

runn is a package/tool for running operations following a scenario. খࢁ݈Ұ࿠ / GMO PEPABO inc. 2022.5.19 golang.tokyo #32 1

Slide 2

Slide 2 text

2

Slide 3

Slide 3 text

• GoͰAPIαʔόΛ։ൃ͍ͯ͠Δ • ୯ҰͷAPIΤϯυϙΠϯτͷςετͰ͸ͳͯ͘ෳ਺ͷAPIΤϯυϙΠϯτΛ·͍ͨͩ ςετΛॻ͖͍ͨ • ྫ: ϝʔϧೝূΛؚΜͩαΠϯΞοϓ • ྫ: γϣοϐϯάΧʔτʢ঎඼બ୒͔Βߪೖ׬ྃ·Ͱʣ • APIΤϯυϙΠϯτͰσʔλϕʔεૢ࡞͕͋ΔͷͰ͋Ε͹ςετσʔλϕʔεΛ༻ҙ ࣮ͯ͠ࡍʹಡΈॻ͖΋ൃੜ͢ΔςετΛॻ͖͍ͨ 3 https://github.com/k1LoW/runn ։ൃͷϞνϕʔγϣϯ

Slide 4

Slide 4 text

• runn ( means "Run N" ) is a package/tool for running operations following a scenario. • γφϦΦΛYAMLʹॻ͍ͯͦΕΛ࢖ͬͨςετΛ࣮ߦͰ͖Δύοέʔδ/πʔϧ • ࣮੷ͷ͋ΔΑ͘஌ΒΕ͍ͯΔπʔϧͱͯ͠͸ https://github.com/zoncoen/scenarigo ͕͋Δ • ಛ௃ͱͯ͠͸ҎԼͷ௨Γ • γφϦΦ࣮ߦͷCLIίϚϯυʢπʔϧʣͱͯ͠࢖༻Ͱ͖Δ • GoͷTest Helperʢύοέʔδʣͱͯ͠࢖༻Ͱ͖Δ • γφϦΦϑΝΠϧͷϑΥʔϚοτ͕OpenAPI SpecϥΠΫ • γφϦΦ಺ͷεςοϓؒͷ஋ͷ࿈ܞ͕ߟྀ͞Ε͍ͯΔ 4 https://github.com/k1LoW/runn runn

Slide 5

Slide 5 text

• runn͸࠷ऴతʹ1ͭҎ্ͷγφϦΦΛ࣮ߦͯ͠ɺͦΕͧΕͷ੒ޭ/ࣦഊΛΈΔ • γφϦΦ͸1ͭҎ্ͷεςοϓ͔Βߏ੒͞Ε͍ͯΔ • 1γφϦΦ1YAMLϑΝΠϧʹͳ͍ͬͯΔʢRunbookͱݺΜͰ͍Δʣ • γφϦΦ͝ͱʹRunnerͱݺΜͰ͍Δεςοϓ࣮ߦίϯϙʔωϯτΛఆٛ͠ɺͦͷRunnerΛ࢖֤ͬͯ εςοϓΛ࣮ߦ͍ͯ͘͠ • Runnerʹ͸γφϦΦ಺ʹఆ͕ٛඞཁͳ௨ৗͷRunnerͱɺطʹrunnͰ༻ҙ͍ͯ͠ΔBuilt-in runnerͷ2 छྨ͕͋Δ • Runner: HTTP Runner, DB Runner • Built-in runner: Exec runner, Test runner, Dump runner, Include runner, Bind runner 5 https://github.com/k1LoW/runn ΞʔΩςΫνϟ

Slide 6

Slide 6 text

6 γφϦΦʢRunbookʣΛॻ͘

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

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

• runn͸Test helperͱͯ͠࢖༻͢Δͱ͖ɺγφϦΦʹఆٛͯ͠ΔRunnerΛࠩ͠ସ͑Δ͜ͱ͕Ͱ͖Δ • HTTP RunnerͷϦΫΤετઌΛ httptest.Server ͷURLʹͨ͠Γ • http.HandlerΛ౉ͯ͠௚઀ http.Handler ʹϦΫΤετΛ౉͢Α͏ʹͨ͠Γ • DB RunnerͷΫΤϦ࣮ߦઌΛผͷςετσʔλϕʔεʹͨ͠Γ 16 https://github.com/k1LoW/runn Test helperͱͯ͠ͷརศੑΛ޲্ͤ͞Δ޻෉ (1/2)

Slide 17

Slide 17 text

17 https://github.com/k1LoW/runn As a test helper using httptest.Server

Slide 18

Slide 18 text

18 https://github.com/k1LoW/runn As a test helper with http.Handler

Slide 19

Slide 19 text

• γφϦΦࣗମ͕ؒҧ͍ͬͯͳ͍Α͏ʹ͢Δ޻෉ͱͯ͠HTTP Runnerͷ৔߹ɺεΩʔϚʹԊͬͨόϦ σʔγϣϯΛಉ࣌ʹ૸ΒͤΔ࢓૊ΈΛఏڙ͍ͯ͠Δʢݱࡏ͸ OpenAPI Spec v3ͷΈରԠʣ • ʮͦ΋ͦ΋ͦͷγφϦΦͷϦΫΤετ͕ؒҧ͍ͬͯΔʯΛ๷͙ • ͍ͭͰʹʮϨεϙϯε͕ؒҧ͍ͬͯΔʯ΋ݟ͚ͭΔ 19 https://github.com/k1LoW/runn Test helperͱͯ͠ͷརศੑΛ޲্ͤ͞Δ޻෉ (2/2)

Slide 20

Slide 20 text

͓ΘΓʹ 20

Slide 21

Slide 21 text

• ·ͩ࢖͍࢝Ίͨ͹͔Γ͕ͩɺݸਓతʹ͸େ͖Ίͷςετ͕ΧδϡΞϧʹॻ͖΍͘͢ ͳͬͨͱײ͍ͯ͡Δ • σʔλϕʔεͷ஋Λ௚઀࢖༻ͨ͠ςετ͕ॻ͚Δͷ͕Τά͍͕ศར • ࠓճ঺հ͍ͯ͠ͳ͍Include runner΍Bind runnerͳͲʹڵຯ͕͋Δํ͸ README Λ ͝ཡ͍ͩ͘͞ • ࠓޙͷల๬ͱͯ͠͸ɺgRPCରԠΛͯ͠Έ͍ͨ 21 https://github.com/k1LoW/runn ͓ΘΓʹ

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Thank You! Thank You! 23

Slide 24

Slide 24 text

24 ͓·͚

Slide 25

Slide 25 text

• github.com/k1LoW/duration • “3 days 4 hours” Έ͍ͨͳจࣈྻ͔Β΋ time.Duration Λੜ੒͢Δ • github.com/k1LoW/expand • YAMLϑΝΠϧʹҰׅͰ os.ExpandEnv Λద༻ͨ͠Γ͢Δͷʹ࢖༻͍ͯ͠Δ 25 ͓·͚ runnͷgo.modʹ͍ΔΦϨΦϨϥΠϒϥϦ2બ