Slide 1

Slide 1 text

My TDD Speaker: େ૔խ࢙ Event: େߐށRubyձٞ08 Date: 2020-02-11

Slide 2

Slide 2 text

ϝλ • εϥΠυຕ਺ɿ44ຕ • ൃද࣌ؒɿ20෼ • σϞɿ༗Γ

Slide 3

Slide 3 text

okuramasafumi.inspect • ໊લɿେ૔խ࢙ • ॴଐɿϑϦʔϥϯε • ίϛϡχςΟɿGrow.rbओ࠵ɺͦͷଞଟ਺ࢀՃ • Rubyྺɿ໿7೥ • झຯɿϓϩάϥϛϯάɺొஃɺᘖᘣɺӳޠ

Slide 4

Slide 4 text

໨࣍ 1. My TDD (first part) 2. My gem 3. My TDD (second part) 4. ࠂ஌

Slide 5

Slide 5 text

1. My TDD (first part)

Slide 6

Slide 6 text

झຯɿϓϩάϥϛϯά

Slide 7

Slide 7 text

ϓϩάϥϛϯά͸ָ͍͠

Slide 8

Slide 8 text

Ͱ΋ɺଞʹ΋༠࿭͕ଟ͍

Slide 9

Slide 9 text

ͦ͜Ͱ…

Slide 10

Slide 10 text

TDD ➡

Slide 11

Slide 11 text

TDD ➡ Todan Driven Development

Slide 12

Slide 12 text

झຯɿొஃ

Slide 13

Slide 13 text

ࣗ෼ͷ࡞Διϑτ΢ΣΞʹ͍ͭͯൃද͢Δ ͜ͱͰ։ൃʹϓϨογϟʔΛ͔͚Δ

Slide 14

Slide 14 text

ࠓͷॴͱͯ΋ޮՌ͕͋Δ

Slide 15

Slide 15 text

͜Ε͕ࢲͷTDD

Slide 16

Slide 16 text

༨ஊɿ ඈߦػ΍৽װઢͷத͸࠷ߴͷϓϩάϥϛϯ ά؀ڥ

Slide 17

Slide 17 text

༨ஊͷ༨ஊɿ ࠓ೥͸طʹ৽װઢʹ1ճͱඈߦػʹ2ճ৐ͬ ͍ͯ·͢ɻ͍ͩͿḿΓ·ͨ͠ɻ

Slide 18

Slide 18 text

͞Βʹ༨ஊɿ ։ൃΛਐΊΔͨΊͷख๏ͱͯ͠ɺTODO͕ ࣌ݶര஄ʹͳΔΑ͏ͳgemΛॻ͍͍ͯΔਓ ͕͍·ͨ͠Ͷʢૉఢʣ

Slide 19

Slide 19 text

༨ஊऴΘΓ

Slide 20

Slide 20 text

ࠓ೔఻͍͑ͨ͜ͱͦͷұ • ϓϩάϥϛϯά͸ָ͍͠ • ొஃ͸ָ͍͠ • ૊Έ߹ΘͤͨΒ࠷ڧͰ͸ʁ • ΈΜͳ΋ͲΜͲΜొஃͯ͠ͲΜͲΜίʔυॻ͜͏

Slide 21

Slide 21 text

ͰɺԿΛ࡞͍ͬͯΔΜͰ͔͢ʁ

Slide 22

Slide 22 text

2. My gem

Slide 23

Slide 23 text

JSONγϦΞϥΠβΛ࡞͍ͬͯ·͢ɻ

Slide 24

Slide 24 text

طଘͷJSONγϦΞϥΠβͷ͜ͱ • jbuilderɿ஗͍ɺDSL݁ߏ೉͍͠ • ActiveModelSerializersɿϝϯς͞ΕͯΔͷ͔Θ͔Βͳ͍ɺ಺ ෦ߏ଄ෳࡶɺ͋·Γ଎͘ͳ͍ • fast_jsonapiɿ଎͍͚ͲJSON:APIܗ͔ࣜ͠αϙʔτ͠ͳ͍

Slide 25

Slide 25 text

γϯϓϧͰɺϝϯς͕؆୯Ͱɺ DSL͕֮͑΍ͯ͘͢ɺͦͦ͜͜଎͍ɺ JSONγϦΞϥΠβΛ࡞Γ͍ͨʂ

Slide 26

Slide 26 text

Alba https://github.com/okuramasafumi/alba

Slide 27

Slide 27 text

0.1.0૬౰ͷ΋ͷ͕Ͱ͖ͨؾ͕͍ͯ͠·͢

Slide 28

Slide 28 text

ͳͷͰɺϦϦʔε͠·͢

Slide 29

Slide 29 text

Albaͷػೳʢࠓ೔࣌఺ʣ • JSONͷϧʔτΩʔΛઃఆՄೳ • attributesϝιουͰJSONʹؚΊΔଐੑΛෳ਺ࢦఆՄೳ • attributeϝιουͰJSONʹؚΊΔଐੑΛϒϩοΫͰࢦఆՄೳ • JSONͷόοΫΤϯυʹOjΛࢦఆՄೳ

Slide 30

Slide 30 text

ࠓ೔఻͍͑ͨ͜ͱͦͷ್ • Alba͍ͬͯ͏gemΛ࡞͍ͬͯ·͢ • ػೳ͸·ͩશવ଍Γͳ͍͚Ͳɺ͜Ε͔ΒΨγΨγ௥Ճ͍ͨ͠ • طଘͷ΋ͷʹෆຬ͕͋ΔͳΒ࡞Ε͹͍͍͡Όͳ͍ • ௥Ճ͢΂͖ػೳʹ͍ͭͯͷҙݟɺ͓଴͍ͪͯ͠·͢

Slide 31

Slide 31 text

ۤ࿑ͨ͠఺ • ΫϥεϝιουͷDSLͰઃఆͨ͠৘ใΛΠϯελϯε͔Βࢀর ͢ΔΑ͏ʹ͢Δ࢓૊Έ • ࣮ޮੑ͕͋Δఔ౓͋ΔςετΛॻ͘͜ͱ • શମతͳUIͱઃܭ

Slide 32

Slide 32 text

ςετͱUI

Slide 33

Slide 33 text

3. My TDD (second part)

Slide 34

Slide 34 text

طଘͷϥΠϒϥϦʹ໰୊఺Λײ͡Δ ≠ ͲΜͳ;͏ʹվળ͢Ε͹͍͍͔Θ͔Δ

Slide 35

Slide 35 text

ςετΛॻ͖ͳ͕Β୳͍ͬͯ͘

Slide 36

Slide 36 text

TDD ➡ Test Driven Development

Slide 37

Slide 37 text

ࢲͷ࠾༻ͨ͠ํ๏ • ·ͣϢʔεέʔεͷςετΛॻ͘ʢ࢓༷ࡦఆʣ • ͳΜ͔ҧ࿨ײ͕͋ͬͨΒςετΛॻ͖௚͢ʢ࢓༷มߋʣ • ςετʹೲಘ͕͍ͬͨΒ࣮૷͢Δ • ࣮૷͕ऴΘͬͨΒݸผͷΫϥεͷςετΛޙ͔Β௥Ճ͢Δʢ࣮ ͸·ͩॻ͍ͯͳ͍ʣ

Slide 38

Slide 38 text

ϘτϜΞοϓͰ͸ͳ͘τοϓμ΢ϯ

Slide 39

Slide 39 text

͜Ε͕ࢲͷTDD

Slide 40

Slide 40 text

ࠓ೔఻͍͑ͨ͜ͱͦͷࢀ • ࢓༷ͱ͔ɺͲ͏͍͏ΠϯλʔϑΣʔε͕ཧ૝͔ͳΜͯͦ͏؆୯ ʹ͸Θ͔Βͳ͍ • ϢʔεέʔεΛςετԽͯ͠ɺೲಘߦ͘·Ͱॻ͘ • Ϣχοτςετ͸ޙ෇͚Ͱ͍͍ͷͰ͸

Slide 41

Slide 41 text

4. ࠂ஌

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

https://kaigionrails.org

Slide 44

Slide 44 text

·ͱΊ • ϓϩάϥϛϯάͱొஃ͸ָ͍͠ɺ૊Έ߹ΘͤΔͱ΋ͬͱָ͍͠ • Alba͍ͬͯ͏gemɺ࡞ͬͯ·͢ • τοϓμ΢ϯͰϢʔεέʔε͔ΒςετΛॻ͘ͱ͍͍͔΋ • Kaigi on Railsɺ΍Γ·͢