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
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
RailsTokyo 4 GarnetTech373
igaiga
0
94
ActiveJobUpdates
igaiga
1
650
roppongirb_20250911
igaiga
1
700
igaiga Ruby Association Activity Report 2025 LT
igaiga
1
150
KaigiOnRails2024
igaiga
16
24k
RuboSensei
igaiga
0
350
Shibuya.rb-2023-04-27-igaiga
igaiga
1
590
Ginza Rails27 igaiga
igaiga
9
14k
tork09igaiga
igaiga
2
410
Other Decks in Technology
See All in Technology
Amazon CloudFrontにおけるAIボットアクセス制御のポイント
kizawa2020
5
310
脅威をエンジニアリングの糧にして:恐怖を乗り越えた先にあったもの / Turn threats into fuel for engineering: what lay beyond overcoming fear
nrslib
1
350
Anthropic AIネイティブ・スタートアップ構築のプレイブック を理解する
nagatsu
0
220
Spring Boot における AOT Cache 活用テクニックと 起動時間改善事例
ntt_dsol_java
0
170
Cloud Run のアップデート 触ってみる&紹介
gre212
0
240
Kaggle未経験社員をメダリストに育てる「AIドラゴン桜」
lycorptech_jp
PRO
0
660
開発を止めない CI/CD ~CI Visibilityによる継続的最適化~
pensuke628
0
210
Claude code Orchestra
ozakiomumkj
2
670
Java正規表現エンジン(NFA)の仕組みと パフォーマンスを維持するための最適化手法
takeuchi_132917
0
150
AI時代から振り返るTerraform drift運用の歴史 / AI Age Reflections on the History of Terraform Drift Operations
aeonpeople
0
590
ビジュアルプログラミングIoTLT vol.23
1ftseabass
PRO
0
160
Platform engineering for developers, architects & the rest of us (AI agents)
danielbryantuk
0
150
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Site-Speed That Sticks
csswizardry
13
1.2k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
420
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
590
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
270
Documentation Writing (for coders)
carmenintech
77
5.4k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
180
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Paper Plane
katiecoart
PRO
1
50k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Evolving SEO for Evolving Search Engines
ryanjones
0
210
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 ɾՃೖඇՃೖࣗ༝Ͱ͢ ɾՃೖඇՃೖʹؔ͠·ͤΜ ɾࢀՃऀҰཡެ։͞Ε·͢ ɾॻ͖ࠐΈࢀՃऀͷΈݟ͑·͢ ɾرऀΞΫηεͯ͠ࢀՃਃ͍ͯͩ͘͠͞ ɾࡶஊɺ࣭ɺٞͳͲԿͰؾʹͤͣͲ͏ͧʙ ɾ࣭ʹ͑ΒΕΔਓ͍͑ͯ͋͛ͯͩ͘͞
ɾߨࢣਞ͓͑͠·͢ ɾೖͬͨΒܰࣗ͘ݾհ͓Ͷ͕͍͠·͢