Slide 1

Slide 1 text

My Favorite Tools @a_matsuda

Slide 2

Slide 2 text

ຊ೔ͷλΠτϧ ʮະఆʢΦʔϓϯιʔεͱͷ
 ؔΘΓํͱ։ൃ؀ڥʹؔ͢Δ
 ͓࿩ͷ༧ఆʣʯ

Slide 3

Slide 3 text

٢Ԭ͞Μ͔Β͍͍͓ͨͩͨ୊ ʮ։ൃ؀ڥͷ঺հɾͦͷଞ։ൃʹ ར༻͢Δπʔϧʯ

Slide 4

Slide 4 text

ͱ͍͏Θ͚Ͱɺࠓ೔͸ࣗ෼͕ ޷͖ͳ࢓ࣄಓ۩ͷ࿩Λ͠·͢

Slide 5

Slide 5 text

whoami

Slide 6

Slide 6 text

Creator of kaminari active_decorator action_args ͳͲͳͲ͍Ζ͍Ζ

Slide 7

Slide 7 text

kaminari amatsuda/kaminari

Slide 8

Slide 8 text

kaminari ΋͏͖͡6೥ όʔδϣϯ͸ɺ·ͩ0 0.17ͱ͔͍͏ͻͲ͍όʔδϣϯ
 ൪߸

Slide 9

Slide 9 text

kaminari 1.0 RC൛͕ग़·ͨ͠ What's new in 1.0 gem෼཭ API͕͸͖ͬΓͨ͠ ৔߹ʹΑͬͯ஍ຯʹΫΤϦͷຊ਺͕ݮΔ without_countϞʔυ ΋͏ͪΐͬͱΤΫετϦʔϜͳ΍ͭ

Slide 10

Slide 10 text

ࠓ͙͢ࢼͯ͠Έ͍͚ͯͨͩΔ ͱ͋Γ͕͍ͨͰ͢ gem 'kaminari', '1.0.0.rc1'

Slide 11

Slide 11 text

ͪͳΈʹɺ͜ͷ࣌ظʹϦϦʔ ε͕Ͱ͖Δͱ͍͏͜ͱ͸ɺ ੈؒͷ͓લΒ͕ϒϩάͩͷϙΤϜ ͩͷΛಡΜͩΓॻ͍ͨΓͯ͠༡Μ ͰΔؒʹɺOSS։ൃऀ͸ͪΌΜͱ ίʔυΛॻ͍ͨΓίʔυΛॻ͍ͨ Γͯ͠·͢Αɺͱ͍͏͜ͱͰ͢Ͷ

Slide 12

Slide 12 text

Committer of ruby railsͳͲ haml carrierwave simplcov ͳͲͳͲ Ұ൪࠷ۙͰ͸md2key

Slide 13

Slide 13 text

md2key k0kubun/md2key

Slide 14

Slide 14 text

md2key ΋͸΍͜Εແ͠Ͱ͸εϥΠυ࡞Ε ͳ͍ Vimͱ͔iPhoneͱ͔ͰεϥΠυ͕ ॻ͚Δ

Slide 15

Slide 15 text

md2keyͷྑ͘ͳ͍ͱ͜Ζ ͜ΕΛ࢖͏Α͏ʹͳΔͱɺൃද਺͙࣌ؒΒ͍લ ·Ͱ Keynote.app Λىಈ͠ͳ͍Α͏ʹͳΔ εϥΠυΛॻ͍ͯΔ͸ͣͩͬͨͷʹɺmd2keyͷ ڍಈ͕ؾʹͳͬͯ͏͔ͬΓmd2keyͷϋοΫΛ
 ࢝Ίͯ͠·͏ RabbitΛ࢖ͬͯΔਓͨͪ͸͜͏͍͏ؾ࣋ͪ
 ͳͷ͔ʔ

Slide 16

Slide 16 text

ઌ೔ͷRubyConf Brazilͷ
 Ωʔϊʔτͷલ೔ yak shaving͕͸͔Ͳ͍ͬͯΖ͍Ζ ύονॻ͍ͯͨΒίϛοτݖ͕ ͖߱ͬͯͨ

Slide 17

Slide 17 text

ίϛολʔʹͳͬͯΈͯ
 Θ͔ͬͨ͜ͱ πʔϧ͸࢖͏࣌ʹ͔͠έΞ͠ͳ͍ ϓϨθϯπʔϧͷϋοΫ͸ϓϨθϯ ͷલ೔ʹͳΒͳ͍ͱઈରʹ͠ͳ͍ ͨͩͰ͑͞ςϯύͬͯΔϓϨθϯͷ લ೔ʹ΍Δ͜ͱ͕ແବʹ૿͑ͨ

Slide 18

Slide 18 text

࢖༻ྫ

Slide 19

Slide 19 text

ࡢ೔ͷൃදεϥΠυ 3೔લ͙Β͍͔ΒɺͳΜͱͳ͘஻Γ͍ͨ͜ͱΛiPhoneͷNotesͰϦετΞοϓ࢝͠ΊΔ ౡࠜʹ޲͔͏ిंͱඈߦػͷதͰɺετʔϦʔͷΠϝʔδ͕ఱ͔Β߱ͬͯ͘ΔͷͰɺ
 ͦΕΛ೴಺ʹμ΢ϯϩʔυͯ͠iPhoneͰՕ৚ॻ͖ΛҰؾʹ๲Β·ͤΔ ۭߓ͔Βদߐʹ޲͔͏όεͷதͰ Keynote.app Λىಈͯ͠ྲྀ͠ࠐΉ(ྡʹ࠲ͬͨਿݪ͞Μ ʹโΕΒΕͳ͕Β) ձ৔ʹண͍͔ͯΒ࣌ؒΪϦΪϦ·Ͱ(ͱ͍͏͔ؒʹ߹ͬͯͳ͍)ମࡋΛ੔͑ͨΓ͢Δ ͷͰσβΠϯͱ͔ϑΥϯτͱ͔͸΄΅ Keynote.app ͷσϑΥϧτͷ·Μ· (͢Έ·ͤΜ) શͯࢥ͍ग़͠ϕʔεͳͷͰɺࣄ࣮ؔ܎ͱ͔ۃΊͯ͋΍;΍(ͻͲ͍) ૉৼΓͱ͔Ұ੾͠ͳ͍ͷͰ(ӳޠͰ΋ΩʔϊʔτͰ΋΍ͬͨ͜ͱͳ͍)ɺ࣌ؒΛΊͬͪΌ Φʔόʔͨ͠Γ͢Δ(΄Μͱ͍͢·ͤΜ)

Slide 20

Slide 20 text

ࠓ೔ͷൃදεϥΠυ ਲͬ෷ͬͯ൒෼৸ͳ͕Β෍ஂͷதͰ iPhoneͰϝϞΛॻ͘ ேձ৔ʹ͍͔ͭͯΒVimΛىಈͯ͠৭ʑ ॻ͖଍͢ ߨԋ1࣌ؒલ͔ΒKeynote.appʹྲྀ͠ࠐΈ ͸͡ΊΔ

Slide 21

Slide 21 text

ͱ΋͋Ε

Slide 22

Slide 22 text

ͦΜͳࡢ೔ͷτʔΫͷ
 ͋Β͢͡ ʮίϛολʔ͔ΒݟͨRuby on Railsʯ Railsͷίʔυʹ͸ίϛολʔͨͪͷ10೥ؒ ͷ͍ΖΜͳࢥ͍΍υϥϚ͕٧·ͬͯΔ͔ ΒɺίϛοτϩάಡΜͰΈΔͱ໘ന͍Α ϚχΞࢹ఺ͰͷRails΍OSSͷָ͠ΈํΛ
 ղઆͨͭ͠΋Γ

Slide 23

Slide 23 text

ࠓ೔͸ࡢ೔ͷ࿩ͷଓ͖ ๻͕࣮ࡍʹͲ͏͍͏ಓ۩Λ࢖ͬͯ ίʔυΛಡΜͩΓॻ͍ͨΓͯ͠
 ͍Δ͔

Slide 24

Slide 24 text

gem-src OSS΢Υονϟʔۀͱύονॻ͖ ͕͸͔ͲΔπʔϧ

Slide 25

Slide 25 text

gem-src amatsuda/gem-src

Slide 26

Slide 26 text

OSS͕޷͖ͳͷͰ ͍ΖΜͳਓͷίʔυΛಡΉͷ͕
 ޷͖ͩ͠ɺύονΛ౤͛ͯΈΜͳ ͱίϛϡχέʔγϣϯΛऔΓ͍ͨ

Slide 27

Slide 27 text

҆৺ͷͨΊ & ଵଦͳͷͰ Կ͔໰୊͕ൃੜͨ࣌͠ʹ͙͢ʹύονΛ ॻ͍ͯରॲͰ͖ΔΑ͏ʹ ࣗ෼͕࢖͍ͬͯΔϓϩμΫτͷιʔε ίʔυ͸શͯखݩʹஔ͍͓͖͍ͯͨ ίʔυΛಡΈ͍ͨʂͱࢥͬͨ࣌ʹGitHub ͰݕࡧΛ͢Δͦͷͻͱख͕ؒ൥Θ͍͠

Slide 28

Slide 28 text

gem-src gem install, bundle installΛϑοΫ ͯ͠ɺΠϯετʔϧ͞ΕͨGemͷ ϝλσʔλ͔Βιʔείʔυͷ
 ͋Γ͔ΛҾͬு͖ͬͯͯgit clone ͠·͘ΔrbenvϓϥάΠϯ

Slide 29

Slide 29 text

͠͹Β͘࢖͏ͱ1000ݸҎ্
 ͱ͔खݩʹϦϙδτϦ͕ཷ·Δ

Slide 30

Slide 30 text

͍ͭͰ΋ؾܰʹίʔυಡΈ΍ ύονॻ͖͕Ͱ͖ΔͷͰ͓קΊ

Slide 31

Slide 31 text

Ruby΍RailsʹؔΘΔਓؒͱ͠ ͯ͸ɺݕࡧ͕Ͱ͖Δͷ΋໾ཱͭ ͜ͷϝιουͬͯ୭͔࢖ͬͯΔਓ͍Δͷ ͔ͳʔʁ GHͰݕࡧͱ͔akr͞Μͷgemαʔνͩͱ ϊΠζ͕ଟ͗͢Δ ࣗ෼͕Ͳ͔͜Ͱ࣮ࡍʹ࢖͍ͬͯΔίʔυ ͷத͚͔ͩΒ୳ͤΔ

Slide 32

Slide 32 text

ಛʹɺ೔ࠒ͔ΒGemΛଟ༻͢ΔRails ϓϩάϥϚʔʹͱͬͯ͸ඞܞͷπʔϧ

Slide 33

Slide 33 text

gem-repositorizer amatsuda/gem-repositorizer

Slide 34

Slide 34 text

gem-repositorizer ։ൃதʹbundleͯ͠ΔGemΛσόοά
 ͢Δ࣌ʹɺGemଆͷίʔυΛॻ͖׵͑Δ Ͳ͜ΛͲ͏ॻ͖׵͔͑ͨΘ͔Βͳ͘ͳΔ ύον͕੾Γग़ͮ͠Β͍

Slide 35

Slide 35 text

gem install͞Εͨ࣌఺Ͱόʔδϣϯ ؅ཧΛ࢝Ί͓ͯͨ͘Ίͷgem plugin ύον͕ॻ͚ͨΒɺgit format-patch => gem-src ͷϦϙδτϦʹ࣋ͬͯߦͬ ͯ git-am ͱ͔ɺgem-src ͷϦϙδτϦͱ remote- add Ͱ௚݁ͯ͠ cherry-pick ͱ͔

Slide 36

Slide 36 text

ࡶʹ࡞͍͍ͬͯͩͨಈ͍͔ͨΒ
 શવߋ৽ͯ͠ͳ͍ݸਓ༻πʔϧͳͷͰɺ
 ΋͏ͪΐͬͱͪΌΜͱ͍ͨ͠ gem-srcͱಉ͘͡rbenvϓϥάΠϯʹͳͬͯͨ΄͏͕ྑ͍ͷ
 ͔΋ͳ͊ gem-srcͰऔ͖ͬͯͨϦϙδτϦ͕͋ͬͨΒremote-addͯ͠ ܨ͓͛ͯ͘ͱ͜Ζ·Ͱ΍͓͍ͬͯͯ͘ΕΔͱخ͍͔͠΋ ͋Εʁͬͯ͜ͱ͸୯ʹ gem-src ͷػೳ௥ՃͰ͍͍ͷ͔ʁ <- ࠓίί (※ޙ೔஫: ͜͜ʹॻ͍ͨͱ͓Γʹ࣮૷͞ΕͨͷͰɺ͜ͷπʔ ϧ͸ෆཁʹͳΓ·ͨ͠ɻgem-srcͷ΄͏Λ͝ར༻͍ͩ͘͞)

Slide 37

Slide 37 text

Gem΍ϑϨʔϜϫʔΫΛ
 ۷Δಓ۩ σόοά͍ͨ͠૬ख͕໌Β͔ʹΘ͔ͬͯΔͳΒɺϦϙδτϦΛ ։͘·Ͱ΋ͳ͘ɺModule#prepend + byebug (ࠓͳΒઌ݄ౡࠜͰ ࡞ΒΕͨ binding.irb Ͱ΋Մ) ͙Β͍Ͱ΋ؒʹ߹͏͜ͱ΋ ͜ͷϝιου͸Ͳ͔͜Βݺ͹ΕͯΔΜͩʁΈ͍ͨͳ࣌͸ͦΜͳ ײ͡ͰϝιουΛ։͍ͯ puts caller ͱ͔ຒΊͨΓ͢Δ TracePoint APIΛ࢖͏͜ͱ΋كʹ͋Δ͚Ͳɺͪΐͬͱ໘౗͔ͳ͊ ͜ͷ΁Μ͸๻͸׬શʹզྲྀ͚ͩͲɺਓʹΑ͍ͬͯΖ͍Ζ޻෉͕ ͋Γͦ͏͔΋

Slide 38

Slide 38 text

gitͷ࿩ʹ໭Δͱ

Slide 39

Slide 39 text

git-*

Slide 40

Slide 40 text

gitͷαϒίϚϯυͦͷ··
 ͩͱ೔ৗతͳ࢖༻ʹ͸ద͞ͳ͍ ֤ࣗͷ޷Έ΍ϫʔΫϑϩʔʹ
 ߹ͬͨΧελϚΠζ͕ඞཁ

Slide 41

Slide 41 text

git alias addͬͯଧͪʹ͍͘ͷͰ(͋·Γ
 ڞײ͕ಘΒΕͳ͍)ɺadͱ͔aͱ͔ ʹͯͨ͠Γ coͱ͔ci (svn࣌୅ͷखΫηͷ
 ໊࢒Γ)

Slide 42

Slide 42 text

git log ίʔυϦʔσΟϯάͰ࠷΋ଟ͘
 ࢖༻͢Δπʔϧ -p --stat --reverse --abbrev-commit -- decorate --topo-order ͙Β͍ͷ
 ΦϓγϣϯΛ͚ͭͱ͘ͱݟ΍͍͢

Slide 43

Slide 43 text

git-* ͍ͬͯ͏໊લͷγΣϧεΫ ϦϓτΛ ~/bin ͋ͨΓʹ഑ஔ

Slide 44

Slide 44 text

gitͷαϒίϚϯυ͔Β;ͭ͏ͷ ίϚϯυ΍γΣϧؔ਺΁ͷঢ֨ rebase΍cherry-pick Α͘࢖͏git log ΍ git show ͸
 l ͱ͔ s ͱ͔ͷ1จࣈͷεΫϦϓτʹ commit (g ci ͷ΄͏͕ࣈ਺͸୹͍)

Slide 45

Slide 45 text

commit generator΍ίϚϯυͰߦͳͬͨૢ࡞͸
 ͳΔ΂ͦ͘Ε͚ͩͰҰ୴ίϛοτ͍ͨ͠ ಡऀʹରͯͦ͠ΕҎ্ͷઆ໌͕ཁΒͳ ͍ git commit -m ͳΜ͚ͩͲɺ࠷ॳͱ࠷ޙΛ"" Ͱғ·ͳ͖Ό͍͚ͳ͍ͷ͕ΊΜͲ͍͘͞

Slide 46

Slide 46 text

commitίϚϯυ git commit -m "$*" ͷΑ͏ͳ΋ͷΛ΋͏ͪΐͬͱ
 ͝ʹΐ͝ʹΐͯ͠ΔγΣϧεΫ Ϧϓτ

Slide 47

Slide 47 text

bundle gem ίϛοτΛ಄͔ΒಡΉͷ͕޷͖ͳΜͩ ͚Ͳɺ"initial commit" ͱ͔ݴͬͯ
 υΧοͱίϛοτ͞ΕͯΔͱϊΠζ͕ ଟͯ͘ಡΉͷ͕େม bundle gem͚ͩͰҰ୴ίϛοτͯ͠
 ͍ͩ͘͞ɻ͓ئ͍͠·͢ʂ

Slide 48

Slide 48 text

rails new ৽͍͠RailsΞϓϦΛ࡞ͬͯɺGemͱ͔͋Ε͜ΕೖΕͯɺ͍ͭͰʹ ৭ʑઃఆͯ͠ɺϞσϧͱ͔ίϯτϩʔϥʔͱ͔͍͔ͭͬ͘͘͟ Γ࡞ͬͯɺ͍͍ͩͨͰ͖·ͨ͠ʂ͍ͬͯ͏಺༰ͷ਺ઍߦͷ "initial commit" ϨϏϡʔෆೳ͔ͩΒઈରʹ΍Ίͯʂ ͜ͷஈ֊Ͱόά΍ઃఆϛε͕ฆΕͯͯ΋΄΅ؾ͚ͮͳ͍ rails newͨ͠Β·ͣίϛοτɺGemΛbundleͨ͠Β·ͨίϛοτ ίʔυ͸ಡऀͷؾ࣋ͪΛߟ͑ͯॻ͖·͠ΐ͏

Slide 49

Slide 49 text

rails g generatorΛͳΔ΂͘࢖͏ ○○͍ͬͯ͏ػೳΛ࣮૷͠·ͨ͠ʂ͍ͬͯ͏MͱVͱCʹ·͕ͨ ΔσΧ͍ίϛοτ͸ಡΈํ͕Θ͔Βͳͯ͘ϨϏϡʔͰ͖ͳ͍ rails g scaffold Ͱ·ͣίϛοτ ಠࣗͷ࣮૷͸͔ͦ͜Βͷ଍͠ࢉ΍Ҿ͖ࢉͰ ࣮૷ऀͷ૝͍͕఻ΘΔίϛοτʹͳΔ

Slide 50

Slide 50 text

rails g generator͕ు͍ͨίʔυ͔Β͋·Γʹ΋େ͖͘ҳ୤͢ Δ৔߹͸ɺRESTfulͳઃܭ͕Ͱ͖͍ͯͳ͍Մೳੑ͕ߴ͍ generator͕ు͘ίʔυ͕ࣗ෼޷Έ͡Όͳ͍৔߹͸ɺ
 ϓϩδΣΫτͷ࠷ॳʹ·ͣgeneratorͷΧελϚΠζ͔ Β࢝ΊΔ Rails 3͔Βgenerator͕৭ʑΧελϚΠζͰ͖ΔΑ͏ʹ ͳͬͯΔͷͰɺڵຯͷ͋Δਓ͸ͪΐͬͱ͍ͬͯ͡ΈΔ ͱ໘ന͍Μ͡Όͳ͍Ͱ͠ΐ͏͔

Slide 51

Slide 51 text

ٯʹɺRails 3ͰมΘͬͯ΄͔ͬͨ͠
 ͚ͲมΘΒͳ͔ͬͨ΋ͷ΋͋Δ

Slide 52

Slide 52 text

action_args asakusarb/action_args

Slide 53

Slide 53 text

Railsͷίϯτϩʔϥʔͷ
 Πέͯͳ͞ actionͷϝιου͕ී௨ͷRubyͷ
 ϝιου͡Όͳ͗͢͞Δ ͦͷΞΫγϣϯͰ࢖ΘΕΔೖྗ஋ ͕Կ͔ͩશવΘ͔Βͳ͍ ໭Γ஋Λ࢖Θͣʹivarʹηοτʁʁ

Slide 54

Slide 54 text

MerbͷGood API RubyͷϓϩάϥϜͳΜ͔ͩΒ͜͏͡Ό
 ͳ͍ํ͕͓͔͍͠ input͕໌֬ʹͳΔ params ͱ͔͍͏ݟ͍ۤ͠άϩʔόϧ
 ม਺ͷΑ͏ͳ΋ͷΛ৮Βͳͯ͘ࡁΉ
 Α͏ʹͳΔ

Slide 55

Slide 55 text

merb-action-argsͷ
 υΩϡϝϯτΑΓ(Ұ෦ฤू) class Foo < Merb::Controller def bar(baz) baz end end

Slide 56

Slide 56 text

bundle͢Δ͚ͩͳΒ
 ෭࡞༻΋ͳ͍ طଘͷRailsࣜͷίʔυ͸ͦͷ··ಈ࡞͢Δ ͭ·ΓೖΕͯଛͷͳ͍ϓϥΪϯͳͷͰͱΓ ͓͋͑ͣखݩͷ͢΂ͯͷRailsϓϩδΣΫτ ʹbundle͓ͯ͘͜͠ͱΛ͓קΊ͍ͨ͠ ΞΫγϣϯͷҠߦ͸ॱ࣍ؾ͕޲͍ͨ࣌ʹ
 ΍Ε͹ྑ͍͠΍Βͳͯ͘΋ྑ͍

Slide 57

Slide 57 text

FAQ: Railsʹඪ४Ͱ
 ೖΒͳ͍ͷʁ

Slide 58

Slide 58 text

action_argsΛRailsຊମʹ
 Ϛʔδ͍ͨ͠ ࣮͸աڈʹఏҊͨ͜͠ͱ͸͋ΔΜ ͚ͩͲɺDHHΛઆಘͰ͖ͣഊ๺ ๻Ҏ֎ͷ୭͔͕ݴͬͯ͘ΕΔͱ
 ྑ͍ͷ͔ͳ͊

Slide 59

Slide 59 text

Internals Gem໊ͱ͓ࢠ͞Μͷ໋໊ʹఆධͷ͋ΔɺAsakusa.rbͷ ͩ͞͞͞Μ࡞methoparaΛ࢖༻ Method#parameters ͱ͍͏໓ଟʹ࢖ΘΕΔ͜ͱͷ
 ͳ͍χονͳศརػೳ ίϯτϩʔϥʔ಺Ͱ΋ʹΐ΋ʹΐ΍ΔΜ͚ͩͲɺ
 ͦͷ΁Μͷ΋ʹΐ΋ʹΐ͸Ϣʔβʔʹ͸ݟͤͨ͘ͳ͍ Refinements Λ׆༻

Slide 60

Slide 60 text

Asakusa.rbͷ _ksss͞Μͷॿݴ ͕͖͔͚ͬͰ

Slide 61

Slide 61 text

Refinements զΒ͕ shugo͞Μͷҙཉ࡞ ࢓༷͕༯ͯ͘͠େ޷͖ͳΜͰ
 ΊͬͪΌ࢖ͬͯ·͢ ΋ͪΖΜॳظͷ࢓༷͕Ұ൪޷͖ ͚ͩͬͨͲ

Slide 62

Slide 62 text

Refinementsͷ׆༻ࣄྫ action_args, database_rewinder

Slide 63

Slide 63 text

database_rewinder amatsuda/database_rewinder

Slide 64

Slide 64 text

database_rewinder ݩ͸Cookpadࣾ಺Ͱ࢖ΘΕ͍ͯͨ @eudoxa
 ͞Μͷ࣮૷ͷOSSԽ ςʔϒϧ͕1000ݸͱ͔͋Δ؀ڥͰ͸ඞਢ transactional_testsͩͱCapybara + JSͳςετ ͕͏·͘ճΒͳ͍ database_cleaner͸஗͗ͯ͢࢖͍෺ʹͳΒͳ͍

Slide 65

Slide 65 text

࠷ॳͷ࣮૷ SQLͷ࣮ߦΛϑοΫͯ͠ɺςετ಺Ͱinsert͕ ૸ͬͨςʔϒϧʹରͯ͠ͷΈdeleteΛ౤͛Δ deleteͷຊ਺͸ݮͬͨ΋ͷͷ·ͩ஗͍͠ϩά ͕ԚΕΔ 1ൃ໨ͷdelete_allͱ͔ɺ݁ہશςʔϒϧΛ ର৅ʹdelete͢Δ

Slide 66

Slide 66 text

ͦ͜Ͱ0.7ܥͰͷҟ༷ͳਐԽ ݸਓతʹ͸Ҏલ͔Β΍ͬͯΈ͔ͨͬͨςʔϚ multiple_queries 1ճͷDBݺͼग़͠Ͱෳ਺ͷSQLจΛ౤͛ͯ Ψόοͱ࡟আ͢Δ ͜ͷϓϥάΠϯͷ֎Ͱ͸࢖Θͳ͍ػೳͳͷ Ͱɺ࣮૷͸RefinementsͰ

Slide 67

Slide 67 text

multiple_queries ໭Γ஋͸ड͚औΕͳ͍ͷͰɺෳ਺ͷAR::RelationͷloadͷฒྻԽʹ࢖͑ͨΓͳΜ͔͸ ͠ͳ͍ SQLite3 ౤͛ΕΔ਺ͷ্ݶΛҙࣝ͢Δඞཁ͕͋Γͦ͏͚ͩͲɺԿ΋ͯ͠ͳ͍ͷͰଟ෼
 ·ͩόάͬͯΔ PostgreSQL ී௨ʹಈ͘ɻ͑Β͍ɻ MySQL ͍ͭ΋ͷ͝ͱ͘໰୊ࣇ deleteͷͨΊͷผίωΫγϣϯΛுΔඞཁ͕͋ͬͯɺσουϩοΫ͕ى͖ͨΓ
 ͢Δ

Slide 68

Slide 68 text

σουϩοΫ໰୊ͷղܾʁ READMEʹ৭ʑॻ͍ͨͷͰ౿Μͩਓ͸ಡΜͰ͍ͩ͘͞ ͦ΋ͦ΋σουϩοΫىͯ͜͠Δͷ͸Կ͔࢖͍ํ ͕͓͔͍͠ transactional_testϞʔυͰAR::Base.connectionͰτϥ ϯβΫγϣϯ͕͔͔ͬͯΔͷͰσουϩοΫ͢Δ transactional_testͩͬͨΒࣗ෼Ͱdeleteͱ͔͠ͳ͘ ͯྑ͍͸ͣ

Slide 69

Slide 69 text

transactional_testͱrewinderΛ εΠον͢Δͷ͕࠷ڧͰ͸ʁ Ͱ͖ͳ͍Μͩͳɺ͜Ε͕ ؾʹͳΔਓ͸ࢼͯ͠Έ͍ͯͩ͘͞ database_cleaner͞Μ͸transactionϞʔυ΋Ͳ͖Λ ࣗલͰ๊͑ͯΔͱ͍͏ΠϞے CapybaraΛඪ४࠾༻͢Δ༧ఆͷRails 5.1Ͱ͸୭͔ ͕ARͷ͜ͷ͋ͨΓΛΰϦοͱ௚ͯ͋͛͠Δ͔͠ ͳͦ͞͏

Slide 70

Slide 70 text

ςετͱݴ͑͹ FAQ: RSpec or minitest?

Slide 71

Slide 71 text

RSpec or minitest? ๻͕͜Ε·Ͱʹ঺հͨࣗ͠࡞Gem ͷςετͰ͸શͯRSpec΋minitest ΋࢖ͬͯ·ͤΜ

Slide 72

Slide 72 text

test-unit test-unit/test-unit

Slide 73

Slide 73 text

test-unit My favorite testing framework ফڈ๏Ͱ ͱ͍͏͔ɺҰ൪;ͭ͏Ͱ·ͱ΋

Slide 74

Slide 74 text

Killer Features power_assert ๻͸΄ͱΜͲ࢖ͬͯ·ͤΜ͕ sub_test_case RSpecͷdescribeͱ͔contextΈ͍ͨʹ֊૚ߏ଄Λ ࣋ͬͨςετέʔε͕ॻ͚Δ ࣮૷ͱͯ͠͸ɺTestCaseͷಈతͳແ໊αϒΫϥε ͳͷͰsub_test_case

Slide 75

Slide 75 text

sub_test_case ػೳࣗମ͸ศརͳΜ͚ͩͲ sub_test_case໊ͬͯલ͕Θ͔Γʹ͘͘ͳ͍
 Ͱ͔͢ʁ ෳ਺ͷ"test"ΛଋͶΔ΋ͷ͔ͩΒ"test_group" ͰͲ͏͔ʁͱ͍͏ఏҊΛͯ͠Έ͍ͯ·͢ https://github.com/test-unit/test-unit/pull/130

Slide 76

Slide 76 text

One More Thing

Slide 77

Slide 77 text

rfd amatsuda/rfd

Slide 78

Slide 78 text

OSX͸γΣϧ͸࢖͍΍ͯ͘͢ૉ੖Β͍͠Μ͚ͩ ͲɺFinder.app ͷ࢖͍উख͕ͱʹ͔͘ώυ͍ ΍ͬͺλʔϛφϧ্Ͱಈ͘
 ϑΝΠϥʔ͕࠷ߴͩΑͳ FDΈ͍ͨͳ΍ͭ

Slide 79

Slide 79 text

rfd RubyͰॻ͍ͯΈͨϑΝΠϥʔ ԡ͞ΕͨΩʔΛͦͷ··sendͯ͠ɺରԠ
 ͢Δ໊લͷϝιουΛݺͼग़ͯ͠Δ͚ͩɺ
 ͱ͍͏ܿ͗͢Δ࣮૷ ҟৗͳ֦ுੑͷߴ͞Λ࣮ݱ RubyͳΒͰ͸

Slide 80

Slide 80 text

͜Μͳײ͡Ͱɺ๻͕ศརͩͱࢥͬͯ࢖ͬ ͍ͯΔಓ۩ʹ͸Φʔϓϯͳ΋ͷ͕ଟ͍ ࣗ෼͕࡞ͬͨಓ۩Ͱʮศར͡Ό Μʂʯͱࢥͬͨ΋ͷ͸ͲΜͲΜ
 ެ։͢ΔΑ͏ʹ͍ͯ͠Δ ͦΕΛ࢖ͬͯ͘Εͨ୭͔͕ಥવ ΋ͬͱศརʹͯ͘͠ΕͨΓ͢Δ

Slide 81

Slide 81 text

ϓϩάϥϚʔ͸ࣗ෼͕࢖͏
 ಓ۩Λࣗ෼Ͱ࡞Δ͜ͱ͕Ͱ͖Δ ͦΕΛ͠ͳ͍ͳΜͯ΋͍ͬͨͳ͍ʂ ָ͍͠ͷʹʂ

Slide 82

Slide 82 text

ϓϩάϥϚʔʹ͸ࣗ෼͕࢖͏ ಓ۩Λࣗ෼Ͱ࡞Δݖར͕͋Δ ୭ͷڐՄ΋ٻΊͳ͍͍ͯ͘ΜͰ͢Α (by @ppworks) ͨͩίʔυΛॻ͖࢝ΊΕ͹ྑ͍͚ͩ Ͱ΋ͬͯউखʹެ։͢Ε͹ྑ͍͚ͩ

Slide 83

Slide 83 text

࡞ͬͨ΋ͷ͕ྑ͍΋ͷͰ͋Ε͹ɺ
 ੈքʹ޿·Δ Πϯλʔωοτͷੈք͸ฏ͍ͨ ΈΜͳ͕࢖ͬͯ͘ΕͨΓ͢Δͱɺ ͪΐͬͱੈͷதΛม͑ͨΓͰ͖Δ͔΋ ͠Εͳ͍ ౡࠜʹډͳ͕Βʹͯ͠ੈքΛม͑ΒΕ Δʂ

Slide 84

Slide 84 text

ౡࠜͷ͓·͑Β ౡࠜͱ͔ΊͬͪΌפ͍͠ޘָͩͬͯΧχ
 ৯͏͙Β͍͔͠ͳ͍͠ɺίʔυॻ͙͘Β͍
 ͔͢͠Δ͜ͱͳ͍Μ͔ͩΒίʔυॻ͚͹͍͍ ͷʹ Ϗδωεͱҧ͓ͬͯۚ΋͔͔Βͳ͍͔Β
 ݝி΍ࢢ໾ॴͷαϙʔτͩͬͯཁΒͳ͍
 Ͱ͢Α

Slide 85

Slide 85 text

ాࣷऀ(͔΋͠Εͳ͍)͍͢͝ ϋοΧʔͷྫ @_why @normalperson

Slide 86

Slide 86 text

͋Δ͍͸ɺੈքͷ৭Μͳͱ͜Ζ͔ ΒίʔυΛൃ৴ͯ͠Δཱྀਓͨͪ @apotonick @maccaw

Slide 87

Slide 87 text

Ή͠Ζদߐ͸͍͢͝
 ܙ·ΕͯΔ ʮRuby Cityʯদߐ ੈքͰҰ൪Rubyʹৄ͍͓͠͡͞Μ ͱ͍͏஍Ҭࢿݯ ͳͥ͜ΕΛ΋ͬͱ׆͔͞ͳ͍ͷ͔

Slide 88

Slide 88 text

ౡࠜͷΈΜͳɺ΋ͬͱίʔυ
 ॻ͍ͯੈքͱͭͳ͕ͬͯߦ͜͏Α ͱݴ͍͍ͨͰ͢ɻ

Slide 89

Slide 89 text

ͱ͜ΖͰɺRuby City͸ࠓ΍
 দߐࢢ͞Μ͚ͩ͡Όͳ͍ΜͰ͢Α Yet Another Ruby City

Slide 90

Slide 90 text

୩ࠜઍ Did you know?

Slide 91

Slide 91 text

୩ࠜઍ as a Ruby City ۙॴͷਓ͕ͨͪົʹRubyʹৄ͍͠ ๻ͷՈ͔Β ెา10෼: @_ko1 ెา10෼: @shyouhei ెา15෼: @nalsh ెา10෼: @_zzak (New!) ెา20෼: @hsbt (New!)

Slide 92

Slide 92 text

Rubyίϛολʔಉ࢜͸
 ͻ͔Ε߹͏ʁ ஍ҬRubyίϛϡχςΟ͕͸͔ͲΔ ͜ͷ఺Ͱ͸দߐʹ΋ෛ͚ͯͳ͍ͷ Ͱ͸ʁ

Slide 93

Slide 93 text

We Code! You Code! ͕Μ͹ΕRuby City!

Slide 94

Slide 94 text

end