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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kuniaki IGARASHI
May 02, 2012
Technology
2
11k
Ruby講義 第4回
Kuniaki IGARASHI
May 02, 2012
Tweet
Share
More Decks by Kuniaki IGARASHI
See All by Kuniaki IGARASHI
ActiveJobUpdates
igaiga
1
420
roppongirb_20250911
igaiga
1
590
igaiga Ruby Association Activity Report 2025 LT
igaiga
1
120
KaigiOnRails2024
igaiga
16
22k
RuboSensei
igaiga
0
320
Shibuya.rb-2023-04-27-igaiga
igaiga
1
560
Ginza Rails27 igaiga
igaiga
9
14k
tork09igaiga
igaiga
2
380
Road to white mages
igaiga
1
750
Other Decks in Technology
See All in Technology
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
680
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
460
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
980
Webhook best practices for rock solid and resilient deployments
glaforge
2
300
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
2
2.9k
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
160
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
100
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
2
230
配列に見る bash と zsh の違い
kazzpapa3
3
160
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
Cosmos World Foundation Model Platform for Physical AI
takmin
0
950
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
68k
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
290
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Claude Code のすすめ
schroneko
67
210k
Optimizing for Happiness
mojombo
379
71k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Context Engineering - Making Every Token Count
addyosmani
9
660
Crafting Experiences
bethany
1
49
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
260
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 ɾՃೖඇՃೖࣗ༝Ͱ͢ ɾՃೖඇՃೖʹؔ͠·ͤΜ ɾࢀՃऀҰཡެ։͞Ε·͢ ɾॻ͖ࠐΈࢀՃऀͷΈݟ͑·͢ ɾرऀΞΫηεͯ͠ࢀՃਃ͍ͯͩ͘͠͞ ɾࡶஊɺ࣭ɺٞͳͲԿͰؾʹͤͣͲ͏ͧʙ ɾ࣭ʹ͑ΒΕΔਓ͍͑ͯ͋͛ͯͩ͘͞
ɾߨࢣਞ͓͑͠·͢ ɾೖͬͨΒܰࣗ͘ݾհ͓Ͷ͕͍͠·͢