Slide 1

Slide 1 text

Finding Ruby Again @a_matsuda

Slide 2

Slide 2 text

ʮ΋͏Ұ౓ɺ
 Rubyͱग़ձ͏ʯ

Slide 3

Slide 3 text

Ruby͍͍ΑͶ

Slide 4

Slide 4 text

ݱ୅ʹʮRubyϓϩάϥϚʔʯ
 ͍ͬͯ͏࢓ࣄ͕͋ͬͯຊ౰ʹ Α͔ͬͨ ਖ਼௚ɺ͜ΕҎ֎ͷੜ͖ํͰ ·ͱ΋ʹࣾձʹద߹Ͱ͖ͯ ͔ͨͲ͏͔͢͜ͿΔո͍͠

Slide 5

Slide 5 text

RubyͷΑ͞

Slide 6

Slide 6 text

Rubyͬͯɺ
 ͳΜ͔͍͍

Slide 7

Slide 7 text

Կ͕ʁ

Slide 8

Slide 8 text

ߟ͑ͯΈΑ͏͔

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

͍͍͡ΌΜ => ͳͥʁΛਂ۷Γ ͯ͠ΈΔͱ͍͏ΦʔιυοΫε
 ͳΞϓϩʔνͰ

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

ͨͩ͠ɺࠓ೔͸Matz is Nice ͚ͩ͸ݴΘͳ͍Α͏ʹ͢Δ ͜ΕΛݴͬͪΌ͏ͱ
 ࢥߟఀࢭʹؕΔؾ͕͢Δ

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

΋͏Ұ౓
 ΍ͬͯΈͨ

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

ղ๏͸ωοτ্ͰΊͬͪΌ
 ڞ༗஌Խ͞ΕͯΔͷͰ
 ͪΐͬͱζϧ͕Ͱ͖Δ ʮߟ͑ํʯʹ໊લΛ͚ͭΔͱ͖ʹ೰ ·ͳͯ͘ྑ͍ naked_pairs, intersection_removal, x_wing, etc.

Slide 23

Slide 23 text

͜Μͳײ͡

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

ͦ͏͍͑͹Bugsʹ
 ͜ΜͳIssue͕͋Γ·͕͢

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

ଟ༷ੑ͸ળͬͯ
 ͍ͭ΋ݴͬͯΔͰ͠ΐʁ

Slide 41

Slide 41 text

ͱ͜ΖͰɺݱ࣮ੈքͰ͸
 RubyϓϩάϥϚʔ == RailsϓϩάϥϚʔ
 ʹҧ͍ͳ͍ͷͰ ࣍͸Railsͷ࿩Λ͠·͢

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

Railsͷதͷਓͨͪ͸
 ΄Μͱ͏ʹRuby͕େ޷͖

Slide 46

Slide 46 text

DHH "Why Ruby?" @ RubyConf 2010

Slide 47

Slide 47 text

Jeremy "Rails3:Convergent evolution" @ RubyWorld Conference 2009

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

νʔϜ։ൃʹ
 ޲͍͍ͯΔ ͓࢓ࣄͰ࢖͏ͷʹ͓͢͢Ί

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

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

Slide 83

Slide 83 text

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

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

ࠓ·ͰʹࢀՃͨ͠ੈք ͷ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 ͳͲͳͲ

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

RubyKaigi

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

ͳͥಌΕͷRubyistͨͪ΍ rubyfriendsͨͪʹ
 ձ͍ʹߦ͖͍ͨͷ͔ʁ "Rubyistist"͔ͩΒ

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

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

Slide 94

Slide 94 text

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

Slide 95

Slide 95 text

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

Slide 96

Slide 96 text

༨ஊͳ͕Βɺ

Slide 97

Slide 97 text

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

Slide 98

Slide 98 text

Asakusa஍Ҭ
 ͷ৔߹

Slide 99

Slide 99 text

ҎԼͷ໘ʑ͕ΈΜͳ๻ͷՈ
 ͔Βెาݍ಺ͱ͍͏ҟৗࣄଶ @_ko1 @nalsh @_zzak @shyouhei @hsbt @k0kubun

Slide 100

Slide 100 text

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

Slide 101

Slide 101 text

ؓ࿩ٳ୊

Slide 102

Slide 102 text

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

Slide 103

Slide 103 text

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

Slide 104

Slide 104 text

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

Slide 105

Slide 105 text

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

Slide 106

Slide 106 text

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

Slide 107

Slide 107 text

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

Slide 108

Slide 108 text

ԶΒ͕ԿͷͨΊʹRubyKaigi ΍ͬͯΔͷ͔͕ͥΜͥΜ
 Θ͔ͬͯͳ͍

Slide 109

Slide 109 text

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

Slide 110

Slide 110 text

RubyKaigi͸ɺීஈ͔Β
 ίʔυΛॻ͍ͯΔਓͷ࿩Λ
 ฉͨ͘ΊͷΧϯϑΝϨϯε

Slide 111

Slide 111 text

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

Slide 112

Slide 112 text

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

Slide 113

Slide 113 text

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

Slide 114

Slide 114 text

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

Slide 115

Slide 115 text

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

Slide 116

Slide 116 text

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

Slide 117

Slide 117 text

Ruby 3͕໨ࢦ͢
 3ͭͷΰʔϧ type concurrency performance

Slide 118

Slide 118 text

RubyKaigiͷ΋͏
 ͻͱͭͷϛογϣϯ

Slide 119

Slide 119 text

Rubyͷ։ൃΛۦಈ ͢Δ

Slide 120

Slide 120 text

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

Slide 121

Slide 121 text

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

Slide 122

Slide 122 text

͜Μͳ಄ͷ͓͔͍͠ޫܠ͕
 ݟΕΔͷ͸RubyKaigi͚ͩ
 Ͱ͢Αʂ

Slide 123

Slide 123 text

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

Slide 124

Slide 124 text

Rubyͷΰʔϧ͸ RubyKaigiͷΰʔϧ

Slide 125

Slide 125 text

͜Ε͕๻Βͷ໨ࢦ͢
 RubyKaigiͩʂ

Slide 126

Slide 126 text

ͱ͸͍͑ɺࠓ೥ͷKaigiͷ
 τϐοΫ͸ͪΐͬͱ
 ภΓ͔͗ͨ͢΋ RubyKaigiͰ͸ଟ༷ੑ΋େࣄʹ͍ͨ͠ ଟ༷ੑ͸ળ ΈΜͳͱҧ͏͜ͱΛ΍ͬͯΔਓͷ࿩ Λฉ͖͍ͨ

Slide 127

Slide 127 text

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

Slide 128

Slide 128 text

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

Slide 129

Slide 129 text

·ͱΊ

Slide 130

Slide 130 text

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

Slide 131

Slide 131 text

ຊ೔
 ͓࿩ͨ͜͠͠ͱ

Slide 132

Slide 132 text

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

Slide 133

Slide 133 text

͔ͩΒɺ๻ͨͪ
 RubyϓϩάϥϚʔ͸
 ਓؒΛଚॏ͍ͨ͠

Slide 134

Slide 134 text

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

Slide 135

Slide 135 text

end