Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Finding Ruby Again

Finding Ruby Again

福岡Ruby会議02のキーノート「Finding Ruby Again」の発表資料 http://regional.rubykaigi.org/fukuoka02/

Akira Matsuda

November 25, 2017
Tweet

More Decks by Akira Matsuda

Other Decks in Programming

Transcript

  1. Finding
    Ruby Again
    @a_matsuda

    View Slide

  2. ʮ΋͏Ұ౓ɺ

    Rubyͱग़ձ͏ʯ

    View Slide

  3. Ruby͍͍ΑͶ

    View Slide

  4. ݱ୅ʹʮRubyϓϩάϥϚʔʯ

    ͍ͬͯ͏࢓ࣄ͕͋ͬͯຊ౰ʹ
    Α͔ͬͨ
    ਖ਼௚ɺ͜ΕҎ֎ͷੜ͖ํͰ
    ·ͱ΋ʹࣾձʹద߹Ͱ͖ͯ
    ͔ͨͲ͏͔͢͜ͿΔո͍͠

    View Slide

  5. RubyͷΑ͞

    View Slide

  6. Rubyͬͯɺ

    ͳΜ͔͍͍

    View Slide

  7. Կ͕ʁ

    View Slide

  8. ߟ͑ͯΈΑ͏͔

    View Slide

  9. Ruby͍͍ΑͶ͍ͬͯ͏ݸਓత
    ͳؾ࣋ͪΛ۷ΓԼ͛ͯΈ͍ͨ
    ͋͘·Ͱ΋ࣗ෼ͷମݧ͔Β
    དྷΔݸਓతͳ࿩Λ͠·͢

    View Slide

  10. ࣗ෼ͳΓʹɺRubyͷ͍ΖΜͳ
    Α͞Λ͍ΖΜͳ֯౓͔Βݟͯ
    ͖ͨͭ΋Γ
    RubyͷίΞ։ൃʹབྷΜͰΈͨΓRailsͱ
    ͔΍ͬͯΈͨΓGem࡞ͬͯΈͨΓί
    ϛϡχςΟ׆ಈͱ͔ΧϯϑΝϨϯεͱ
    ͔΍ͬͯɺͱൺֱతख޿͘΍ͬͯΔͷͰ

    View Slide

  11. RWCͰͷ֯୩͞Μ
    ͔Βͷ॓୊
    νʔϜϝΠτͱʮniceʯΛ
    ڞ༗͠Α͏

    View Slide

  12. ͍͍͡ΌΜ => ͳͥʁΛਂ۷Γ
    ͯ͠ΈΔͱ͍͏ΦʔιυοΫε

    ͳΞϓϩʔνͰ

    View Slide

  13. RubyͷΑ͞
    จ๏
    શ͕ͯΦϒδΣΫτ
    ϒϩοΫ
    μοΫλΠϐϯά
    ϝλϓϩάϥϛϯά
    CͬΆ͞
    LISPͬΆ͞
    perlͬΆ͞
    ୹͘ॻ͚Δ
    TIMTOWTDI
    UnixͬΆ͞
    ӳޠͬΆ͞
    DSL
    Ruby on Rails
    Active Support
    TDD
    RSpec
    Capybara
    Continuous Integration
    devops
    Webݴޠ͖ͯͳ
    RubyGems
    Bundler
    GitHub
    ιʔγϟϧίʔσΟϯά
    Made in Japan
    ੜ࢈ੑͷߴ͞
    มԽɾΞδϟΠϧ
    ͨͷ͍͠
    ΩϝΔͱؾ͍͍࣋ͪ
    ίϛϡχςΟ
    Rubyist
    ೔ຊRubyͷձ
    Δͼ·
    Ruby Hero Award
    Rails Girls
    rubyfriends
    Ruby Karaoke
    ΧϯϑΝϨϯε
    RubyKaigi
    ஍Ҭ.rb
    Asakusa.rb
    Matz

    View Slide

  14. RubyͷΑ͞ͷཁૉ͕ଟ͗ͯ͢ɺ

    ࣗ෼ʹͲ͕͜ώοτͯ͠Δͷ͔
    Α͘Θ͔Βͳ͍
    ͍ΖΜͳϨΠϠʔͷΑ͕͞ᕒ
    વҰମͱͳͬͯͯɺτʔλϧ
    ͷΤΫεϖϦΤϯεͱͯ͠ɺ
    ͳΜ͔͍͍

    View Slide

  15. ͨͩ͠ɺࠓ೔͸Matz is Nice
    ͚ͩ͸ݴΘͳ͍Α͏ʹ͢Δ
    ͜ΕΛݴͬͪΌ͏ͱ

    ࢥߟఀࢭʹؕΔؾ͕͢Δ

    View Slide

  16. ͱ͍͏Θ͚Ͱɺ

    ΋ͷ͘͢͝ݸਓతͳ࿩͔Β
    ݪମݧʹ໭ͬͯΈΔ
    RubyͱͷೃΕॳΊ

    View Slide

  17. WEB+DB Press
    Vol. 100
    http:/
    /gihyo.jp/
    magazine/wdpress/
    archive/2017/vol100

    View Slide

  18. RubyΛ֮͑Δ΂͘ॳΊͯ
    ॻ͍ͨͷ͸਺ಠιϧόʔ
    ͛͢ʔָ͔ͬͨ͠
    Զͬͯ͹εήʔײ
    ͦΕͰRubyͷྂʹͳͬͯɺͦΕҎ߱ͣͬͱRuby
    ΍ͬͯΔ
    ౰࣌ͷίʔυ͸ฆࣦ

    View Slide

  19. ΋͏Ұ౓

    ΍ͬͯΈͨ

    View Slide

  20. Ϟνϕʔγϣϯ
    ࢠڙ͕ͨͪύζϧΛ΍ͬͯΈ
    Δͱ͖ʹɺ࣍ͷҰखͷߟ͑ํ
    ΛαδΣετͯ͘͠ΕΔΨΠ
    υ͕࡞Εͳ͍͔

    View Slide

  21. ͳͷͰɺ

    ਓؒΒ͘͠

    ߟ͑Δ΍ͭΛ
    mame͞ΜͷSATιϧόʔΈ͍ͨͳ಄ͷ͍͍
    ΍ͭ͡Όͳͯ͘
    ྗٕͰ૯౰ͨΓͰ୳ࡧͱ͔Ͱ΋ͳͯ͘
    ී௨ʹਓ͕ؒߟ͑ͳ͕Βղ͘ͷͱಉ͡ײ͡Ͱ

    View Slide

  22. ղ๏͸ωοτ্ͰΊͬͪΌ

    ڞ༗஌Խ͞ΕͯΔͷͰ

    ͪΐͬͱζϧ͕Ͱ͖Δ
    ʮߟ͑ํʯʹ໊લΛ͚ͭΔͱ͖ʹ೰
    ·ͳͯ͘ྑ͍
    naked_pairs,
    intersection_removal, x_wing, etc.

    View Slide

  23. ͜Μͳײ͡

    View Slide

  24. Ͳ͏ͤͳΒɺ͍ͭͰʹࣗ෼
    Ͱ΋༡΂Δ΍ͭʹ͠Α͏

    View Slide

  25. ίϯιʔϧ൛
    ແ೉ʹ΍ΔͳΒCursesɺ͚ͩ
    Ͳɺͪΐͬͱoverkill͔ͳ͊
    io-consoleͬͯ΍ͭΛ࢖ͬͯΈͨ

    View Slide

  26. io-console
    nobu͕࠷ۙ࡞ͬͨstdlib
    ͦ͏͍͑͹࢖ͬͯΈͨ͜ͱͳ͔ͬͨ
    IO.console ͰɺͳΜ͔ίϯιʔϧΛද͢FileͬΆ͍ΦϒδΣΫτ͕ฦͬͯ
    ͘Δ
    ͍ͦͭʹจࣈྻΛ৯ΘͤΔͱίϯιʔϧ্ʹग़ྗ͞ΕΔ
    Τεέʔϓγʔέϯεͱ૊Έ߹ΘͤΔͱ͔ͳΓ͍ΖΜͳ͜ͱ͕Ͱ͖Δ
    ίϯιʔϧͰಈ͔ͪ͢ΐͬͱͨ͠΋ͷΛ࡞Δͷʹ஍ຯʹศརͰ͋Δ͜ͱ
    ͕ࠓճΘ͔ͬͨ

    View Slide

  27. Web൛
    Action CableͰରઓͰ͖Δ
    ਺ಠͱ͔Ͳ͏͔(ະ׬)

    View Slide

  28. ॳ৺ʹฦͬͯRuby

    ϓϩάϥϛϯάΛ΍ͬͯΈͨ
    ײ૝
    ͱΓָ͍͋͑ͣ͠ʂ
    ָͯ͘͠ΩϚΔ
    େม͓͢͢Ί
    ॳΊͯRubyΛ৮ͬͨ࣌ͷϫΫϫΫײ͕ؼͬͯ
    ͖ͨ

    View Slide

  29. ॳΊͯRubyΛ৮ͬͨ
    ࣌ͷѹ౗తϫΫϫΫײ
    ͋ͷ࣌ɺ͜ͷָ͕͠͞શͯ
    Rubyͷ͓͔͛ͩͱࢥ͍ࠐΜ
    ͰɺRuby͛͢ʔʂͬͯͳͬͨ
    ͷΛࢥ͍ग़ͨ͠

    View Slide

  30. ͔֬ʹָ͍͠……

    ͚Ͳ
    ࠓ͸ͪΐͬͱେਓʹͳͬͯྫྷ੩ʹͳͬͨ
    ͜ͷָ͕͠͞શ෦Rubyͷ͓͔͛ͬͯΘ͚Ͱ͸ͳ͍͔΋
    Ruby͔ͩΒͨͷ͍͠ɺଞݴޠͩͬͨΒָ͘͠ͳ͍ɺͬͯΘ͚Ͱ͸ͳ
    ͦ͞͏
    ϓϩάϥϜͰύζϧΛղ͘͜ͱͦΕࣗମָ͕͍͠ʹܾ·ͬͯΔͷͰ
    ౰࣌ͷࣗ෼͸ὃ͞ΕͯͨՄೳੑ͕͋Δ

    View Slide

  31. ࠓճͷ৔߹ͷRuby
    ͷΑ͞
    ϓϩάϥϛϯάຊདྷͷʮָ͍͠ʯΛअຐ͠ͳ͍
    ୹͍ίʔυͰॻ͚Δ
    ࣗવͳOOPػೳ
    ߟ͑ͨͱ͓Γʹॻ͍ͨΒಈ͍ͯ͘ΕΔ

    View Slide

  32. ಄ͷதͰߟ͑ͨͱ͓Γʹ
    ίʔυͰදݱͰ͖Δײ֮
    ͨͷ͍͠ʂ
    ΍ͬͺEnumerableศར
    ͋Δ΂͖ͱ͜Ζʹ͋Δϝιουͨͪ
    ࠷ۙ૿͑ͨϝιουͨͪ΋͚ͬ͜͏खʹೃછΜ
    Ͱͯࣗવʹग़ͯ͘Δ

    View Slide

  33. ͜ͷ͋ͨΓ͕Ruby
    ͳΒͰ͸
    ͱࢥ͍·ͨ͠ɻ

    View Slide

  34. ͜ͷɺ಄ͷதͰߟ͑ͨͱ͓Γ
    ʹίʔυͰදݱͰ͖Δɺͬͯ
    ͍͏ͷ͕͚ͬ͜͏େࣄ
    ਓ͕ؒػցͷ΍Γํʹ߹ΘͤΔΜ͡Όͳ
    ͯ͘ɺίϯϐϡʔλʔ͕ਓؒʹาΈدͬ
    ͯ͘ΕΔͷΛײ͡Δ
    Ruby͕Developer HappinessʹϑΥʔΧ
    ε͍ͯ͠Δɺͱ͍͏ͷ͕Α͘Θ͔Δ

    View Slide

  35. Ruby͸ਓؒΒ͠͞
    Λଚॏͯ͘͠ΕΔ
    ͔ͩΒ͍͍ؾ෼Ͱίʔυ͕
    ॻ͚Δͷ͔΋

    View Slide

  36. ͦ͏͍͑͹Bugsʹ

    ͜ΜͳIssue͕͋Γ·͕͢

    View Slide

  37. "Follow style
    conventions for Ruby
    code"
    RubyʹελΠϧΨΠυ͕͋Δ΂
    ͖Ͱ͸ʁ͍ͬͯ͏issue
    https:/
    /bugs.ruby-lang.org/
    issues/14112

    View Slide

  38. ੈͷதʹ͸Θ͟Θ͟ෆࣗ༝Λ
    ޷ΉRubyϓϩάϥϚʔ΋ډΔ
    ΜͰ͢Ͷ
    ͔ͤͬࣗ͘༝Λ༩͑ΒΕ͍ͯΔͷʹͳͥ
    ࣗ෼͔ΒਐΜͰෆࣗ༝ʹͳΓ͕ͨΔͷ͔ʁ
    ਓ͕ؒػցΑΓ΋Ғ͘࡞ΒΕ͍ͯΔͷʹ
    ͳͥࣗΒਐΜͰػցͷԼ๻ʹͳΓ͕͞Ζ͏
    ͱ͍͏ͷ͔ʁ

    View Slide

  39. Martinઌੜͷ࠷ߴʹ

    Χοί͍͍͓ฦࣄΑΓ
    "In many cases, there is not a
    single way of writing Ruby, and
    that's part of Ruby's culture."
    https:/
    /bugs.ruby-lang.org/
    issues/14112#note-1

    View Slide

  40. ଟ༷ੑ͸ળͬͯ

    ͍ͭ΋ݴͬͯΔͰ͠ΐʁ

    View Slide

  41. ͱ͜ΖͰɺݱ࣮ੈքͰ͸

    RubyϓϩάϥϚʔ == RailsϓϩάϥϚʔ

    ʹҧ͍ͳ͍ͷͰ
    ࣍͸Railsͷ࿩Λ͠·͢

    View Slide

  42. ͳͥΈΜͳRailsΛ
    ࢖͍ͬͯΔͷ͔ʁ
    Rails΋૬౰ָ͍͠
    ࣗ෼͸10೥Ҏ্ͣͬͱ࢓ࣄͰRails
    Λ΍ͬͯΔ͚Ͳ͍·ͩʹָ͍͠

    View Slide

  43. ͳͥRails͸

    ָ͍͠ͷ͔ʁ
    Rails͸RubyͷΑ͞ΛWebϓϩάϥϛ
    ϯάͷੈքʹ࣋ͪࠐΉͨΊͷ࢓૊Έ
    Ruby vs Rails Ͱ͸ͳ͘ɺ

    Rails < Ruby

    View Slide

  44. Ruby͔ΒҾ͖ܧ͍ͩ

    RailsͷΑ͞
    গͳ͍ίʔυྔ
    ॻ͔ͳͯ͘΋ྑ͍ίʔυΛॻ͔ͳ͍͜ͱͰɺ໰
    ୊ͷຊ࣭ʹूதͰ͖Δ
    ߟ͑ͨͱ͓Γʹ͔͚Δࣗવ͞
    ߴ͍ੜ࢈ੑ

    View Slide

  45. Railsͷதͷਓͨͪ͸

    ΄Μͱ͏ʹRuby͕େ޷͖

    View Slide

  46. DHH
    "Why Ruby?" @ RubyConf
    2010

    View Slide

  47. Jeremy
    "Rails3:Convergent
    evolution" @ RubyWorld
    Conference 2009

    View Slide

  48. ͦΜͳײ͡ͰɺRailsνʔϜ͸
    ৺ͷఈ͔ΒRubyΛϦεϖΫτ
    ͍ͯ͠Δ͜ͱ͕Θ͔Δ

    View Slide

  49. ΋͏ͻͱͭͷRails
    ͷΑ͞
    Ruby͕࢓ࣄʹͳͬͯΔ
    ͜Ε͍͢͝େࣄ

    View Slide

  50. ࢓ࣄͰ

    ϓϩάϥϛϯά
    ސ٬ͱϓϩάϥϚʔ͕ͭͳ͕Δ
    ݱ࣮ੈքʹ͋Δݱ࣮ͷ໰୊ΛϓϩάϥϛϯάͰղܾ͢
    Δ
    ݱ࣮ੈքʹՁ஋ΛੜΈग़͢
    ࣗ෼ͷύιίϯͷதͰύζϧΛղ͘ͷͱ͸·ͨεςʔ
    δͷҧ͏تͼ

    View Slide

  51. ΋ͪΖΜRails͡Όͳ͖Ό
    Ͱ͖ͳ͍Θ͚͡Όͳ͍͚Ͳ
    ੜ࢈ੑɾอकੑͷߴ͞
    => ίεύͷྑ͞
    => ސ٬ͷتͼʹ௚݁

    View Slide

  52. Rails͞ΜɺRubyΛ͓ۚʹ
    ม͑ͯ͘Εͯ͋Γ͕ͱ͏

    View Slide

  53. ͦΕͰɺ๻͸RailsΛ࢓ࣄʹ

    ͢ΔΑ͏ʹͳͬͯɺ

    Rails͕େ޷͖ʹͳͬͨ
    ϚχΞͳͷͰɺڵຯͷର৅͕Rails
    ͦͷ΋ͷʹ޲͔ͬͨ
    ౰࣌͸ಉ޷ͷ͕࢜ͨ͘͞Μ͍ͯɺ
    ʮRailsษڧձ@౦ژʯʹຖ݄ूͬͨ

    View Slide

  54. ͜ͷ͜ΖΘ͔ͬͨ
    RailsͷΑ͞
    Rails͸ίʔυ͕ಡΊΔ
    ͔͠΋ΞϓϦέʔγϣϯͰॻ͍ͯΔݴ
    ޠ͔Βͦͷ··ίϯςΩετεΠονͳ
    ͠ͰϑϨʔϜϫʔΫͷίʔυ͕ಡΊΔ

    View Slide

  55. ͳͥRails͸ίʔυ
    ͕ಡΊΔͷ͔ʁ
    ιʔείʔυ͕ެ։͞Ε͍ͯΔ͔Β
    Railsࣗମͷίʔυ͕pure RubyͰॻ͔Ε͍ͯΔ͔
    Β
    Ruby͕ΠϯλʔϓϦλݴޠ͔ͩΒ
    ͪͳΈʹgem-src΂ΜΓͰ͢

    View Slide

  56. ๻ʹͱͬͯͷRails
    ຊ֨తʹOSS׆ಈ࢝͠Ίͨ
    ͖͔͚ͬ

    View Slide

  57. ͳͥRailsͰOSSʁ
    RailsͷόάΛΑ͘౿Ή͔Β
    Rails͸ϏδωεͷجװʹͳΔιϑτ΢ΣΞͳͷ
    ͰɺόάͬͯΔͱͱͯ΋ࠔΔ͔Β
    ͭ·Γ௚͔͢͠ͳ͍͔Β
    ͙͢ʹύον͕ॻ͖΍͍͢؀ڥ͕੔ͬͯΔ͔Β

    View Slide

  58. ͳͥRailsͷόά͸

    Α͘౿ΜͰ͠·͏ͷ͔ʁ
    ࢓ࣄͰຖ೔࢖ͬͯΔ͔Β
    Rails͕Α͘όάͬͯΔ͔
    Β

    View Slide

  59. ͳͥRails͸Α͘

    όάͬͯΔͷ͔ʁ
    Webͷੈք͸೔ਐ݄าͳͷͰɺ৽ػೳΛͲΜͲΜೖΕ͍͔ͯͳ
    ͖Ό͍͚ͳ͍ɻ҆ఆ͍ͤͯ͞Δ༨༟͕ͳ͍
    όάʹؾ෇͍ͨ୭͔͕ύονΛ౤͛ͯ͘ΕΔγεςϜ͕੔ͬͯ
    ͍ΔͷͰɺඞͣ͠΋ίϛολʔ͕શͯͷόάΛ௵͠੾Βͳͯ͘
    ΋ͳΜͱ͔ͳΔ
    ʮίϯτϦϏϡʔλʔʯͷڵຯΛऒ͖ଓ͚ΔͨΊʹDHH͕Θ͟
    ͱࢃ͍͍ͯΔ㕒…ͩͬͨΓͯ͠

    View Slide

  60. OSSͱͯ͠ͷRails
    ͷΑ͍ͱ͜Ζ
    ͱʹ͔͘ύονΛॻ͘伱͕ଟ͍
    GitHub + Travis CIͰɺ୭Ͱ΋αΫοͱύον͕ૹΕΔ࢓૊Έ͕੔උ͞
    Ε͍ͯΔ
    ίϛολʔਞͷϨϏϡʔͷ໘౗ݟͷྑ͞
    contributor (= কདྷͷίϛολʔ͔΋͠Εͳ͍)Λͱͯ΋େࣄʹ͢Δจ
    Խ
    http:/
    /contributors.rubyonrails.org/

    View Slide

  61. Railsͷίϛολʔʹ
    ͳͬͯΈͯΘ͔ͬͨ͜ͱ
    ن໛ͷׂʹ͍͢͝গਓ਺(Θ͔ͣ18ਓ)
    ͙͢ʹશһͱձͬͯإͱ໊લ͕֮͑
    ΒΕΔαΠζͷνʔϜ
    ΈΜͳ͍͍Ϡπ

    View Slide

  62. RailsͷॊೈͳϓϥάΠϯػߏ
    ͱɺ

    ͦͷ্Ͱҭ·ΕͨϥΠϒϥϦ܈
    Ϣʔβʔ͔ΒݟΔͱ
    ΞϓϦͰඞཁͳػೳΛશͯࣗ෼Ͱ࡞Βͳͯ͘΋ɺ୭͔͕
    ࡞ͬͯ͘ΕͯΔ΋ͷΛಋೖ͢Δ͚ͩͰࡁΜͩΓͯ͠ศར
    Railsଆͱͯ͠͸
    શͯͷϢʔεέʔεΛRailsຊମ๊͕͑ͳͯ͘΋ྑ͘ͳͬ
    ͍ͯΔ

    View Slide

  63. RailsΞϓϦ԰Λ௕͘΍ͬͯΔͱɺ

    Ͳ͏ͯ͠΋ϥΠϒϥϦʹ΋

    खΛग़͢͜ͱʹͳΔ
    Ͳ͔ͬͷ୭͔͕ద౰ʹ࡞ͬͨϥΠϒϥϦ͕ࣗ෼ͷ࣮
    Ҋ݅ͷχʔζΛ͍ͭ΋׬ᘳʹຬͨͯ͘͠ΕΔͱ͸ݶ
    Βͳ͍
    ͔͠΋͍͍ͩͨόάͬͯΔ
    ͷͰɺPRͨ͠Γࣗ෼Ͱ࡞Γ௚ͨ͠Γ͢ΔӋ໨ʹͳΔ

    View Slide

  64. ͳͥ๻͸ଞਓͷόά
    ΛΑ͘౿Ήͷ͔ʁ
    όάΛ౿Ήʹ͸ίπ͕͋Δ
    ଞਓͷॻ͍ͨίʔυΛ৴༻͗͢͠
    ͳ͍
    ઌͬͪΐΛ࢖͏

    View Slide

  65. ଞਓͷॻ͍ͨίʔυ
    Λ৴༻͗͢͠ͳ͍
    ಛʹɺձͬͨ͜ͱ΋ͳ͍੺ͷଞਓ͕ॻ͍ͨίʔ
    υͷ඼࣭Λ໡໨తʹ৴པ͢Δͷ͸όΫνͰ͔͠
    ͳ͍͠ɺ࣮ࡍෛ͚Δ֬཰͕͔ͳΓߴ͍
    ͷͰɺ൓ରʹͳΔ΂͘όάΛ౿Έͨ͘ͳ͍৔߹
    ͸ɺͰ͖Δ͚ͩ৴པͷ͓͚Δ༑ਓ͕ॻ͍ͨϥΠ
    ϒϥϦ͚ͩΛ࢖͏Α͏ʹ͢Δ

    View Slide

  66. ઌͬͪΐΛ࢖͏
    ৽͍͚͠Ε͹৽͍͠΄ͲଟػೳͰચ࿅͞Ε͍ͯΔ͸ͣ
    ͳͷͰɺͳΔ΂͘৽͍͠΋ͷΛ࢖͏΂͖
    ʮރΕͨ΋ͷʯΛ࢖͏ΑΓ΋ͦͷ΄͏ָ͕͍͠
    Ruby: rbenv install 2.5.0-dev
    Rails: rails new --dev
    Gem: gem 'hogehoge', git: 'https:/
    /github.com/...'

    View Slide

  67. To PR, or to
    Create Your Own?
    طଘͷϥΠϒϥϦ͸େے໰୊ͳͯ͘ɺͪΐͬͱखΛՃ͑ͨΒ࢖
    ͍෺ʹͳΓͦ͏ => ΀ΔΓ
    طଘͷϥΠϒϥϦͷίʔυΛಡΜͰΈͨΒશવμϝμϝͰɺ͔
    ͳΓେ෯ʹॻ͖׵͕͑ඞཁ => ೰·͍͠ɻ૬खʹΑΔ͔΋
    طଘͷϥΠϒϥϦͷΠέͯͳ͍ίʔυΛಡΜͰΔ͏ͪʹɺࣗ෼
    ͳΒ΋ͬͱΤϨΨϯτͳઃܭɾ࣮૷͕Ͱ͖Δ͜ͱʹؾ͍ͮͯ͠
    ·ͬͨ => ࡞Δ͔͠

    View Slide

  68. ͳͥOSSʹίϯτϦ
    Ϗϡʔτ͢Δͷ͔ʁ
    ίϯτϦϏϡʔτͬͯݴ͏ͳʂ
    ๻͸ʮOSSʹίϯτϦϏϡʔτ͍ͨ͠ʯͱ͔ඍਖ΋ࢥ͍ͬͯͳ͍
    ଞਓͷͨΊʹίʔυΛॻ͖͍ͨΘ͚Ͱ͸ͳ͘ɺࣗ෼͕ࣗ෼ͷ໰
    ୊Λࣗ෼Ͱղܾ͍͔ͨ͠Β΍Δ
    ࣗ෼ͷ෦԰ʹΰϛ͕མͪͯͨΒरͬͯΰϛശʹೖΕͨ͘ͳΔͷͱ
    Ұॹ

    View Slide

  69. ڊਓͷݞʹ৐ͬͯ

    ίʔυΛॻ͘ͱ͍͏͜ͱ
    ݱ୅ͷRailsΞϓϦ։ൃ͸ɺແ਺ͷҒ
    େͳઌਓͨͪͷ͓ੈ࿩ʹͳ͍ͬͯΔ
    ઌਓͨͪͷ஌ܙͱҨ࢈ΛआΓͯΔΠ
    ϝʔδ

    View Slide

  70. ίʔυͷआΓ͸
    ίʔυͰฦ͢
    ʮߩݙʯͱ͔͓͕͜·͍͠

    View Slide

  71. ͦΜͳ͜ΜͳͰ๻͕
    ࡞ͬͨϥΠϒϥϦ
    kaminari
    active_decorator
    action_args
    database_rewinder
    stateful_enum
    jb
    i18n_generators
    hocus_pocus
    gem_src
    ͳͲͳͲ

    View Slide

  72. ͳͥϥΠϒϥϦΛ
    ࡞Δͷ͔ʁ
    ΂ͭʹʮϥΠϒϥϦΛ࡞Ζ͏ʂʯͱ͍͏໨త͋Γ͖Ͱ͸ͳ͍
    ࡞ΒͣʹࡁΉͳΒ࡞Βͳ͍ʹӽͨ͜͠ͱ͸ͳ͍ɻϝϯςͱ͔μ
    ϧ͍͠
    ࢖͍͍ͨ΋ͷͷΠϝʔδ͕ઌʹ͋ͬͯɺԿ͔ͷ͸ͣΈʹ࣮૷ͷ
    Πϝʔδ͕͖߱ͬͯͯɺͦΕΛܗʹ͢Δײ͔͡΋
    Ͱ΋Ͳ͏ͤ࡞Δ͔Βʹ͸ΈΜͳʹ࢖ͬͯ΋Β͑ͨΒ͍͍ͳɺͱ
    ࢥͬͯ࡞Δ

    View Slide

  73. ࡞Δͱ͖ͷίπ
    ໰୊ͷҰൠԽɾہॴԽɺιϦϡʔγϣϯͷ൚༻ԽɺͷΑ͏ͳ
    ந৅Խೳྗ͸ඞཁ
    ख͟ΘΓॏཁ
    RubyΒ͠͞ɺRailsΒ͠͞ͷԆ௕ઢ্͔Βҳ୤͠ͳ͍
    ؾ࣋ͪΑ͞ == ΊΜͲ͘͘͞ͳ͞
    υΩϡϝϯτΛΖ͘ʹಡ·ͳͯ͘΋͍͍ͩͨ࢖͑Δͷ͕ཧ૝

    View Slide

  74. ίʔυΛॻ͘ܦݧΛੵΉͱɺ
    ෆ۩߹Λෆ۩߹ͱݟൈ͘ྗ͕
    ͭ͘
    RubyͷϥΠϒϥϦʹͱͬͯɺख͟ΘΓͷѱ
    ͞΍࢖༻ײͷؾ࣋ͪྑ͘ͳ͞͸΋͸΍ෆ۩߹
    ͜͏ͯ͠ײੑ͕ຏ͔Ε͍ͯ͘
    ٯʹɺؾ࣋ͪͷྑ͍ίʔυ΍ίϛοτΛͨ͘
    ͞ΜಡΉ͜ͱ΋ॏཁ

    View Slide

  75. Rubyͷ

    ΤίγεςϜͷΑ͞
    ཉ͍͠ͱࢥͬͨ΋ͷ͕͙͢࡞ΕΔ
    ࡞ͬͨΒଈ࠲ʹΠϯλʔωοτʹެ։Ͱ͖
    Δ
    ެ։ͨ͠Β͙͢ʹ୭͔͕ݟͯ͘ΕΔɺ࢖ͬ
    ͯ͘ΕΔɺϑΟʔυόοΫΛ͘ΕΔ

    View Slide

  76. ͳͥRubyͷΤίγεςϜ͸

    ͜Μͳʹ͏·͘ճ͍ͬͯΔͷ
    ͔ʁ
    ΍ͬͺRuby͔ͩΒʁ
    RubyGemsͱ͍͏γϯϓϧͰ੒ख़ͨ͠ύοέʔδϯάγεςϜͷ͓͔͛
    ͦͷRubyGemsͷػೳͷ଍Γͳ͍ͱ͜ΖΛ͏·͘ิ͏Bundlerͷઈົͷ
    ͞͡Ճݮ
    GitHubͱ͍͏౔৕
    GitHubͷΦϯϥΠϯίϛϡχςΟΛิ׬͢ΔϦΞϧͳRubyίϛϡχ
    ςΟͷଘࡏ

    View Slide

  77. ΍ͬͺRuby
    ݴޠ࢓༷ͷӳޠͬΆ͞
    ୹͍ίʔυͰॻ͚Δදݱྗ
    ͷߴ͞

    View Slide

  78. ࣗવݴޠʹ͍ۙ
    ࣗવʹಡΊΔ
    ࣗવʹॻ͚Δ

    View Slide

  79. ίϛϡχέʔγϣϯͷ
    ಓ۩ͱͯ͠༏Ε͍ͯΔ

    View Slide

  80. νʔϜ։ൃʹ

    ޲͍͍ͯΔ
    ͓࢓ࣄͰ࢖͏ͷʹ͓͢͢Ί

    View Slide

  81. OSS΋੝Γ্͕Γ
    ΍͍͢
    ύονͷҙਤ͕ಡΈऔΓ΍
    ͍͢

    View Slide

  82. GH্ͷιʔγϟϧίʔσΟϯά

    ͱϦΞϧͳRubyίϛϡχςΟͷ
    όϥϯε
    GH͚ͩͰ͸ੈք͸׬݁͠ͳ͍
    ίʔυ͸ਓ͕ؒॻ͘΋ͷ͔ͩΒ
    ਓΛ஌Δͱͦͷਓͷίʔυ͕ݟ͑ͯ͘Δ͜ͱ΋͋Δ
    ͱ͍͏͔ɺ͘͢͝Α͋͘Δ
    ͷͰɺ͓ؾʹೖΓͷίʔυ͕͋ͬͨΒͦͷ࡞ऀʹձ͍ʹߦ
    ͜͏ʂ

    View Slide

  83. RubyίϛϡχςΟ
    ʹग़ձ͏ʹ͸
    ੈքதͰ։࠵͞Ε͍ͯΔΧϯϑΝϨϯε
    ʹࢀՃ͢Δͷ͕Ұ൪ͯͬͱΓૣ͍
    ͍ΖΜͳ஍ҬͷΧϯϑΝϨϯεʹߦͬͯ
    ΈΔͱͦͷ஍ҬݶఆΩϟϥʹձ͑ͨΓ͢
    ΔͷͰ͓͢͢Ί

    View Slide

  84. RubyϓϩάϥϚʔΛ΍ͬͯΔ
    ͱੈքͷ͍ΖΜͳࠃʹߦ͚Δ
    ͦΕͧΕͷࠃʹݱ஍ͷ༑ୡ͕͍
    ͯ؍ޫҊ಺ͯ͠΋Β͑ͨΓ΋͢
    Δ
    ͍ΘΏΔrubyfriendsͬͯ΍ͭ

    View Slide

  85. ࣮ࡍʹձͬͨ͜ͱͷ͋Δ৴པͷ
    Ͱ͖Δ༑ਓͷॻ͍ͨϥΠϒϥϦ
    Λ࢖͏ͱ͖ͬ͞ݴ͚ͬͨͲ
    ͭ·ΓɺΧϯϑΝϨϯεʹࢀՃ͢
    Δ͜ͱͰަ༑ؔ܎ͷྠ͕޿͕ͬ
    ͯɺ݁Ռͱͯ͠ɺΦϯϥΠϯͰͷ
    ϓϨθϯεͷ޲্ʹ΋ܨ͕Δ

    View Slide

  86. ࠓ·ͰʹࢀՃͨ͠ੈք
    ͷRubyΧϯϑΝϨϯε
    RubyConf
    RailsConf
    EuRuKo
    Ruby on Ales
    RubyConf Taiwan
    RedDot RubyConf
    Lone Star RubyConf
    Ruby Shift
    RubyConf India
    Rails Pacific
    Rails Israel
    Moutain West RubyConf
    Modern Web
    RubyConf Philippines
    RubyConf Brasil
    Rails Club
    RubyConf Malaysia
    ͳͲͳͲ

    View Slide

  87. ೔ຊ͕ੈքʹތΔRuby
    ͷࠃࡍΧϯϑΝϨϯε

    View Slide

  88. RubyKaigi

    View Slide

  89. ๻ͨͪ͸ͳͥKaigi
    ʹߦ͘ͷ͔ʁ

    View Slide

  90. ๻ͷ৔߹
    ಌΕͷRubyistͨͪΛݟ෺
    ͠ʹߦ͘
    ͕࠷ॳͷ͖͔͚͔ͬͳ͊ʁ

    View Slide

  91. ͳͥಌΕͷRubyistͨͪ΍
    rubyfriendsͨͪʹ

    ձ͍ʹߦ͖͍ͨͷ͔ʁ
    "Rubyistist"͔ͩΒ

    View Slide

  92. Rubyist-ist
    RubyΛॻ͍ͯΔਓ͕ͨͪ
    ؾʹͳͬͯ͠ΐ͏͕ͳ͍ͱ
    ͍͏පؾ

    View Slide

  93. Rubyististʹ

    ͳ͖͔͚ͬͨͬ
    Rubyist Hotlinks
    ॳظͷRubyKaigi
    Railsษڧձ@౦ژ
    Asakusa.rb

    View Slide

  94. Rubyist Hotlinks
    Δͼ·ͷਓؾίʔφʔ
    ͜ΕΛಡΜͰɾɾɾʰRubyistʱʹ͋
    ͕͜ΕΔΑ͏ʹͳͬͨͷͩʂ
    ͩ͞͞͞Μɺ͋Γ͕ͱ͏͍͟͝·͢ʂ

    View Slide

  95. Rubyist͸Rubyist
    ʹͻ͔Ε߹͏
    ࠷ॳ͸ɺRuby࡞ͬͯΔਓͱ͔Δͼ·ʹࡌͬͯͨਓͷ࣮
    ෺͕ݟΕΔɺͱ͍͏ϛʔϋʔͳ໨త
    Rubyist͕େ੎ू·ΔͱɺԿ͔ͱΜͰ΋ͳ͍͜ͱ͕ى
    ͜Δ
    ωοτͷதͷੈքͱϦΞϧͷੈք͕ަΘͬͯԽֶ൓Ԡ
    ͕ى͖Δ৔ʹډ߹ΘͤΔͷָ͕͍͠

    View Slide

  96. ༨ஊͳ͕Βɺ

    View Slide

  97. Rubyist͸Rubyistʹ
    ͻ͔Ε߹͏ɺͱ͍͑͹
    ͜Εͦ͜஍Ҭ.rb ͷݪಈྗ

    View Slide

  98. Asakusa஍Ҭ

    ͷ৔߹

    View Slide

  99. ҎԼͷ໘ʑ͕ΈΜͳ๻ͷՈ

    ͔Βెาݍ಺ͱ͍͏ҟৗࣄଶ
    @_ko1
    @nalsh
    @_zzak
    @shyouhei
    @hsbt
    @k0kubun

    View Slide

  100. ͦΜͳAsakusaͰmeetup
    ͩͯ͠͠ɺ΋͏10೥໨
    ࠓͰ΋ຖि1ճू·ͬͯμϕΓ
    ଓ͚ͯͯ΋·ͩ๞͖ͳ͍ͷ
    ͰɺRubyist΍ͬͺ໘ന͍ͳʔ

    View Slide

  101. ؓ࿩ٳ୊

    View Slide

  102. ͳͥ๻͸RubyKaigi
    Λ࢝Ίͨͷ͔ʁ
    ͦΜͳେ޷͖ͳRubyKaigiͷલ೚ऀ͕ͨͪ೩͑
    ਚ͖͔ͨԿ͔Ͱɺ΋͏΍ΊΑ͏ͥͱ͔ݴ͍ग़͠
    ͨ
    ๻͸RubyKaigi͕ͳ͘ͳͬͯ͠·ͬͨΒͱͯ΋
    ൵͍͠ͷͰɺ͡Ό͋๻͕΍Γ·͢ɺͬͯݴͬͨ

    View Slide

  103. ͳͥ๻ͨͪ͸Kaigi
    Λ͢Δͷ͔ʁ
    ੈքதͲ͜ͷΧϯϑΝϨϯεʹߦͬͯ
    ΋ɺࣗ෼͕࠷ߴʹຬ଍Ͱ͖Δཧ૝ͷΧϯ
    ϑΝϨϯε͕ແ͍͔Β
    ແ͍ͷͰɺࣗ෼Ͱ࠷ߴͷΧϯϑΝϨϯε
    Λ࡞Δ͔͠ͳ͍

    View Slide

  104. ࠷ߴͷ

    ΧϯϑΝϨϯε
    ୭͕Ͳ͏ݟͯ΋RubyKaigi
    ͸͍͍ͩͨຖ೥࠷ߴ(ࣗը
    ࣗࢍ)

    View Slide

  105. ͳͥRubyKaigi͸
    ࠷ߴͳͷ͔ʁ
    ࢀߟจݙ: Gaijin Guide to RubyKaigi
    https:/
    /schneems.com/
    2017/09/27/gaijin-guide-to-
    rubykaigi/

    View Slide

  106. Gaijin Guide to
    RubyKaigi
    "If you’re looking to get a talk
    accepted there, know that the
    conference HEAVILY favors
    technical talks" — schneems

    View Slide

  107. RubyKaigi͸

    ςΫ͍ͷ͕͓޷͖
    ·͊ͦ͏ͳΜ͚ͩͲɻ
    ʮΊͬͪΌςΫ͍΍ͭఏҊ͠ͳ
    ͍ͱ࠾୒͞Εͳ͍Αʯͩͱ30఺
    ͙Β͍͔͠Θ͔ͬͯͳ͍

    View Slide

  108. ԶΒ͕ԿͷͨΊʹRubyKaigi
    ΍ͬͯΔͷ͔͕ͥΜͥΜ

    Θ͔ͬͯͳ͍

    View Slide

  109. RubyKaigi͸ɺ
    Rubyͷɺ
    Φʔϓϯιʔεɾιϑτ΢ΣΞͷɺ
    ςΫϊϩδʔɾΧϯϑΝϨϯεͰ
    ͢ɻ

    View Slide

  110. RubyKaigi͸ɺීஈ͔Β

    ίʔυΛॻ͍ͯΔਓͷ࿩Λ

    ฉͨ͘ΊͷΧϯϑΝϨϯε

    View Slide

  111. RubyKaigi͸Blind
    Reviewͱ͔͠ͳ͍
    ීஈ͔Βpublicͳͱ͜ΖͰίʔυΛ
    ॻ͍ͯΔਓ͔͠࠾༻ͨ͘͠ͳ͍͔Β
    ϓϩϙʔβϧͷ࡞จςΫχοΫͱ͔
    ͸Ͳ͏Ͱ΋͍͍

    View Slide

  112. ͳͷͰɺRubyKaigiͰ
    ొஃ͢Δͷ͸࣮͸؆୯
    ྑ͍ίʔυΛॻ͘
    ͦΕΛࡽ͢
    ͦΕʹ͍ͭͯ࿩͢
    ͦΕ͚ͩ

    View Slide

  113. ͳͥRubyKaigi͸ίʔυΛ

    ॻ͍ͯΔਓ͔͠ొஃͰ͖ͳ͍
    ͷ͔ʁ
    ͦ͏͍͏ਓʹݶͬͯ໨ཱͭεΩϧ͕ෆ଍ͯ͠
    ͍ͯ஌ΒΕ͍ͯͳ͍৔߹͕ଟ͍͔Β
    ͦ͏͍͏ਓͷ͜ͱΛ๻͕΋ͬͱ஌Γ͍͔ͨΒ
    ͦ͏͍͏ਓͷ͜ͱΛΈΜͳʹ΋΋ͬͱ஌ͬͯ
    ΄͍͔͠Β

    View Slide

  114. ͱ͜ΖͰࠓ೥ͷ
    RubyKaigiͷτϐοΫ
    ݦஶͳภΓͬ΀Γ

    View Slide

  115. ࠓ೥ͷRubyKaigiͰ
    ໨ཱͬͨτϐοΫ3બ
    type
    concurrency (Fiber)
    performance

    View Slide

  116. ͳͥRubyKaigi͸্ه3ͭ
    ͷ࿩୊ʹภ͍ͬͯͨͷ͔ʁ

    View Slide

  117. Ruby 3͕໨ࢦ͢

    3ͭͷΰʔϧ
    type
    concurrency
    performance

    View Slide

  118. RubyKaigiͷ΋͏

    ͻͱͭͷϛογϣϯ

    View Slide

  119. Rubyͷ։ൃΛۦಈ
    ͢Δ

    View Slide

  120. Rubyͷ։ൃ
    ࣗ෼͕ͨͪຖ೔஻ͬͯΔݴޠ͕೔ʑ࡞ΒΕ͍ͯ
    Δ
    ͦΕ΋೔ຊͰ
    ࣗ෼ʹ͍ۙͱ͜ΖͰ
    ࣗ෼΋ͦͷӦΈʹࢀՃ͢Δ͜ͱ͕Ͱ͖Δ

    View Slide

  121. ͜Εͬͯੌ͘ͳ͍
    Ͱ͔͢ʁ
    ͦΜͳதɺಉ࣌୅ʹ೔ຊͰRuby
    ϓϩάϥϚʔΛ΍ͬͯΔͬͯɺ
    ح੻͡Όͳ͍Ͱ͔͢ʁ
    ࠷ߴʹ޾ӡ͡Όͳ͍Ͱ͔͢ʁ

    View Slide

  122. ͜Μͳ಄ͷ͓͔͍͠ޫܠ͕

    ݟΕΔͷ͸RubyKaigi͚ͩ

    Ͱ͢Αʂ

    View Slide

  123. RubyKaigi͸ɺͦΜͳRuby
    ͷ։ൃͷखॿ͚Λ͍ͨ͠
    Rubyͷ࣍ظόʔδϣϯͷΰʔϧʹ޲͔࣮ͬͯࡍʹίʔυΛ
    ॻ͍͍ͯΔਓ͕ͨͪίʔυΛ࣋ͪدͬͯ
    ࣗ෼ͷॻ͍ͨίʔυʹ͍ͭͯࣗຫେձΛ܁Γ޿͛ͯ
    ͔ͦ͜Βٞ࿦͕ੜ·Εͯ
    Rubyࣗମͷ։ൃ͕ਐΉ
    ͦΜͳ͖͔͚ͬ

    View Slide

  124. Rubyͷΰʔϧ͸
    RubyKaigiͷΰʔϧ

    View Slide

  125. ͜Ε͕๻Βͷ໨ࢦ͢

    RubyKaigiͩʂ

    View Slide

  126. ͱ͸͍͑ɺࠓ೥ͷKaigiͷ

    τϐοΫ͸ͪΐͬͱ

    ภΓ͔͗ͨ͢΋
    RubyKaigiͰ͸ଟ༷ੑ΋େࣄʹ͍ͨ͠
    ଟ༷ੑ͸ળ
    ΈΜͳͱҧ͏͜ͱΛ΍ͬͯΔਓͷ࿩
    Λฉ͖͍ͨ

    View Slide

  127. ͨͱ͑͹ɺ
    Railsͷ͓͔͛ͰRuby͸WebͷੈքΛ׬શʹ
    ੐෰͠ਚͯ͘͠͠·ͬͨͷͰ
    ͡Ό͋Rubyͷ࣍ͷ૬ख͸୭ͩʁ
    ͦ͜Ͱ࣮ࡍʹखΛಈ͔ͯ͠ઓ͍ͬͯΔਓͷ࿩
    Λ΋ͬͱฉ͖͍ͨʂ

    View Slide

  128. ੈք͸·ͩ·ͩະղܾ
    ͷ໰୊Ͱຬ͍ͪͯΔ
    RubyͰɺ·ͩ୭΋΍ͬͯͳ͍͜ͱΛ
    ΍Ζ͏ʂ
    ϓϩϙʔβϧ͓଴ͪͯ͠·͢ʂ
    (͢Έ·ͤΜɺ๻΋͕Μ͹Γ·͢)

    View Slide

  129. ·ͱΊ

    View Slide

  130. RubyͷΑ͞͸

    ͻͱͭ͡Όͳ͍
    ΈΜͳ͕ͪͬͯΈΜͳ͍͍
    օ͞ΜͦΕͧΕࣗ෼ͳΓͷRuby
    ͷΑ͞Λݟ͚ͭͯΈ͍ͯͩ͘͞

    View Slide

  131. ຊ೔

    ͓࿩ͨ͜͠͠ͱ

    View Slide

  132. Ruby͸ਓؒΒ͠͞
    Λଚॏͯ͘͠ΕΔ

    View Slide

  133. ͔ͩΒɺ๻ͨͪ

    RubyϓϩάϥϚʔ͸

    ਓؒΛଚॏ͍ͨ͠

    View Slide

  134. Rubyͷૉ੖Β͠͞͸
    ਓؒͷૉ੖Β͠͞ʂ

    View Slide

  135. end

    View Slide