w ຊ3VCZΧϯϑΝϨϯε͔Βࠓͷ
3VCZ,BJHJ·Ͱͯ͢εϙϯαʔͯ͠Δ
ੈք།Ұͷاۀ ެืͷͳ͍
আ͘
w 3VCZ,BJHJ -5
-5
ొஃഐग़
w ຊࠃͰ34QFDͱ)BNMॳظͷಋೖاۀ
3VCZͱ&4.
*OD
Slide 7
Slide 7 text
044ίϛϡχςΟͱͷڞੜΛࢧԉ
3BJMT044ύονձ
#esm_oss
Slide 8
Slide 8 text
w !KVOL-SBNBίϯτϦϏϡʔλʔ
w !4)QBSTFZίϯτϦϏϡʔλʔ
w !LPJD1BSTFSHFNίϛολʔ
w !JNB[VNJ*3#ίϛολʔ
w !GVHBLLCO3#4ίϯτϦϏϡʔλʔ
ߏจղੳثݚڀ෦
IUUQTNBHB[JOFSVCZJTUOFUBSUJDMFT'PMMPX6Q,JSJTIJNB3VCZIUNM
/&8
w ຊ൪ϥϯλΠϜʹ3VCZ͕ೖ͍ͬͯͳ͍
w ։ൃڥͰ͋Ε3VCZΛΠϯείͰ͖Δ
w +BWBͩͱෳछͷ+&&αʔόʔʹσϓϩΠ͢Δ
&"3ϑΝΠϧͷBQQMJDBUJPOYNMͳΜ͔ͷ
αʔόʔݻ༗9.-ଐੑͷฤूΛ3&9.-ͰࣗಈԽ
w 0ODF8SJUF3VO"OZXIFSFͷάϧʔݴޠ🤔
U%JBSZ͕ΩϥʔΞϓϦ࣌
Slide 14
Slide 14 text
0.(ʹ࠾ʁ
!LLE
IUUQPCKFDUDMVCKQNMBSDINBHB[JOFIUNM
Slide 15
Slide 15 text
"GUFS3BJMT
Slide 16
Slide 16 text
w 3BJMTͱ͍͏ࠇધ͕͖ͬͯͨ
w ࣌3BJMTͷ࠾·ͩϦεΫ
w 3BJMTొͷ࣌TDB
ff
PMEͰ·ͱͳΞϓϦ
࡞ΕΔͷٙʁͬͯΈͨΒશવͰ͖ͨ
w ࣮ࡍͷͱ͜ΖTDB
ff
PME͏ػձ͕ͳ͍Α͏ͳ
͓ࣄͰ3VCZΛΩϝΔ࣌
Slide 17
Slide 17 text
w 3VCZPO3BJMTͰΓΓίʔυΛॻ͚ΔΑ
͏ʹͳͬͨΘΓʹΩϚΓ͗͢ͷΦʔόʔ
ϫʔΫʹͳͬͯ͠·ͬͨࣄྫ͋Γ
w ࣌ੜ࢈ੑഒͱݴΘΕ͍ͯͨཪ
w 3VCZPO3BJMTͰఆ࣌ʹؼΖ͏"8%X3
Ωϝա͗ҙใ͕ग़Δ
Slide 18
Slide 18 text
w has_manyͳͲͰݴޠ%4-ͷڧྗ͞Λྲྀ
w Ҿ࠷ޙͷϋογϡͷϒϨʔεͷলུͰ
ΩʔϫʔυҾͬΆ͞ ࣌=>ه๏ͷΈ
w 3BJMTͰಋೖ͞ΕͨSymbol#to_proc͕3VCZ
ʹϙʔςΟϯά͞ΕΔ
3BJMTʹΑΔ3VCZͷදݱྗ
w :"37͕ೖͬͯɺ"45ϕʔεͷධՁث͔
Β7.ʹΑΔόΠτίʔυ࣮ߦʹͳͬͨ
w άϦʔϯεϨου͔ΒωΠςΟϒεϨουʹ
ͳͬͨ (7-͕͋Δͷͷ*0ͪͳͲͷϒ
ϩοΫதଞͷεϨου͕࣮ߦͰ͖Δ
w ͭ·ΓΞοϓάϨʔυ͢Δͱ͘ͳΔ࣌
ΞϓϦίʔυԼͰͷมԽ
Slide 22
Slide 22 text
w key => valueʹՃ͑key: valueͷ)BTIه๏ಋೖ
w ྩ ࣌3VCZEFW
ʹ
ʮ3VCZͷ)BTIه๏ʯͱίϝϯτ͢Δ͜ͱ͕ʂ
w ΩʔϫʔυҾ͕ೖͬͨͷ3VCZ͔Β͕ͩɺϝιο
υҾͷ࠷ޙͷϋογϡ͕ຊʹͦΕͬΆ͘
w ࣌ࢍ൱྆ͷlambdaͷ->ه๏͕ೖͬͨ
w จࣈͱه߸ͷࣝผௐ͕ઈົ
ΞϓϦίʔυ͕ݱతͳݟͨʹ
Slide 23
Slide 23 text
w 3VCZҎલͷจࣈྻόΠτͷγʔέϯε
w ⤴Ͱଟ͘ͷEncoding::CompatibilityErrorͱରቂ
w # encoding: UTF-8ϚδοΫίϝϯτʹΑΔ
εΫϦϓτΤϯίʔσΟϯάͷࢦఆͱ
String#force_encodingͳͲʹΑΔετϦʔϜ
ΤϯίʔσΟϯάมͰΓͬͨΑ͏ͳ
w ͓͔͛ͰͷΞοϓάϨʔυ͘͠ͳ͔ͬͨʁ
ΞϓϦίʔυͷඇޓ աڈ࠷େ
Slide 24
Slide 24 text
5IF'JSTU4UBCMF
Slide 25
Slide 25 text
w 3VCZ(FNT͕ඪ४ఴʹͳΔ
w ruby setup.rbίϚϯυʹΑΔΠϯετʔϧ
apt-get install railsͱ͍͏gemཧͱࠞ
ͥΔͳةݥͷ౫ଡ
w ͜ͷޙ͘Β͍ʹ3BJMTʹ#VOEMFS͕౷߹͞Εͯ
ύοέʔδཧͷΤίγεςϜ͕҆ఆͨ͠
ܥ࠷ॳͷ҆ఆόʔδϣϯ
Slide 26
Slide 26 text
.BOZ/FX'FBUVSFT
Slide 27
Slide 27 text
w ΩʔϫʔυҾɺModule#prependɺ
γϯϘϧϦςϥϧɺEnumerable#lazyɺ
َӢɺTracePointɺ3F
fi
OFNFOUTͳͲͳͲ
w ӽ͠ͷΞοϓάϨʔυͰຊʹ৽ػೳ
Γͩ͘͞Μͩͬͨ
w ϝλϓϩΪϟϯάେتͼʁ
ޫͷػೳͱҋͷػೳͨ͘͞Μ
Slide 28
Slide 28 text
w εΫϦϓτΤϯίʔσΟϯάͷσϑΥϧτ͕
65'ʹͳͬͨ ࠓϚδίϝෆཁ
εΫϦϓτΤϯίʔσΟϯάෆཁ
Slide 29
Slide 29 text
*NQSPWFNFOUT
Slide 30
Slide 30 text
w ΞϓϦ໘Ͱେ͖ͳมߋࢥ͍ग़ͤͳ͍
վળʹײँ
Slide 31
Slide 31 text
4ZNCPM($
Slide 32
Slide 32 text
w 3BJMTͰ4ZNCPM($ඞਢͷͨΊಋೖ
͞Εͨ3VCZҎ্Λཁٻ͢Δ
w ݫີʹόάϑΟοΫεͷҎ্͕ཁ݅
վળʹײँ
Slide 33
Slide 33 text
4FWFSBM6TFGVM4ZOUBYFT
Slide 34
Slide 34 text
w 4BGF/BWJHBUJPO0QFSBUPS ΅ͬͪԋࢉࢠ
ʹΑΔ3BJMTΞϓϦͷtryͱtry!ͷஔ͖͑
w .Ͱेͳ߹ʹ&.Λكʹݟ͔͚Δ
4BGF/BWJHBUJPO0QFSBUPS
Slide 35
Slide 35 text
w 4RVJHHMZ)FSFEPDʹΑΔ3BJMTΞϓϦͷ
strip_heredocͷஔ͖͑
4RVJHHMZ)FSFEPD
ܯࠂͷ͕ྲྀΕΔ
w 3VCZͷͱ͖ͱҟͳΓɺ·ͣඇޓͷ
ඇਪܯࠂ͞Ε͍ͯͨ
w 3VCZEFWΛ͏͜ͱͰϦϦʔε࣌
ʹͷ൙ཞ͕ݮΔΑ͏ʹύονΛૹ͍ͬͯͨ
Slide 41
Slide 41 text
044ͱৗ
w HIRHFNTSD
ཧϦϙδτϦ
ͷඇਪܯࠂ
ύονΛग़͢Τί
γεςϜࢀՃͷ
͖͔͚ͬʹͳΔ
Slide 42
Slide 42 text
*NQSPWFNFOUT
Slide 43
Slide 43 text
w rescueelseensure͕doend
ϒϩοΫʹॻ͚ΔΑ͏ʹͳͬͨͷॻ͖৺
ྑ͍
վળʹײँ
Slide 44
Slide 44 text
.+*53VCZ7."45
Slide 45
Slide 45 text
w ͍ͪΜ࣮༻໘ͰӨڹ͍ͯͦ͠͏
w 3VCZΛΠϯετʔϧͨ͠ޙʹ
gem i bundlerͱ͍͏ఆܕّྱ͕ෆཁʹ
#VOEMFS͕ඪ४ఴ͞ΕΔ
Slide 46
Slide 46 text
w .+*5͕ಋೖ͞Ε͕ͨɺ3BJMTΞϓϦέʔγϣ
ϯͰͷ࣮༻ࣄྫՉฉʹͯ͠ฉ͔ͣͩͬͨ
w 3VCZ7."CTUSBDU4ZOUBY5SFFʹΪϟϯά
͕ΞϓϦ֎ͰΓ্͕ΓΛݟ͍ͤͯͨ
w ΞϓϦͷ࣮༻໘ͰFOEMFTTSBOHFͳͲͷ
৽ػೳΛ͑ΔΑ͏ʹͳͬͨ
͍Ζ͍Ζͱ࣮ݧతͳ೩ྉԼ
Slide 47
Slide 47 text
4VQFS)BSE.PEF3VCZ
Slide 48
Slide 48 text
LXBSHT
w ͍͍ͩͨฐࣾͷ
ύονձʹग़ͯͨ
ਓͷपลͰΤί
γεςϜଆͷ
LXBSHTͷͷ
ରԠΛਐΊ͍ͯͨ
ҹ
Slide 49
Slide 49 text
w OVNCFSFEQBSBNFUFSͷελΠϧੋඇʹͭ
͍ͯʮ3VCZ8FCΛ࡞ΔͨΊͷݴޠͰ
ͳ͘εΫϦϓτݴޠʯͱ͍͏ͷͳΔ΄Ͳ
w ݸਓతʹอक͢Δίʔυʹ໊લ͕͍ͭͯ
͍ͯΒ͍͍͚ͨΕͲɺॻ͖ࣺͯεϥΠυ
ྔΛݮΒ͢ͷʹศར
ύλʔϯϚονφϯύϥ
w ܕΛॻ͔ͣʹɺܕͷϝϦοτΛڗड͍ͨ͠
w 3#4ͩͱΞϓϦͰ·ͩܕΛॻ͘ίετ͕ߴ͘
࠳ં͢ΔͷΛݟ͔͚Δ %3:Ͱͳ͘ਏ͍
w 3#*ͷಋೖίʔυ3VCZʹݟ͑ͣਏ͍
w ྫ͑3#4͕πʔϧؒͷཪଆͷϨΠϠʔݴޠ
ʹͳΔະདྷʁ
நղऍͱ͍͏ୈͷಓ
Slide 53
Slide 53 text
:+*5
Slide 54
Slide 54 text
w .+*5ʹՃ͑ͯ-##7ʹج͍ͮͨ4IPQJGZ
+*5Ͱ͋Δ:+*5͕ಋೖ͞Εͨ
w 3BJMTΞϓϦͰ༗ޮԽͨ͠ޮՌଌఆ͕ʹ
ͳΔ͜ͱ͕͋Δ͚ΕͲ-41ͰΫϥΠΞϯτ
͔ΒRUBY_YJIT_ENABLED=trueͯ͠ΈΑ͏
w FHWTDPEFSVCPDPQ
TUFFQWTDPEF
:+*5
Slide 55
Slide 55 text
3VTU:+*58"4.
Slide 56
Slide 56 text
w :+*5ͷ࣮͕3VTUʹͳͬͨ
w 3VTU:+*5ͷϏϧυͰࠔΔͱ͍͏ΛपลͰ
ฉ͔ͳ͍
w %0$,&30''*$*"-*."(&͕ΘΕ͍ͯΔ
ͷ͔ɺ3VTUΠϯετʔϧڭཆͳͷ͔ɺ
:+*5ແޮͰͷϏϧυͱ͍ͯ͠Δͷ͔
3VTU:+*5
Slide 57
Slide 57 text
w ࠷ۙ5SZ3VCZͷσϑΥϧτ͕0QBM͔Β
8"4.ʹͳ͍ͬͯͨ ΑΓྑ͍ೖʹ
8FC"TTFNCMZ 8"4.
IUUQTUSZSVCZMBOHPSHQMBZHSPVOE
Slide 58
Slide 58 text
w ਖ਼نදݱ·ΘΓվળʹΑΔ3F%P4߈ܸରࡦ
࣮༻త
w 3FBEPOMZͷStruct.new૬ͱͯ͠
Data.define͕ಋೖ͞Εͨ
w 3BDUPSͷར༻ʹؔΘ͍͖ͬͯͦ͏
ͷݸਓతਪ͠
Slide 59
Slide 59 text
6OJWFSTBM1BSTFS3BDJOH
Slide 60
Slide 60 text
-SBNBBOE:"31
6OJWFSTBM1BSTFSݖ૪ୣͷηϝϯτ
Slide 61
Slide 61 text
w !KVOL-SBNBίϯτϦϏϡʔλʔ
w !4)QBSTFZίϯτϦϏϡʔλʔ
w !LPJD1BSTFSHFNίϛολʔ
w !JNB[VNJ*3#ίϛολʔ
w !GVHBLLCO3#4ίϯτϦϏϡʔλʔ
ߏจղੳثݚڀ෦
IUUQTNBHB[JOFSVCZJTUOFUBSUJDMFT'PMMPX6Q,JSJTIJNB3VCZIUNM