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 full-size slide

  2. ʮ΋͏Ұ౓ɺ

    Rubyͱग़ձ͏ʯ

    View full-size slide

  3. Ruby͍͍ΑͶ

    View full-size slide

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

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

    View full-size slide

  5. Rubyͬͯɺ

    ͳΜ͔͍͍

    View full-size slide

  6. ߟ͑ͯΈΑ͏͔

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    ͳΞϓϩʔνͰ

    View full-size slide

  11. 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 full-size slide

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

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

    View full-size slide

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

    ࢥߟఀࢭʹؕΔؾ͕͢Δ

    View full-size slide

  14. ͱ͍͏Θ͚Ͱɺ

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. ΋͏Ұ౓

    ΍ͬͯΈͨ

    View full-size slide

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

    View full-size slide

  19. ͳͷͰɺ

    ਓؒΒ͘͠

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

    View full-size slide

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

    ڞ༗஌Խ͞ΕͯΔͷͰ

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  25. ॳ৺ʹฦͬͯRuby

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

    View full-size slide

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

    View full-size slide

  27. ͔֬ʹָ͍͠……

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  33. ͦ͏͍͑͹Bugsʹ

    ͜ΜͳIssue͕͋Γ·͕͢

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  36. 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 full-size slide

  37. ଟ༷ੑ͸ળͬͯ

    ͍ͭ΋ݴͬͯΔͰ͠ΐʁ

    View full-size slide

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

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

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

    View full-size slide

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

    View full-size slide

  40. ͳͥRails͸

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

    Rails < Ruby

    View full-size slide

  41. Ruby͔ΒҾ͖ܧ͍ͩ

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

    View full-size slide

  42. Railsͷதͷਓͨͪ͸

    ΄Μͱ͏ʹRuby͕େ޷͖

    View full-size slide

  43. DHH
    "Why Ruby?" @ RubyConf
    2010

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  47. ࢓ࣄͰ

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    ͢ΔΑ͏ʹͳͬͯɺ

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  55. ͳͥRailsͷόά͸

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

    View full-size slide

  56. ͳͥRails͸Α͘

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

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

    View full-size slide

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

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

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  66. ڊਓͷݞʹ৐ͬͯ

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  72. Rubyͷ

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

    View full-size slide

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

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  77. νʔϜ։ൃʹ

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

    View full-size slide

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

    View full-size slide

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

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  83. ࠓ·ͰʹࢀՃͨ͠ੈք
    ͷ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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

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

    View full-size slide

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

    View full-size slide

  89. Rubyististʹ

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  92. ༨ஊͳ͕Βɺ

    View full-size slide

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

    View full-size slide

  94. Asakusa஍Ҭ

    ͷ৔߹

    View full-size slide

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

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  99. ࠷ߴͷ

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  102. RubyKaigi͸

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

    View full-size slide

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

    Θ͔ͬͯͳ͍

    View full-size slide

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

    View full-size slide

  105. RubyKaigi͸ɺීஈ͔Β

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

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  108. ͳͥRubyKaigi͸ίʔυΛ

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  112. Ruby 3͕໨ࢦ͢

    3ͭͷΰʔϧ
    type
    concurrency
    performance

    View full-size slide

  113. RubyKaigiͷ΋͏

    ͻͱͭͷϛογϣϯ

    View full-size slide

  114. Rubyͷ։ൃΛۦಈ
    ͢Δ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    ݟΕΔͷ͸RubyKaigi͚ͩ

    Ͱ͢Αʂ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  120. ͜Ε͕๻Βͷ໨ࢦ͢

    RubyKaigiͩʂ

    View full-size slide

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

    τϐοΫ͸ͪΐͬͱ

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  124. RubyͷΑ͞͸

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

    View full-size slide

  125. ຊ೔

    ͓࿩ͨ͜͠͠ͱ

    View full-size slide

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

    View full-size slide

  127. ͔ͩΒɺ๻ͨͪ

    RubyϓϩάϥϚʔ͸

    ਓؒΛଚॏ͍ͨ͠

    View full-size slide

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

    View full-size slide