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

ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?

Avatar for ydah ydah
April 10, 2026

ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?

ルールルルルルRubyKaigi 2026事前勉強会「ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?」の発表スライド
https://smarthr.connpass.com/event/387103/ #rubykaigi2026_smarthr

Avatar for ydah

ydah

April 10, 2026

More Decks by ydah

Other Decks in Programming

Transcript

  1. 

  2. 

  3. 

  4.  ͲͷΑ͏ʹ࣮ͯ͠ߦ͞Ε͍ͯ͘ͷ͔ ࣈ ۟ ղ ੳ ث ߏ จ ղ

    ੳ ث ί ϯ ύ Π ϥ 7 . จࣈྻ όΠτྻ τʔΫϯྻ ந৅ߏจ໦ "45 *4FR
  5.  ·ͣ͸ࣈ۟ղੳث ࣈ ۟ ղ ੳ ث ߏ จ ղ

    ੳ ث ί ϯ ύ Π ϥ 7 . จࣈྻ όΠτྻ τʔΫϯྻ ந৅ߏจ໦ "45 *4FR
  6.  ͍ͭͮͯߏจղੳث ࣈ ۟ ղ ੳ ث ߏ จ ղ

    ੳ ث ί ϯ ύ Π ϥ 7 . จࣈྻ όΠτྻ τʔΫϯྻ ந৅ߏจ໦ "45 *4FR
  7.  τʔΫϯྻ͕จ๏తʹਖ਼͍͔͠Λݕࠪͯ͠ந৅ߏจ໦Λ࡞Δ def method_name(pa r am) puts pa r am

    end defn args body fcall puts args '(' keyword_def tIDENTIFIER tIDENTIFIER ')' ...
  8.  ଓ͍ͯ͸ίϯύΠϥ ࣈ ۟ ղ ੳ ث ߏ จ ղ

    ੳ ث ί ϯ ύ Π ϥ 7 . จࣈྻ όΠτྻ τʔΫϯྻ ந৅ߏจ໦ "45 *4FR
  9.  ͦͯ͠࠷ޙ͸7. :"37 ࣈ ۟ ղ ੳ ث ߏ จ

    ղ ੳ ث ί ϯ ύ Π ϥ 7 . จࣈྻ όΠτྻ τʔΫϯྻ ந৅ߏจ໦ "45 *4FR
  10. 

  11.  "GUFS+*5ͷੈք ࣈ ۟ ղ ੳ ث ߏ จ ղ

    ੳ ث ί ϯ ύ Π ϥ 7 . จࣈྻ όΠτྻ τʔΫϯྻ ந৅ߏจ໦ "45 *4FR + * 5 ػցޠ
  12.  .+*5 ࠷ॳʹ3VCZʹೖͬͨ+*5͸ɺ3VCZͷ.+*5 .+*5ͷΞϓϩʔν͸ɺ*4FRΛ$ݴޠͷιʔείʔυʹม׵ͯ͠ɺ($$΍$MBOH ͰίϯύΠϧ͢Δͱ͍͏΋ͷͰͨ͠ ࣈ ۟ ղ ੳ ث

    ߏ จ ղ ੳ ث ί ϯ ύ Π ϥ 7 . จࣈྻ όΠτྻ τʔΫϯྻ ந৅ߏจ໦ "45 *4FR . + * 5 D IUUQTXXXSVCZMBOHPSHKBOFXTSVCZSFMFBTFE
  13. 

  14.  ίϯύΠϧͷࢹ໺ͷҧ͍ def calculate(x) a = x * 2 #

    ϒϩοΫ1 if a > 10 # ϒϩοΫ2 return a # ϒϩοΫ3 else return 0 # ϒϩοΫ4 end end
  15.  :+*5ͷ৔߹͸ϒϩοΫ୯Ґ def calculate(x) a = x * 2 #

    ϒϩοΫ1 - > ίϯύΠϧ1 if a > 10 # ϒϩοΫ2 - > ίϯύΠϧ2 return a # ϒϩοΫ3 - > ίϯύΠϧ3 else return 0 # ϒϩοΫ4 - > ίϯύΠϧ4 end end
  16.  ;+*5ͷ৔߹͸ϝιου୯Ґ def calculate(x) a = x * 2 if

    a > 10 return a # શମΛͻͱ·ͱΊʹίϯύΠϧ else return 0 end end
  17.  ϝιουશମͷจ຺ΛཧղͰ͖ΔͨΊɺແବͳॲཧΛେ୾ʹল͚Δ def calculate(x) a = x * 2 if

    a > 10 return a # શମΛͻͱ·ͱΊʹίϯύΠϧ else return 0 end end
  18. 

  19. 

  20.  )FMMPXPSME b = Ruby : : Box.new b.eval( <

    < ~RUBY) class Foo def say_hello puts "hello, Ruby : : Box!" end end RUBY
  21.  )FMMPXPSME # ֎ͷੈքͷάϩʔόϧۭؒʹ͸ `Foo` Ϋϥε͸ଘࡏ͠ͳ͍ p Foo.new # =

    > NameError: uninitialized constant Foo # Boxͷ֎͔ΒɺBox಺ͷΫϥεʹΞΫηε࣮ͯ͠ߦ͢Δ b : : Foo.new.say_hello # = > hello, Ruby : : Box!
  22.  ΦϒδΣΫτͷߦ͖དྷ͕ඇਪ঑ͳཧ༝ b1 = Ruby : : Box.new b1.eval('User =

    Data.def i ne(:name)') # Box1ͷUserΫϥε b2 = Ruby : : Box.new b2.eval('User = Data.def i ne(:name)') # Box2ͷUserΫϥε # ͦΕͧΕͷBox͔Βɺશ͘ಉ໊͡લΛ࣋ͭϢʔβʔΛ࡞੒ user1 = b1 : : User.new(name: "mame") user2 = b2 : : User.new(name: "mame") # த਎͸׬શʹಉ͡ͳͷʹɺൺֱ͢Δͱ false p user1 = = user2 # = > false
  23. 

  24.  ༷ʑͳ3VCZͷॲཧܥ w .3* .BU[T3VCZ*OUFSQSFUFS$3VCZ  w ϦϑΝϨϯε࣮૷ɻ$ݴޠͰهड़͞Ε͍ͯΔ w +3VCZ

    w +7.ʢ+BWBԾ૝Ϛγϯʣ্Ͱಈ࡞͢Δɻ+BWBϥΠϒϥϦͷར༻͕Մೳ w 5SVGGMF3VCZ w (SBBM7.্Ͱಈ࡞͢Δߴ଎ͳ࣮૷
  25. 

  26. 

  27. 

  28. 

  29. 

  30. 

  31.  ಠ࣮ࣗ૷ͷNSVCZT w NSVCZFEHF w 3VTU੡ɻ,J#ҎԼͷ8BTNόΠφϦͰΤοδαʔόʔ΁σϓϩΠ w .3VCZ$4 w $੡ɻ6OJUZͳͲͷήʔϜΤϯδϯͱͷγʔϜϨεͳ౷߹Λ໨ࢦ͢

    w NSVCZ[ w ೥୅ͷϏοτ$16ʢ;ʣ্Ͱ3VCZͷόΠτίʔυΛղऍ͢Δ w OFTSVCZ w ϑΝϛίϯ 3".,# ্Ͱಈ͘3VCZ