Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby講義 第4回
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kuniaki IGARASHI
May 02, 2012
Technology
11k
2
Share
Ruby講義 第4回
Kuniaki IGARASHI
May 02, 2012
More Decks by Kuniaki IGARASHI
See All by Kuniaki IGARASHI
ActiveJobUpdates
igaiga
1
610
roppongirb_20250911
igaiga
1
660
igaiga Ruby Association Activity Report 2025 LT
igaiga
1
140
KaigiOnRails2024
igaiga
16
23k
RuboSensei
igaiga
0
340
Shibuya.rb-2023-04-27-igaiga
igaiga
1
580
Ginza Rails27 igaiga
igaiga
9
14k
tork09igaiga
igaiga
2
390
Road to white mages
igaiga
1
770
Other Decks in Technology
See All in Technology
AI前提とはどういうことか
daisuketakeda
0
190
新メンバーのために、シニアエンジニアが環境を作る時代
puku0x
0
870
2026年に相応しい 最先端プラグインホストの設計<del>と実装</del>
atsushieno
0
120
建設的な現実逃避のしかた / How to practice constructive escapism
pauli
4
330
CDK Insightsで見る、AIによるCDKコード静的解析(+AI解析)
k_adachi_01
2
150
終盤で崩壊させないAI駆動開発
j5ik2o
2
2k
Azure Lifecycle with Copilot CLI
torumakabe
3
860
ルールルルルル私的函館観光ガイド── 函館の街はイクラでも楽しめる!
nomuson
0
190
昔はシンプルだった_AmazonS3
kawaji_scratch
0
230
Databricksで構築するログ検索基盤とアーキテクチャ設計
cscengineer
0
190
ぼくがかんがえたさいきょうのあうとぷっと
yama3133
0
100
みんなで作るAWS Tips 100連発 (FinOps編)
schwrzktz
1
190
Featured
See All Featured
Mind Mapping
helmedeiros
PRO
1
150
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
250
The Cult of Friendly URLs
andyhume
79
6.8k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.7k
Building an army of robots
kneath
306
46k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
97
The Spectacular Lies of Maps
axbom
PRO
1
690
Amusing Abliteration
ianozsvald
1
150
How GitHub (no longer) Works
holman
316
150k
Automating Front-end Workflow
addyosmani
1370
200k
Transcript
3VCZߨٛ ୈճ3VCZೖ ,VOJBLJ*("3"4)* BUҰڮେֶ ࣾձՊֶʹ͓͚Δใٕज़ͱίϯςϯπ࡞ᶙ χϑςΟגࣜձࣾدෟߨٛ
χϑςΟגࣜձࣾ ఏڙ
ߨࢣ ޒेཛྷ໌ גࣜձࣾສ༿ɹΤϯδχΞ
5FBDIJOH"TTJTUBOU ᖛ࡚݈ޗ ΫοΫύουגࣜձࣾɹΤϯδχΞ
ߨٛࢿྉஔ͖ ߨٛࢿྉஔ͖Λͭ͘Γ·ͨ͠ɻ աڈͷࢿྉ͕%-Ͱ͖·͢ɻ IUUQTHJUIVCDPNIJUPUTVCBTIJSVCZMFDUVSF PS IUUQCJUMZSVCZMFDUVSF
ࡶஊɾ࣭༻GBDFCPPLάϧʔϓ GBDFCPPLάϧʔϓΛ࡞Γ·ͨ͠ IUUQTXXXGBDFCPPLDPNHSPVQTIJUPUTVCBTIJSC ɾՃೖඇՃೖࣗ༝Ͱ͢ ɾՃೖඇՃೖʹؔ͠·ͤΜ ɾࢀՃऀҰཡެ։͞Ε·͢ ɾॻ͖ࠐΈࢀՃऀͷΈݟ͑·͢ ɾرऀΞΫηεͯ͠ࢀՃਃ͍ͯͩ͘͠͞ ɾࡶஊɺ࣭ɺٞͳͲԿͰؾʹͤͣͲ͏ͧʙ ɾ࣭ʹ͑ΒΕΔਓ͍͑ͯ͋͛ͯͩ͘͞
ɾߨࢣਞ͓͑͠·͢ ɾೖͬͨΒܰࣗ͘ݾհ͓Ͷ͕͍͠·͢
Δ͜ͱ લճͷ͓͞Β͍ TIFMMͷ ม ݅அɺ܁Γฦ͠ ϝιουͷ࡞ ผͷϑΝΠϧΛಡΈࠐΉ SFRVJSFจ ڭՊॻQʙQ
QSJOU z)FMMP 3VCZaOz ΦϒδΣΫτ 4USJOHΦϒδΣΫτ ڭՊॻQ QSJOU z)FMMP 3VCZaOz
ɹϝιουɹɹɹҾ ϝιουɿखଓ͖ɺ໋ྩ Ҿɿϝιουʹ͢σʔλ ͜͜Ͱ)FMMP 3VCZaOΦϒδΣΫτ͕Ҿ
QVUT QVUT QVUT QVUT QVUT QVUT QVUT
ܭࢉ º × ྦྷ ϝιουQVUT ԋࢉࢠ ͱ͔ ΦϒδΣΫτ ͱ͔ 'JYOVNΦϒδΣΫτ
ΦϒδΣΫτಉ࢜ͷܭࢉΦϒδΣΫτʹͳΔ QVUT ˡͰͳ͍ খͰٻΊ͍ͨ߹྆ํ͘͠ยํΛ খ 'MPBU ΦϒδΣΫτ ྫɿ ʹ͢Δ QVUT
খ 'MPBU ΦϒδΣΫτͷܭࢉෆਖ਼֬ͳ߹͕͋Δ ܭࢉ͢Δͱ͖ͷҙ
3VCZ͕ڭ͑ͯ͘ΕͨΤϥʔϝοηʔδ IFMMPSVCZSCJOANBJOVOEFpOFE NFUIPEAQSJOGPSNBJO0CKFDU /P.FUIPE&SSPS ຊޠ༁ IFMMPSVCZSCͱ͍͏ϑΝΠϧͷߦͰ QSJOͳΜͯϝιουͳ͍ͷͰ ͦΜͳϝιουͳ͔ͱΑΤϥʔ͕ى͖ͨΑ Τϥʔϝοηʔδ ͓ಘͳใΛڭ͑ͯ͘ΕΔ
ຊޠΛؚΉίʔυΛॻ͘ͱ͖ ɾϑΝΠϧΛ65'Ͱอଘ͢Δɻ ɾߦʹϚδοΫίϝϯτΛॻ͘ ɹ ͦͷϑΝΠϧͷจࣈίʔυΛ3VCZڭ͑ΔͨΊ ɹྫʣFODPEJOHVUG FODPEJOHVUGˡϚδοΫίϝϯτ QSJOU zͪ;Δ͔ΈΑ͖͔͕ͣͨͭͨΘaOz QSJOU
z͔Β͘Εͳ͍ʹΈͣ͘͘ΔͱaOz ڭՊॻQ จࣈίʔυͱ ϚδοΫίϝϯτ
6CVOUV ɾTIFMM UFSNJOBM ɾFEJUPSςΩετΤσΟλʔ HFEJU 8JOEPXT ɾTIFMM$PNNBOE1SPNQUXJUI3VCZBOE3BJMT ɾFEJUPSJOUZQF 3VCZ࣮ߦڥ TIFMMͱFEJUPSΛ͏
3VCZίʔυΛ࣮ߦ͢Δํ๏ ɾJSC͔Βߦ࣮ͣͭߦ ɾϑΝΠϧ SC ʹίʔυΛॻ͍࣮ͯߦ
JSC͔Βߦ࣮ͣͭߦ JSC QQVUT OJM QFYJU QXE 6TFSTJHBSBTIJ
TIFMM TIFMM JSC JSC FYJU
ΤσΟλͰIFMMPSVCZSCΛ࡞ͬͯอଘ QSJOU z)FMMP 3VCZaOz TIFMMͰIFMMPSVCZSCΛ࣮ߦ SVCZIFMMPSVCZSC )FMMP 3VCZ TIFMMͰ3VCZίʔυ͕ॻ͔ΕͨϑΝΠϧΛ࣮ߦ͢Δʹ SVCZϑΝΠϧ໊
ϑΝΠϧʹίʔυΛॻ͍࣮ͯߦ
͔͜͜Β ࠓिͷ༰ TIFMMͷΛ ͏গ͠ղઆ͠·͢
TIFMM04ͱΛ͢ΔͨΊͷੈքͰ͢ɻ ྑ͘͏ίϚϯυΛ؆୯ʹઆ໌͠·͢ɻ MTϑΝΠϧҰཡΛݟΔ DEϑΥϧμʔҠಈ NLEJSϑΥϧμʔ࡞ QXEࠓ͍ΔϑΥϧμ໊Λදࣔ DBUϑΝΠϧͷதΛදࣔ
MTϑΝΠϧҰཡΛݟΔ ϑΝΠϧҰཡΛදࣔ͠·͢ɻϑΥϧμʔݟΕ·͢ɻ ˞ίϚϯυ࢝·ΓͰॻ͘͜ͱ͕ଟ͍Ͱ͢ɻ͜ͷ࢝ ·Γͷҹʢϓϩϯϓτͱݴ͍·͢ʣͳͷͰଧͨͳͯ͘େৎ Ͱ͢ɻMTͱ͚ͩଧͪ·͢ɻ Φϓγϣϯ εϖʔεʹଓ͚ͯBMΛࢦఆՄೳ $ ls -a
ϑΝΠϧ໊͕Ͱ࢝·ΔӅ͠ϑΝΠϧදࣔ $ ls -l ϑΝΠϧ࡞ͳͲৄࡉใΛදࣔ $ ls
DEϑΥϧμʔҠಈ ϑΥϧμʔΛҠಈ͢ΔίϚϯυͰ͢ɻ ϑΥϧμҠಈ͢Δ߹Λ͍·͢ɻ $ cd .. Ͱ۠ͬͯଙϑΥϧμҰؾʹҠಈͰ͖·͢ɻ $ cd src/Ruby1
TSDϑΥϧμͷதʹ͋Δ3VCZϑΥϧμҠಈ $ cd ϑΥϧμ໊
NLEJSϑΥϧμʔ࡞ ϑΥϧμʔΛ࡞ΔίϚϯυͰ͢ɻ ͪͳΈʹফ͢ͷSNEJSίϚϯυͰ͢ɻ ϑΥϧμͷத͕ۭͰͳ͍ͱSNEJSͰআͰ͖·ͤΜɻ ϑΥϧμͷதʹϑΝΠϧͳͲ͕͋Δͷʹফ͍ͨ͠߹SN SGίϚϯυͰআͰ͖·͢ɻ˞আͨ͠ϑΝΠϧ෮ݩͰ ͖ͳ͍ͷͰҙ͍ͯͬͯͩ͘͠͞ʂʂ ˒ةݥ˒ $ mkdir
ϑΥϧμ໊ $ rmdir ϑΥϧμ໊ $ rm -rf ϑΥϧμ໊
QXE ࠓ͍ΔϑΥϧμ໊Λදࣔ ࠓ͍ΔϑΥϧμΛදࣔ͠·͢ɻ ϑΥϧμ͕֊ߏʹͳ͍ͬͯΔͱ͖Ͱ۠ΒΕ·͢ɻ $ pwd /home/dev/
3VCZͷίʔυ͕ ͔͔ΕͨϑΝΠϧΛ ࣮ߦ͢ΔͨΊʹ
3VCZίʔυΛ࣮ߦ͢Δํ๏ 999SC͕͋ΔϑΥϧμҠಈ͢Δ ɹDEίϚϯυΛ͍·͢ɻ SVCZ999SCͰ࣮ߦ͠·͢ɻ ͠ҎԼͷΤϥʔ͕ग़ͨΒMTίϚϯυͰϑΝΠϧ༗ ແΛ֬ೝ͠·͢ɻ SVCZ/PTVDIpMFPSEJSFDUPSZ999SC -PBE&SSPS ྫ) $
cd src/0501 ྫ) $ ruby XXX.rb
TIFMMΛىಈͨ࣌͠ͷ࢝ϑΥϧμ 6CVOUVIPNFϢʔβʔ໊ 8JOEPXT$4JUFT $ˇ4JUFT ྫ্͑هͷԼʹTSDΈ͍ͨͳϑΥϧμΛ࡞ͬͯSCϑΝΠϧ Λཧ͢Δͷ͕ΦεεϝͰ͢ɻ 7.6CVOUVͰ࡞ࡁΈ $ mkdir src
$ cd src $ mkdir 0501 $ cd 0501 $ ruby XXX.rb
ͰɺҾ͖ଓ͖ 3VCZͷ͓Ͱ͢
ΦϒδΣΫτɹͷϥϕϧɾՙࡳ มΦϒδΣΫτ มʹΦϒδΣΫτΛೖ͢Δ ʢมOBNFʹJHBSBTIJΦϒδΣΫτΛೖʣ ม ڭՊॻQ name = "igarashi" puts
name => "igarashi"
ม ڭՊॻQ
Ͱɺ͜ͷ߹ Ͳ͏Ͱ͠ΐ͏͔ʁ
BBCD CB BVQDBTF QVUTB QVUTC αϯϓϧίʔυ ˞VQDBTF 4USJOHΦϒδΣΫτΛ େจࣈʹ͢Δϝιου B"#$ʹͳΓ·͕͢ɺ
CͲ͏ͳΔͰ͠ΐ͏ʁ
BCD B BCD B C ม ΦϒδΣΫτ "#$ B C
BΦϒδΣΫ τzBCDzΛࣔ ͢ม CBͱಉ͡ zBCDzΛࣔ͢ ม Bͷࢦ͢Φϒ δΣΫτΛେ จࣈʹ͢Δ Bz"#$z Cz"#$z BBCD CB BVQDBTF QVUTB QVUTC
͖ͬ͞ͱࣅͯΔ͚Ͳͪΐͬͱҧ͏ίʔυ BBCD CBCD BVQDBTF QVUTB QVUTC BBCD CB BVQDBTF QVUTB
QVUTC ͖ͬ͞ ͜͏Ͱͨ͠
B BCD B C ม ΦϒδΣΫτ B C BΦϒδΣΫ τzBCDzΛࣔ
͢ม CผͷΦϒδΣ ΫτzBCDzΛࢦ ͢ Bͷࢦ͢Φϒ δΣΫτΛେ จࣈʹ͢Δ Bz"#$z CzBCDz BCD "#$ BCD BCD BBCD CBCD BVQDBTF QVUTB QVUTC
ม໊͔Γ໊͍͢લʹ͠Α͏ ໊͚ॏཁ ྑ͍ྫ ѱ͍ྫ XJEUI IFJHIU BSFB XJEUI IFJHIU B
B B B B
ίϝϯτจ ڭՊॻQ
݅அJGจ ڭՊॻQ
JG݅ ͕݅Γཱͬͨͱ͖ʹ࣮ߦ͍ͨ͠ॲཧ FOE ݅அJGจ ˞ڭՊॻʹUIFO͕ॻ͍ͯ͋Γ·͕͢ɺলུՄೳͰ͢ɻ ී௨লུ͠·͢ɻࢲॻ͍ͨ͜ͱͳ͍Ͱ͢ɻ ݅ʹ͕USVF ਅ ·ͨGBMTF ِ
ͱͳΔࣜΛॻ͘͜ͱ͕Ұൠత
Y JGY QVUTYJT FOE ݅அԋࢉࢠ ࠨล Y ͱӈล ͕ಉ͔͡Ͳ͏͔ௐͯɺ
ಉ͡ͳΒUSVFɺҟͳΕGBMTFʹͳΓ·͢ɻ ൺֱͰ͢ɻͩͱೖʹͳΓ·͢ɻ ͪͳΈʹɺҟͳΔ͔Λஅ͢Δ͋Γ·͢ɻ Y͕ͱಉ͔͡அ͠ Y͕ͷ࣌ʹ QVUT͕࣮ߦ͞Ε·͢ɻ
JG݅ ཱ͕݅ͨ࣌͠ʹ࣮ߦ͍ͨ͠ॲཧ FMTF ͕݅ෆཱͷ࣌ʹ࣮ߦ͍ͨ͠ॲཧ FOE ݅அJGFMTFFOE ͕݅GBMTFͷ࣌ʹ࣮ߦ͍ͨ͠ॲཧΛॻ͘ ͜ͱͰ͖·͢ɻ
ཱ݅࣌ʹ࣮ߦ͍ͨ͠ॲཧJG݅ JGจޙΖʹॻ͚Δ ߦͰॻ͚Δ݅ ɾ࣮ߦ͍ͨ͠ॲཧ͕ߦ͚ͩͷͱ͖ ɾFMTFઅΛॻ͔ͳ͍ͱ͖ QVUTYJTJGY JGY QVUTYJT FOE ࠨͷจҎԼͷΑ͏
ʹߦͰॻ͘͜ͱ Ͱ͖·͢ɻ
JGจͷԋश Y JG QVUTUSVF FOE ίʔυΛ࣮ߦͨ͠ࡍ ʹUSVF͕දࣔ͞ΕΔΑ ͏ʹۭཝΛຒΊͯίʔυ Λ࣮ͤͯ͞ߦͯ͘͠ ͍ͩ͞ɻ
Y͕(8ͱ͍͏จࣈྻͷͱ͖:FBIɺ ͦΕҎ֎ͷͱ͖TJHIͱදࣔͤ͞ΔίʔυΛ ॻ͍࣮ͯߦ͍ͤͯͩ͘͞͞ɻ
JGY QVUTYJT FOE Πϯσϯτ ࣈԼ͛ ྫ͑JGจதͳͲɺ͜͏͍͏෩ʹઌ಄ʹεϖʔεΛ ೖΕͯॻ͘͜ͱΛΠϯσϯτ͢Δͱ͍͍·͢ɻ ϓϩάϥϜͷ࣮ߦʹෆཁͳͷͰ͕͢ɺ ઈରʹೖΕ͍ͯͩ͘͞ʂ ແ͍ͱਓ͕ಡΊͳ͍ͷͰɾɾɾ
ͪͳΈʹεϖʔεͷݸʹྲྀ͕͋Γ·͕͢ɺݸ͕ओྲྀͷΑ͏Ͱ͢ɻ
܁Γฦ͠ XIJMFจ UJNFTϝιου ڭՊॻQ
ϝιουͷ࡞ ڭՊॻQ
EFGϝιου໊ ϝιουͰ࣮ߦ͍ͨ͠ॲཧ FOE ϝιουͷఆٛɺݺͼग़͠ ϝιουݺͼग़͠ϝιου໊ʹ Λ͚ͭ·͢ɻ ͦͯ͠ɺ͜ͷ লུՄೳͰ͢ɻ ᐆດʹͳΒͳ͍ݶΓ EFGIFMMP
QSJOU)FMMP 3VCZaO FOE IFMMP ఆٛ ݺͼग़͠ ϝιουఆٛ ʹEFGΛ ͏
ผͷϑΝΠϧΛ औΓࠐΉ ڭՊॻQ
SFRVJSFϝιουͷԋश EFGIFMMP QSJOU)FMMP 3VCZaO FOE Qͷ-JTU Λ࣮ߦ͍ͯͩ͘͠͞ɻ SFRVJSFIFMMP IFMMP $
ruby use_hello.rb -JTU IFMMPSC -JTU VTF@IFMMPSC ࣮ߦྫ ڭՊॻSFRVJSFIFMMPʹͳ͍ͬͯ·͕͢ɺ3VCZҎ ߱ͩͱΤϥʔʹͳΔͷͰIFMMPͱ͍ͯͩ͘͠͞ɻ TIFMMͰ ࠓ͍ΔϑΥϧμͷҙຯͰ͢ɻ
ࠓͷ ·ͱΊ
TIFMMͷίϚϯυ MTϑΝΠϧҰཡΛݟΔ DEϑΥϧμʔҠಈ NLEJSϑΥϧμʔ࡞ QXEࠓ͍ΔϑΥϧμ໊Λදࣔ DBUϑΝΠϧͷதΛදࣔ
ΦϒδΣΫτɹͷϥϕϧɾՙࡳ มΦϒδΣΫτ มʹΦϒδΣΫτΛೖ͢Δ ʢมOBNFʹJHBSBTIJΦϒδΣΫτΛೖʣ ม ڭՊॻQ name = "igarashi" puts
name => "igarashi"
JG݅ ཱ͕݅ͨ࣌͠ʹ࣮ߦ͍ͨ͠ॲཧ FMTF ͕݅ෆཱͷ࣌ʹ࣮ߦ͍ͨ͠ॲཧ FOE ݅அ JGFMTFFOE JGFOE JG݅ ཱ͕݅ͨ࣌͠ʹ࣮ߦ͍ͨ͠ॲཧ
FOE ൺֱԋࢉࢠ
EFGϝιου໊ ϝιουͰ࣮ߦ͍ͨ͠ॲཧ FOE ϝιουͷఆٛɺݺͼग़͠ ϝιουݺͼग़͠ϝιου໊ʹ Λ͚ͭ·͢ɻ ͦͯ͠ɺ͜ͷ লུՄೳͰ͢ɻ ᐆດʹͳΒͳ͍ݶΓ EFGIFMMP
QSJOU)FMMP 3VCZaO FOE IFMMP ఆٛ ݺͼग़͠ ϝιουఆٛ ʹEFGΛ ͏
ผͷϑΝΠϧΛ औΓࠐΉ SFRVJSFIFMMP ࣮ߦϑΥϧμʹ͋ΔIFMMPSCΛऔΓࠐΉ
ରԠ͢ΔڭՊॻͷϖʔδ มɹQʙ ίϝϯτɹQʙ ݅அɾ܁Γฦ͠ɹQʙ ϝιουɹQ ผͷϑΝΠϧͷಡΈࠐΈ SFRVJSF ɹQʙ
JGจͷԋशɹղ Y JGY QVUTUSVF FOE Y͕(8ͱ͍͏จࣈྻͷͱ͖ :FBIɺͦΕҎ֎ͷͱ͖TJHIͱද ࣔͤ͞ΔίʔυΛॻ͍࣮ͯߦͤͯͩ͘͞ ͍͞ɻ
Y(8 JGY(8 QVUT:FBI FMTF QVUTTJHI FOE
ߨٛࢿྉஔ͖ ߨٛࢿྉஔ͖Λͭ͘Γ·ͨ͠ɻ աڈͷࢿྉ͕%-Ͱ͖·͢ɻ IUUQTHJUIVCDPNIJUPUTVCBTIJSVCZMFDUVSF PS IUUQCJUMZSVCZMFDUVSF
ࡶஊɾ࣭༻GBDFCPPLάϧʔϓ ᖛ࡚͞Μ࡞ͷGBDFCPPLάϧʔϓ͕Ͱ͖·ͨ͠ IUUQTXXXGBDFCPPLDPNHSPVQTIJUPUTVCBTIJSC ɾՃೖඇՃೖࣗ༝Ͱ͢ ɾՃೖඇՃೖʹؔ͠·ͤΜ ɾࢀՃऀҰཡެ։͞Ε·͢ ɾॻ͖ࠐΈࢀՃऀͷΈݟ͑·͢ ɾرऀΞΫηεͯ͠ࢀՃਃ͍ͯͩ͘͠͞ ɾࡶஊɺ࣭ɺٞͳͲԿͰؾʹͤͣͲ͏ͧʙ ɾ࣭ʹ͑ΒΕΔਓ͍͑ͯ͋͛ͯͩ͘͞
ɾߨࢣਞ͓͑͠·͢ ɾೖͬͨΒܰࣗ͘ݾհ͓Ͷ͕͍͠·͢