Slide 1

Slide 1 text

RubyͰ͸͡ΊΔࣗಈςετ ࣛࣇౡRubyձٞ02 େ૔խ࢙ʢOKURA Masafumiʣ 2022-03-04, mark MEIZAN

Slide 2

Slide 2 text

ࣗಈςετ

Slide 3

Slide 3 text

ॻ͍͍ͯΔਓ—

Slide 4

Slide 4 text

ࠓ೔ͷ໨ඪ

Slide 5

Slide 5 text

ࣗಈςετ ʹ͍ͭͯͷ ֓ཁͷཧղ

Slide 6

Slide 6 text

ࠓ೔ͷ͓࿩ 1. ࣗಈςετʹ͍ͭͯ 2. Rubyʹ͓͚Δࣗಈςετ 3. ྑ͍ࣗಈςετͱ͸ 4. ࣮ԋʂςετϑΝʔετ

Slide 7

Slide 7 text

ͦͷલʹ

Slide 8

Slide 8 text

ࣗݾ঺հ

Slide 9

Slide 9 text

Okura.introduce(self) • ໊લɿେ૔խ࢙ • ॴଐɿϑϦʔϥϯε • ՝֎׆ಈɿKaigi on RailsɺGrow.rbɺRubygems Code Reading෦ɺ֤छొஃɺOSS׆ಈɺRails GirlsίʔνɺϑΟ ϤϧυϒʔτΩϟϯϓͷΞυόΠβʔ • ॳࣛࣇౡ

Slide 10

Slide 10 text

1. ࣗಈςετ ʹ͍ͭͯ

Slide 11

Slide 11 text

ࣗಈςετͱ͸

Slide 12

Slide 12 text

ϓϩάϥϜͱͯ͠ ࣮૷͞Εͨςετ

Slide 13

Slide 13 text

ϓϩάϥϜͳͷͰ ࣗಈԽ͕؆୯

Slide 14

Slide 14 text

ςετͳͷͰ ͋ΔछͷݕূΛ ߦ͏

Slide 15

Slide 15 text

ࣗಈςετʹ͍ͭͯ 1. ࣗಈςετͷԸܙ 2. ࣗಈςετͷछྨ 3. ࣗಈςετͷ஫ҙ఺

Slide 16

Slide 16 text

1.1 ࣗಈςετͷ Ըܙ

Slide 17

Slide 17 text

ࣗಈςετ͸Կ͕خ͍͠ͷ͔ʁ • ίʔυʹର͢ΔυΩϡϝϯτʹͳΔ • ίʔυͷWhatΛઆ໌͢Δ • όάͷ࠶ൃʢϦάϨογϣϯʣΛ๷͙ • ϦϑΝΫλϦϯάͷॿ͚ʹͳΔʢ΄΅ඞਢʣ • ʢςετΛઌʹॻ͘৔߹ʣίʔυͷ඼্࣭͕͕Δ • ʮςετϑΝʔετʯ

Slide 18

Slide 18 text

1.2 ࣗಈςετͷ छྨ

Slide 19

Slide 19 text

ࣗಈςετͷछྨ • ୯ମςετʢϢχοτςετʣ • ଞͷίϯϙʔωϯτ͔Β੾Γ཭ͯ͠ςετ • ݁߹ςετ • ͍͔ͭ͘ͷίϯϙʔωϯτΛ૊Έ߹Θͤͯςετ

Slide 20

Slide 20 text

1.3 ࣗಈςετͷ ஫ҙ఺

Slide 21

Slide 21 text

ࣗಈςετͰ஫ҙ͢΂͖͜ͱ • ʮόά͕ͳ͍ʯ͜ͱͷূ໌ʹ͸ͳΒͳ͍ • ʮςετ͕௨ͬͨʂˠόάͬͯͨorzʯΈ͍ͨͳ͜ͱ΋ Α͋͘Δ • ίʔυΛॻ͍͔ͯΒςετΛॻ͘ͱେมʹͳΓ͕ͪ • ςετϑΝʔετͷํָ͕ʢݸਓͷҙݟͰ͢ʣ

Slide 22

Slide 22 text

͜ͷ࣌఺Ͱ ఻͑ͯ ͓͖͍ͨ͜ͱ

Slide 23

Slide 23 text

ࣗಈςετ͸ ॻ͘΋ͷ

Slide 24

Slide 24 text

ࣗಈςετ͸جຊతʹ͸ॻ͘ • ʮςετϑΝʔετʯ͔ʮςετϥετʯ͔͸ͲͪΒͰ ΋Α͍ • MiniTest͔RSpec͔͸ͲͪΒͰ΋Α͍ • ࡉ͔͍͜ͱ΋ׂͱؾʹ͠ͳ͍ͰΑ͍ • ͱʹ͔͘ॻ͘

Slide 25

Slide 25 text

ॻ͔ͳ͍ޙչ ΑΓ ॻ͘ޙչ

Slide 26

Slide 26 text

2. Rubyʹ͓͚Δ ࣗಈςετ

Slide 27

Slide 27 text

Rubyͷੈքʹ͸ ͨ͘͞Μͷςετ gem͕͋Γ·͢

Slide 28

Slide 28 text

ςετgemͷখ෼ྨ 1. ςετϑϨʔϜϫʔΫ 2. ಛఆ༻్޲͚DSL 3. αϙʔτϥΠϒϥϦ

Slide 29

Slide 29 text

2.1 ςετ ϑϨʔϜϫʔΫ

Slide 30

Slide 30 text

RubyͷςετϑϨʔϜϫʔΫ • RSpec • μ΢ϯϩʔυ਺͕࠷ଟɺ൚༻ςετDSLͰ΋͋Δ • MiniTest • xUnitܥ౷ɺεϐʔυͱγϯϓϧ͕͞΢Ϧ • Test::Unit • ࠷ݹͷςετϑϨʔϜϫʔΫɺxUnitܥ౷

Slide 31

Slide 31 text

2.2 ಛఆ༻్޲͚ DSL

Slide 32

Slide 32 text

ಛఆ༻్޲͚DSL • Capybara • ϒϥ΢βૢ࡞ͷͨΊͷDSL • Cucumber • ड͚ೖΕςετͷͨΊͷDSLɺ೔ຊޠ͕ॻ͚Δ

Slide 33

Slide 33 text

2.3 αϙʔτ ϥΠϒϥϦ

Slide 34

Slide 34 text

αϙʔτϥΠϒϥϦ • FactoryBot • ςετσʔλʢߏ଄Խ͞Εͨσʔλʣͷੜ੒ • Faker • ϥϯμϜσʔλʢϝʔϧΞυϨε΍໊લͳͲʣ • Timecop • ࣌ؒΛૢ࡞͢Δ

Slide 35

Slide 35 text

3. ྑ͍ࣗಈςετ ͱ͸

Slide 36

Slide 36 text

ྑ͍ࣗಈςετͷϙΠϯτ • ࣗಈςετ͸ίʔυͳͷͰɺྑ͍ίʔυͷݪଇΛద༻͢Δ • Մಡੑʢ໋໊ɺཻ౓ͷখ͞͞ͳͲʣ • ద੾ͳߏ଄Խ • ࣮ߦ࣌ؒͷ୹͞ • ແବͳσʔλੜ੒Λආ͚ΔʢಛʹσʔλϕʔεΞΫηε͸஗͍ʣ • ୯ମςετʹدͤΔʢ݁߹ςετ͸஗͍ʣ

Slide 37

Slide 37 text

࿦఺ • RSpecͩͱྑ͍ςετʹ͍ͭͯٞ࿦ʹͳΓ͕ͪ • letͱlet!ͱbeforeͷ࢖͍෼͚ • contextͱitʹ೔ຊޠΛ࢖͑Δ͔ʁ • etc… • ϩʔΧϧͳ׳शʹै͏ͷ͕٢

Slide 38

Slide 38 text

4. ࣮ԋʂ ςετϑΝʔετ