$30 off During Our Annual Pro Sale. View Details »

My Favorite Tools

My Favorite Tools

松江Ruby会議08ゲスト講演「未定(オープンソースとの関わり方と開発環境に関するお話の予定)」改め、「My Favorite Tools」の発表資料 http://matsue.rubyist.net/matrk08/

Akira Matsuda

December 17, 2016
Tweet

More Decks by Akira Matsuda

Other Decks in Programming

Transcript

  1. My Favorite Tools @a_matsuda

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

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

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

  5. whoami

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

  7. kaminari amatsuda/kaminari

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

  9. kaminari 1.0 RC൛͕ग़·ͨ͠ What's new in 1.0 gem෼཭ API͕͸͖ͬΓͨ͠ ৔߹ʹΑͬͯ஍ຯʹΫΤϦͷຊ਺͕ݮΔ

    without_countϞʔυ ΋͏ͪΐͬͱΤΫετϦʔϜͳ΍ͭ
  10. ࠓ͙͢ࢼͯ͠Έ͍͚ͯͨͩΔ ͱ͋Γ͕͍ͨͰ͢ gem 'kaminari', '1.0.0.rc1'

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

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

  13. md2key k0kubun/md2key

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

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

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

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

  18. ࢖༻ྫ

  19. ࡢ೔ͷൃදεϥΠυ 3೔લ͙Β͍͔ΒɺͳΜͱͳ͘஻Γ͍ͨ͜ͱΛiPhoneͷNotesͰϦετΞοϓ࢝͠ΊΔ ౡࠜʹ޲͔͏ిंͱඈߦػͷதͰɺετʔϦʔͷΠϝʔδ͕ఱ͔Β߱ͬͯ͘ΔͷͰɺ
 ͦΕΛ೴಺ʹμ΢ϯϩʔυͯ͠iPhoneͰՕ৚ॻ͖ΛҰؾʹ๲Β·ͤΔ ۭߓ͔Βদߐʹ޲͔͏όεͷதͰ Keynote.app Λىಈͯ͠ྲྀ͠ࠐΉ(ྡʹ࠲ͬͨਿݪ͞Μ ʹโΕΒΕͳ͕Β) ձ৔ʹண͍͔ͯΒ࣌ؒΪϦΪϦ·Ͱ(ͱ͍͏͔ؒʹ߹ͬͯͳ͍)ମࡋΛ੔͑ͨΓ͢Δ ͷͰσβΠϯͱ͔ϑΥϯτͱ͔͸΄΅

    Keynote.app ͷσϑΥϧτͷ·Μ· (͢Έ·ͤΜ) શͯࢥ͍ग़͠ϕʔεͳͷͰɺࣄ࣮ؔ܎ͱ͔ۃΊͯ͋΍;΍(ͻͲ͍) ૉৼΓͱ͔Ұ੾͠ͳ͍ͷͰ(ӳޠͰ΋ΩʔϊʔτͰ΋΍ͬͨ͜ͱͳ͍)ɺ࣌ؒΛΊͬͪΌ Φʔόʔͨ͠Γ͢Δ(΄Μͱ͍͢·ͤΜ)
  20. ࠓ೔ͷൃදεϥΠυ ਲͬ෷ͬͯ൒෼৸ͳ͕Β෍ஂͷதͰ iPhoneͰϝϞΛॻ͘ ேձ৔ʹ͍͔ͭͯΒVimΛىಈͯ͠৭ʑ ॻ͖଍͢ ߨԋ1࣌ؒલ͔ΒKeynote.appʹྲྀ͠ࠐΈ ͸͡ΊΔ

  21. ͱ΋͋Ε

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

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

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

  25. gem-src amatsuda/gem-src

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

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

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

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

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

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

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

  33. gem-repositorizer amatsuda/gem-repositorizer

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

  35. gem install͞Εͨ࣌఺Ͱόʔδϣϯ ؅ཧΛ࢝Ί͓ͯͨ͘Ίͷgem plugin ύον͕ॻ͚ͨΒɺgit format-patch => gem-src ͷϦϙδτϦʹ࣋ͬͯߦͬ ͯ

    git-am ͱ͔ɺgem-src ͷϦϙδτϦͱ remote- add Ͱ௚݁ͯ͠ cherry-pick ͱ͔
  36. ࡶʹ࡞͍͍ͬͯͩͨಈ͍͔ͨΒ
 શવߋ৽ͯ͠ͳ͍ݸਓ༻πʔϧͳͷͰɺ
 ΋͏ͪΐͬͱͪΌΜͱ͍ͨ͠ gem-srcͱಉ͘͡rbenvϓϥάΠϯʹͳͬͯͨ΄͏͕ྑ͍ͷ
 ͔΋ͳ͊ gem-srcͰऔ͖ͬͯͨϦϙδτϦ͕͋ͬͨΒremote-addͯ͠ ܨ͓͛ͯ͘ͱ͜Ζ·Ͱ΍͓͍ͬͯͯ͘ΕΔͱخ͍͔͠΋ ͋Εʁͬͯ͜ͱ͸୯ʹ gem-src ͷػೳ௥ՃͰ͍͍ͷ͔ʁ

    <- ࠓίί (※ޙ೔஫: ͜͜ʹॻ͍ͨͱ͓Γʹ࣮૷͞ΕͨͷͰɺ͜ͷπʔ ϧ͸ෆཁʹͳΓ·ͨ͠ɻgem-srcͷ΄͏Λ͝ར༻͍ͩ͘͞)
  37. Gem΍ϑϨʔϜϫʔΫΛ
 ۷Δಓ۩ σόοά͍ͨ͠૬ख͕໌Β͔ʹΘ͔ͬͯΔͳΒɺϦϙδτϦΛ ։͘·Ͱ΋ͳ͘ɺModule#prepend + byebug (ࠓͳΒઌ݄ౡࠜͰ ࡞ΒΕͨ binding.irb Ͱ΋Մ)

    ͙Β͍Ͱ΋ؒʹ߹͏͜ͱ΋ ͜ͷϝιου͸Ͳ͔͜Βݺ͹ΕͯΔΜͩʁΈ͍ͨͳ࣌͸ͦΜͳ ײ͡ͰϝιουΛ։͍ͯ puts caller ͱ͔ຒΊͨΓ͢Δ TracePoint APIΛ࢖͏͜ͱ΋كʹ͋Δ͚Ͳɺͪΐͬͱ໘౗͔ͳ͊ ͜ͷ΁Μ͸๻͸׬શʹզྲྀ͚ͩͲɺਓʹΑ͍ͬͯΖ͍Ζ޻෉͕ ͋Γͦ͏͔΋
  38. gitͷ࿩ʹ໭Δͱ

  39. git-*

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

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

  42. git log ίʔυϦʔσΟϯάͰ࠷΋ଟ͘
 ࢖༻͢Δπʔϧ -p --stat --reverse --abbrev-commit -- decorate

    --topo-order ͙Β͍ͷ
 ΦϓγϣϯΛ͚ͭͱ͘ͱݟ΍͍͢
  43. git-* ͍ͬͯ͏໊લͷγΣϧεΫ ϦϓτΛ ~/bin ͋ͨΓʹ഑ஔ

  44. gitͷαϒίϚϯυ͔Β;ͭ͏ͷ ίϚϯυ΍γΣϧؔ਺΁ͷঢ֨ rebase΍cherry-pick Α͘࢖͏git log ΍ git show ͸
 l

    ͱ͔ s ͱ͔ͷ1จࣈͷεΫϦϓτʹ commit (g ci ͷ΄͏͕ࣈ਺͸୹͍)
  45. commit generator΍ίϚϯυͰߦͳͬͨૢ࡞͸
 ͳΔ΂ͦ͘Ε͚ͩͰҰ୴ίϛοτ͍ͨ͠ ಡऀʹରͯͦ͠ΕҎ্ͷઆ໌͕ཁΒͳ ͍ git commit -m ͳΜ͚ͩͲɺ࠷ॳͱ࠷ޙΛ"" Ͱғ·ͳ͖Ό͍͚ͳ͍ͷ͕ΊΜͲ͍͘͞

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

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


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

    newͨ͠Β·ͣίϛοτɺGemΛbundleͨ͠Β·ͨίϛοτ ίʔυ͸ಡऀͷؾ࣋ͪΛߟ͑ͯॻ͖·͠ΐ͏
  49. rails g generatorΛͳΔ΂͘࢖͏ ◦◦͍ͬͯ͏ػೳΛ࣮૷͠·ͨ͠ʂ͍ͬͯ͏MͱVͱCʹ·͕ͨ ΔσΧ͍ίϛοτ͸ಡΈํ͕Θ͔Βͳͯ͘ϨϏϡʔͰ͖ͳ͍ rails g scaffold Ͱ·ͣίϛοτ ಠࣗͷ࣮૷͸͔ͦ͜Βͷ଍͠ࢉ΍Ҿ͖ࢉͰ

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

    ͱ໘ന͍Μ͡Όͳ͍Ͱ͠ΐ͏͔
  51. ٯʹɺRails 3ͰมΘͬͯ΄͔ͬͨ͠
 ͚ͲมΘΒͳ͔ͬͨ΋ͷ΋͋Δ

  52. action_args asakusarb/action_args

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

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

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

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

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

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

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

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

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

  62. Refinementsͷ׆༻ࣄྫ action_args, database_rewinder

  63. database_rewinder amatsuda/database_rewinder

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

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

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

  67. multiple_queries ໭Γ஋͸ड͚औΕͳ͍ͷͰɺෳ਺ͷAR::RelationͷloadͷฒྻԽʹ࢖͑ͨΓͳΜ͔͸ ͠ͳ͍ SQLite3 ౤͛ΕΔ਺ͷ্ݶΛҙࣝ͢Δඞཁ͕͋Γͦ͏͚ͩͲɺԿ΋ͯ͠ͳ͍ͷͰଟ෼
 ·ͩόάͬͯΔ PostgreSQL ී௨ʹಈ͘ɻ͑Β͍ɻ MySQL ͍ͭ΋ͷ͝ͱ͘໰୊ࣇ

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

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

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

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

  72. test-unit test-unit/test-unit

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

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

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

  76. One More Thing

  77. rfd amatsuda/rfd

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

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

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

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

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

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

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

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

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

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

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

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

  90. ୩ࠜઍ Did you know?

  91. ୩ࠜઍ as a Ruby City ۙॴͷਓ͕ͨͪົʹRubyʹৄ͍͠ ๻ͷՈ͔Β ెา10෼: @_ko1 ెา10෼:

    @shyouhei ెา15෼: @nalsh ెา10෼: @_zzak (New!) ెา20෼: @hsbt (New!)
  92. Rubyίϛολʔಉ࢜͸
 ͻ͔Ε߹͏ʁ ஍ҬRubyίϛϡχςΟ͕͸͔ͲΔ ͜ͷ఺Ͱ͸দߐʹ΋ෛ͚ͯͳ͍ͷ Ͱ͸ʁ

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

  94. end