Slide 1

Slide 1 text

Ruby2.7ͷ৽ػೳͰ
 ؆қ൛RubyΠϯλϓϦλΛ
 ࣮૷ͯ͠ΈΔ 
 2019/05/09 Hello hey for Engineers vol.3ɹɹ
 
 fuqda(fuqda90)

Slide 2

Slide 2 text

fuqdaͱਃ͠·͢ ʲܦྺʳ
 4*FS ೥਺ϲ݄ ͔Β
 ແڅΠϯλʔϯϲ݄Λܦͯ
 4503&4KQ΁ྲྀΕண͖೥໨
 
 ʲͦͷଞʳ
 ීஈ͸5BNBSCͱ͍͏
 ଟຎ஍Ҭ ٢঵ࣉʙീԦࢠ·Ͱ ͷ
 ஍Ҭ3VCZίϛϡχςΟΛɹ
 ओ࠵ͯ͠·͢

Slide 3

Slide 3 text

ࠂ஌ ݸਓత

Slide 4

Slide 4 text

݄ʹ5BNBSCͰ ΧϯϑΝϨϯε ΍Γ·͢✨

Slide 5

Slide 5 text

ςʔϚ͸ʮRubyistͱͯ͠ͷ੒௕ʯ

Slide 6

Slide 6 text

Tama Rubyձٞ01 ౔ d
 ೚ҙࢀՃͷ࠙਌ձd·Ͱ 
 !ौ୩ηϧϦΞϯλϫʔ' (.0:PVST جௐߨԋɿҏ౻३Ұ͞Μ !KODIJUP 
 جௐߨԋɿޒेཛྷ๜໌͞Μ !JHBJHB 
 ͦͷଞ$'1ʴ5BNBSCϝϯόʔ-5

Slide 7

Slide 7 text

CFPઈࢍड෇தͰ͢
 (ҰൠࢀՃืू͸6݄։࢝༧ఆ) https://tama-rb.github.io/tamarubykaigi01/

Slide 8

Slide 8 text

ࠓ೔ͷ͓࿩

Slide 9

Slide 9 text

Ruby2.7ͷύλʔϯϚονΛ ࢼͯ͠ΈΔͱ͍͏࿩ 3VCZͷτϥϯΫ NBTUFS ʹ
 1BUUFSO.BUDIJOHͱ͍͏৽ػೳ͕
 ௥Ճ͞Ε͍ͯΔͱͷ͜ͱ
 ͱ͍͏Θ͚Ͱʂຊ೔͸
 ͦΕΛࢼͯ͠Έ·͢

Slide 10

Slide 10 text

ิ଍ɿRubyKaigi2019Ͱͷ
 ൃද͸ͪ͜Β https://speakerdeck.com/k_tsj/pattern-matching-new-feature-in-ruby-2-dot-7

Slide 11

Slide 11 text

ࠓճ
 ύλʔϯϚονϯάΛ ࢼ͢୊ࡐ

Slide 12

Slide 12 text

3VCZͰ࡞Δ
 ؆қ൛ 3VCZΠϯλϓϦλ ✨

Slide 13

Slide 13 text

ʲલఏʳ ͜͜Ͱ࡞ΔΠϯλϓϦλʹ͍ͭͯ͸ɺ
 िץΞεΩʔͰ࿈ࡌ͞Ε͍ͯͨ (2016.09~2017.01)
 RubyͰֶͿRubyͷίʔυΛҰ෦ྲྀ༻͠ɺ
 ͦ͜ʹखΛೖΕ͍ͯ͘ܗͰ
 ਐΊ͍͖ͯ·͢ refs :ʮୈ5ճ RubyͰม਺෇͖ి୎Λ࡞ͬͯΈΔʯ https://ascii.jp/elem/000/001/230/1230449/

Slide 14

Slide 14 text

ͦ΋ͦ΋ΠϯλϓϦλͬͯ… JUFSQSFUFSˠҙຯɿʮ௨༁ʯ
 
 ਓ͕ؒॻ͍ͨιʔείʔυΛ
 ಡΈࠐΜͰϓϩάϥϜͱͯ͠
 ࣮ߦ͢ΔϓϩάϥϜͷ͜ͱ

Slide 15

Slide 15 text

ྫ͑͹͜ΜͳࣜΛಡΈࠐΜͰ
 ΠϯλʔϓϦλ͕ղऍ͢Δ৔߹

Slide 16

Slide 16 text

ΠϯλϓϦλ͕
 ΍Δ͜ͱͬͯʁ

Slide 17

Slide 17 text

ࣈ۟ղੳ ߏจղੳ ࣮ߦ

Slide 18

Slide 18 text

1. ࣈ۟ղੳ 
 
 
 จࣈྻΛͭͭ෦඼ͷ഑ྻʹม׵͢Δ
 
 


Slide 19

Slide 19 text

2. ߏจղੳ 
 
 
 ϓϩάϥϜͱ࣮ͯ͠ߦՄೳͳߏจ໦ʹม׵͢Δ
 
 


Slide 20

Slide 20 text

3. ࣮ߦ ߏจ໦Λೖྗͱͯ͠ϓϩάϥϜΛ࣮ߦ͢Δ

Slide 21

Slide 21 text

ࣈ۟ղੳ ߏจղੳ ࣮ߦ ࣌ؒͷ౎߹ʹΑΓ ͷ ෦෼͸ग़དྷ߹͍ͷϥΠϒϥϦΛ ྲྀ༻͠·͢

Slide 22

Slide 22 text

΍͍ͬͯ͘

Slide 23

Slide 23 text

ࠓճͷࡐྉᶃ
 ߏจղੳ༻ͷgem NJOSVCZ https://github.com/mame/minruby

Slide 24

Slide 24 text

ࠓճͷࡐྉᶄ
 ߏจ໦ΛRubyͱ࣮ͯ͠ߦ͢ΔΫϥε ࣮ߦ͢ΔϑΝΠϧ JOUFSQSFUFSSC

Slide 25

Slide 25 text

ࠓճͷࡐྉᶅ
 ߏจ໦Λ࡞ΔͨΊͷܭࢉࣜΛهࡌͨ͠Ϋϥε ίϚϯυ࣮ߦ͢ΔϑΝΠϧͷҾ਺ͱͳΔϑΝΠϧ ʮʯ͕هࡌ͞Ε͍ͯΔ͚ͩ GPSNVMBSC

Slide 26

Slide 26 text

͡Ό࣮͋ࡍɺ 3VCZͷύλʔϯϚονϯάΛ ΠϯλϓϦλͷॲཧͰ࢖͏ͱͯ͠ɺ ͲΜͳ෦෼Ͱ࢖͑ΔͩΖ͏ʁ

Slide 27

Slide 27 text

ߟ͑ͯΈΔ

Slide 28

Slide 28 text

case~whenΛεοΩϦॻ͘
 ͨΊʹ࢖͏ͷ͸Ͳ͏ͩΖ͏ʁ ɹɹɹɹ ߏจղੳޙͷ഑ྻ Λ ࠶ؼతʹݕࡧͯ͠Լهͷϝιουͷ 3VCZͱͯ͠
 ࣮ߦ͢Δ෦෼ʹ
 खΛೖΕͯΈΔ

Slide 29

Slide 29 text

ࢼͯ͠ΈΑ͏

Slide 30

Slide 30 text

ࠓճ࢖͏
 ύλʔϯϚονϯάͷ छྨ ɹɹɹɹ˞ύλʔϯϚονϯάͷه๏ʹ͸
 ɹɹɹɹ͍͔ͭ͘ͷόϦΤʔγϣϯ͕͋Γ·͢

Slide 31

Slide 31 text

As Pattern DBTFʹ౉ͬͨ஋͕ ύλʔϯʹҰக͢Δͱ Ұகͨ͠஋ͱ
 Ҏ߱ͷม਺Λ ඥ͚ͮΔ͜ͱ͕ग़དྷΔ

Slide 32

Slide 32 text

ͦͷଞͷύλʔϯϚονϯάʹ͍ͭͯ 7BMVF1BUUFSO
 7BSJBCMF1FUUFSO
 "MUFSOBUJWF1BUUFSO
 "SSBZ1BUUFSO
 )BTI1BUUFSO ͪ͜Βͷهࣄ͕෼͔Γ΍͔ͬͨ͢ͷͰؾʹͳΔํ͸ͦͪΒ΁
 !NBLJDBNFMʮ3VCZͷ৽ػೳ1BUUFSO.BUDIJOH͕࠷ߴͰͨ͠ʯ
 IUUQTRJJUBDPNNBLJDBNFMJUFNTDEFGEFEC

Slide 33

Slide 33 text

΍ͬͯΈͨ

Slide 34

Slide 34 text

As PatternΛ࢖͏લޙͷมߋࠩ෼ ࠓճͷέʔεͰ͸࠶ؼॲཧΛॻ͔ͳͯ͘΋Α͘ͳΓ·ͨ͠
 ଟগ͸γϡοͱॻ͚͔ͨ΋͠Ε·ͤΜɻ ΋ͬͱ៉ྷʹॻ͚ΔͩΖ͏͚Ͳࠓճ͸ΰϝϯͳ͍͞ʜ

Slide 35

Slide 35 text

खݩͰಈ͔͢৔߹ ΋͠खݩͰࢼͯ͠Έ͍ͨ ͱ͍͏ํ͸HJTUʹιʔεΛ ஔ͍͓͖ͯ·ͨ͠ͷͰɺ ͦͪΒͰ΋͓ܰ͘ࢼ͠௖͚·͢ ஫) Rubyͷόʔδϣϯ͸2.7.0devͰ͢ https://gist.github.com/Shigeyuki-fukuda/37c2e9da1ac3744ea24920dacd25580f

Slide 36

Slide 36 text

࣮ࡍʹಈ͔ͨ݁͠Ռ 
 SBJMTSVOOFSίϚϯυʹҾ਺Λ౉ͯ͠
 ࣮ߦͯ͠Έͨͱ͜ΖΩϟϓνϟͷ௨Γ
 ૝ఆ௨Γͷܭࢉ͕͞Ε·ͨ͠ ܭࢉ݁Ռ͕Ͱ͋Δ͜ͱΛ֬ೝ

Slide 37

Slide 37 text

ײ૝

Slide 38

Slide 38 text

ࠓճ΍ͬͯΈͯ… ࠓճ͸ɺͷΑ͏ͳԋࢉࢠͱ਺஋ͭͷ୯७ͳܭࢉࣜͰ͕ͨ͠ɺ ΍ԼهͷΑ͏ͳෳ਺ߦͷܭࢉʹରԠ͠Α͏ͱ͢Δͱ ΋͏গ͠࢖͍ํΛ޻෉͢Δඞཁ͕͋Γͦ͏Ͱ͢ ΋͏গ͠޻෉ͯ͠࡞Γ͔ͨͬͨͰ͕͢ɺ·ͨ࣍ͷػձʹ 
 ɹɹɹɹɹɹɹɹɹɹ ɹɹɹɹɹɹɹɹɹɹ FYෳ਺ߦͷܭࢉࣜΛಡΈࠐΉࡍͷྫ

Slide 39

Slide 39 text

·ͱΊ

Slide 40

Slide 40 text

RubyͬͯΠΠͰ͢ΑͶ✨ ࠓճ͸3VCZͷτϥϯΫʹ௥Ճ͞Εͨ ϕʔλ൛ͷύλʔϯϚονϯάΛ3VCZͷΠϯλϓϦλͷ࣮૷ ͱ͍͏έʔεΛྫʹ͍ͬͯ͡Έ·ͨ͠ ΍ͬͺΓ3VCZͰίʔυΛॻ͘ͷָ͍ͬͯ͠Ͱ͢ΑͶ✨☺ 3VCZͷདྷ೥ϦϦʔε͕ࠓ͔Βָ͠ΈͰ͢ SCFOW͔ΒखܰʹམͱͤΔͷͰ
 ·ͩͷํ͸2.7Λࢼͯ͠Έͯ͸͍͔͕Ͱ͠ΐ͏͔

Slide 41

Slide 41 text

ͱ͍͏Θ͚Ͱ

Slide 42

Slide 42 text

8FBSF)JSJOH 4503&4KQ͸
 Ұॹʹಇ͍ͯ͘ΕΔ஥ؒΛืू͍ͯ͠·͢