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
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby講義 第4回
Kuniaki IGARASHI
May 02, 2012
More Decks by Kuniaki IGARASHI
See All by Kuniaki IGARASHI
RailsTokyo 4 GarnetTech373
igaiga
0
120
ActiveJobUpdates
igaiga
1
680
roppongirb_20250911
igaiga
1
760
igaiga Ruby Association Activity Report 2025 LT
igaiga
1
160
KaigiOnRails2024
igaiga
16
25k
RuboSensei
igaiga
0
360
Shibuya.rb-2023-04-27-igaiga
igaiga
1
600
Ginza Rails27 igaiga
igaiga
9
14k
tork09igaiga
igaiga
2
430
Other Decks in Technology
See All in Technology
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
430
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
440
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
160
複数プロダクト組織のAIネイティブ化における戦略 / AICon2026_kude
rakus_dev
0
160
データエンジニアリングとドメイン駆動設計
masuda220
PRO
4
220
Playwright × AI Agent でE2Eテストはどう変わるか AI駆動テストの可能性と実用検証の結果
taiga7543
1
550
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
290
Type-safe IaC for Dart
coborinai
0
160
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
490
Data + AI Summit 2026 イベントレポート: 「AIがビジネスで意思決定するデータ基盤」へ
nek0128
0
290
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
430
穢れた技術選定について
watany
18
5.7k
Featured
See All Featured
Everyday Curiosity
cassininazir
0
260
Ruling the World: When Life Gets Gamed
codingconduct
0
280
The browser strikes back
jonoalderson
0
1.4k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
Building Applications with DynamoDB
mza
96
7.1k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
660
A Tale of Four Properties
chriscoyier
163
24k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
880
The Cost Of JavaScript in 2023
addyosmani
55
10k
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 ɾՃೖඇՃೖࣗ༝Ͱ͢ ɾՃೖඇՃೖʹؔ͠·ͤΜ ɾࢀՃऀҰཡެ։͞Ε·͢ ɾॻ͖ࠐΈࢀՃऀͷΈݟ͑·͢ ɾرऀΞΫηεͯ͠ࢀՃਃ͍ͯͩ͘͠͞ ɾࡶஊɺ࣭ɺٞͳͲԿͰؾʹͤͣͲ͏ͧʙ ɾ࣭ʹ͑ΒΕΔਓ͍͑ͯ͋͛ͯͩ͘͞
ɾߨࢣਞ͓͑͠·͢ ɾೖͬͨΒܰࣗ͘ݾհ͓Ͷ͕͍͠·͢