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
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
580
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
370
Road to white mages
igaiga
1
750
Other Decks in Technology
See All in Technology
GitLab Duo Agent Platform × AGENTS.md で実現するSpec-Driven Development / GitLab Duo Agent Platform × AGENTS.md
n11sh1
0
120
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.6k
(金融庁共催)第4回金融データ活用チャレンジ勉強会資料
takumimukaiyama
0
120
2人で作ったAIダッシュボードが、開発組織の次の一手を照らした話― Cursor × SpecKit × 可視化の実践 ― Qiita AI Summit
noalisaai
1
370
データの整合性を保ちたいだけなんだ
shoheimitani
8
2.9k
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
870
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
170
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
67k
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
340
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
4.8k
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
4
1.7k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
590
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
110
Building Flexible Design Systems
yeseniaperezcruz
330
40k
For a Future-Friendly Web
brad_frost
182
10k
A Tale of Four Properties
chriscoyier
162
24k
エンジニアに許された特別な時間の終わり
watany
106
230k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Music & Morning Musume
bryan
47
7.1k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
100
The SEO Collaboration Effect
kristinabergwall1
0
350
How to Think Like a Performance Engineer
csswizardry
28
2.4k
The untapped power of vector embeddings
frankvandijk
1
1.6k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3k
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 ɾՃೖඇՃೖࣗ༝Ͱ͢ ɾՃೖඇՃೖʹؔ͠·ͤΜ ɾࢀՃऀҰཡެ։͞Ε·͢ ɾॻ͖ࠐΈࢀՃऀͷΈݟ͑·͢ ɾرऀΞΫηεͯ͠ࢀՃਃ͍ͯͩ͘͠͞ ɾࡶஊɺ࣭ɺٞͳͲԿͰؾʹͤͣͲ͏ͧʙ ɾ࣭ʹ͑ΒΕΔਓ͍͑ͯ͋͛ͯͩ͘͞
ɾߨࢣਞ͓͑͠·͢ ɾೖͬͨΒܰࣗ͘ݾհ͓Ͷ͕͍͠·͢