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 のことを深く理解できる本「Ruby Under a Microscope」のご紹介
Search
Nao Minami
March 23, 2017
Programming
1
440
Ruby のことを深く理解できる本「Ruby Under a Microscope」のご紹介
第一回Megro.rb で、Ruby のことを深く理解できる本「Ruby Under a Microscope」のご紹介というタイトルで発表しました。
Nao Minami
March 23, 2017
Tweet
Share
More Decks by Nao Minami
See All by Nao Minami
Real World Migration from HTTP to gRPC #CNDT2020
south37
3
6k
Real World Migration from HTTP to gRPC in Ruby #grpcconf
south37
2
4.6k
Getting Things Done をベースにした仕事の進め方 / How to Work with Getting Things Done
south37
8
8.2k
Web API に秩序を与える Protocol Buffers / Protocol Buffers for Web API #builderscon
south37
18
16k
puma v4 では SIGTERM での worker process ゾンビ化に気をつけよう / Be aware of zombie processes in puma v4
south37
1
4k
理想的なマイクロサービスアーキテクチャを目指す継続的改善 / Re-architecturing of Microservices #CNDT2019
south37
10
15k
gcpc: Google Cloud Pub/Sub Client for Ruby #tqrk13
south37
1
840
実行計画から学ぶ PostgreSQL の内部動作とクエリ最適化 / Learn PostgreSQL from Explain
south37
8
41k
学びを得るための新卒 ISUCON / New Grad ISUCON for Learning
south37
4
44k
Other Decks in Programming
See All in Programming
猫と暮らすネットワークカメラ生活🐈 ~Vision frameworkでペットを愛でよう~ / iOSDC Japan 2025
yutailang0119
0
220
フロントエンド開発に役立つクライアントプログラム共通のノウハウ / Universal client-side programming best practices for frontend development
nrslib
7
3.9k
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
4
660
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
230
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
360
CSC509 Lecture 02
javiergs
PRO
0
400
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
890
iOSDC.pdf
chronos2500
2
650
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
490
Serena MCPのすすめ
wadakatu
4
880
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
1.5k
明日から始めるリファクタリング
ryounasso
0
110
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Fireside Chat
paigeccino
40
3.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Building an army of robots
kneath
306
46k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
20k
Into the Great Unknown - MozCon
thekraken
40
2.1k
A better future with KSS
kneath
239
17k
For a Future-Friendly Web
brad_frost
180
9.9k
Faster Mobile Websites
deanohume
310
31k
It's Worth the Effort
3n
187
28k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
Transcript
3VCZͷ͜ͱΛਂ͘ཧղͰ͖Δຊ 3VCZ6OEFSB.JDSPTDPQF ͷ͝հ /BP.JOBNJ !TPVUI
ࣗݾհ
/BP.JOBNJ!TPVUI !NJOBNJP 4PGUXBSFFOHJOFFS !8BOUFEMZ *OD
w 3VCZ6OEFSB.JDSPTDPQFͱʁ w Կ͕ັྗʁ w Կֶ͕Δͷʁ w ·ͱΊ ࠓ͢༰
w 3VCZ6OEFSB.JDSPTDPQFͱʁ w Կ͕ັྗʁ w Կֶ͕Δͷʁ w ·ͱΊ ࠓ͢༰
3VCZ6OEFSB.JDSPTDPQFͱʁ w :"37 $3VCZͷԾϚγϯ w ΦϒδΣΫτɺΫϥεͷ෦දݱ w ϒϩοΫͷ࣮ w
FUD 3VCZͷ෦ಈ࡞Λઆ໌ͨ͠ຊ
3VCZ6OEFSB.JDSPTDPQFͱʁ ʮ3VCZͬͯԿΛͯ͠ΔΜͩΖ͏ʁʯ ͕͔ΔΑ͏ʹͳΔʂ
w 3VCZ6OEFSB.JDSPTDPQFͱʁ w Կ͕ັྗʁ w Կֶ͕Δͷʁ w ·ͱΊ ࠓ͢༰
3VCZ6OEFSB.JDSPTDPQFԿ͕ັྗʁ w 3VCZͷ෦Λ͍ͬͯΔͱɺʮԿނ͜ͷಈ࡞ʁʯ ʹ͑ΒΕΔʂ w 3VCZΛ௨ͯ͠ɺݴޠॲཧܥͷ࡞Γํ͕͔Δʂ
3VCZ6OEFSB.JDSPTDPQFԿ͕ັྗʁ 3VCZίϛολʔ͔Βධʂ
w 3VCZ6OEFSB.JDSPTDPQFͱʁ w Կ͕ັྗʁ w Կֶ͕Δͷʁ w ·ͱΊ ࠓ͢༰
3VCZ6OEFSB.JDSPTDPQFԿֶ͕Δʁ w 3VCZίʔυ࣮ߦ·ͰͷྲྀΕ w $3VCZͷԾϚγϯʮ:"37ʯ w +3VCZ 3VCJOJVTͱͷൺֱ 3VCZʹؔ͢ΔͭͷτϐοΫ
3VCZ6OEFSB.JDSPTDPQFԿֶ͕Δʁ w 3VCZίʔυ࣮ߦ·ͰͷྲྀΕ w $3VCZͷԾϚγϯʮ:"37ʯ w +3VCZ 3VCJOJVTͱͷൺֱ 3VCZʹؔ͢ΔͭͷτϐοΫ
3VCZίʔυ࣮ߦ·ͰͷྲྀΕ w 3VCZίʔυ͔Β:"37໋ྩྻͷม w :"37͕:"37໋ྩྻΛ࣮ߦ
3VCZίʔυ࣮ߦ·ͰͷྲྀΕ w 3VCZίʔυ͔Β:"37໋ྩྻͷม w :"37͕:"37໋ྩྻΛ࣮ߦ
3VCZίʔυ࣮ߦ·ͰͷྲྀΕ 3VCZίʔυ͔Β:"37໋ྩྻͷม puts 2 + 2 3VCZίʔυ :"37ίʔυ putself putobject
2 putobject 2 opt_plus opt_send_simple <callinfo!mid:puts, argc:2…>
3VCZίʔυ࣮ߦ·ͰͷྲྀΕ 3VCZίʔυ͔Β:"37໋ྩྻͷม puts 2 + 2 3VCZίʔυ :"37ίʔυ ͜͜ͰԿ͕ى͖Δͷ͔ʁ putself
putobject 2 putobject 2 opt_plus opt_send_simple <callinfo!mid:puts, argc:2…>
3VCZίʔυ࣮ߦ·ͰͷྲྀΕ w UPLFOJ[Fͯ͠UPLFOྻม w QBSTFͯ͠"45࡞ w "45͔ΒDPNQJMFͯ͠:"37໋ྩੜ
3VCZίʔυ࣮ߦ·ͰͷྲྀΕ UPLFOJ[Fͯ͠UPLFOม puts 2 + 2 identifier puts integer 2
integer 2 3VCZίʔυ UPLFOྻ operator +
3VCZίʔυ࣮ߦ·ͰͷྲྀΕ QBSTFͯ͠"45 நߏจ ࡞ UPLFOྻ NODE_CALL + NODE_LIT 2 identifier
puts integer 2 integer 2 op + NODE_LIT 2 NODE_FCALL puts "45
3VCZίʔυ࣮ߦ·ͰͷྲྀΕ "45͔ΒDPNQJMFͯ͠:"37໋ྩྻੜ NODE_CALL + NODE_LIT 2 NODE_LIT 2 NODE_FCALL puts
"45 putself putobject 2 putobject 2 opt_plus opt_send_simple <callinfo!mid:puts, argc:2…> :"37໋ྩྻ
3VCZͷUPLFOJ[F QBSTF DPNQJMFʹڵຯ͕ग़ͨΒ ଓ͖ʮ3VCZ6OEFSB.JDSPTDPQFʯͰʂ
3VCZίʔυ࣮ߦ·ͰͷྲྀΕ :"37໋ྩྻ ͦΕͧΕͷ໋ྩͰԿ͕ߦΘΕΔͷ͔ʁ putself putobject 2 putobject 2 opt_plus opt_send_simple
<callinfo!mid:puts, argc:2…>
3VCZ6OEFSB.JDSPTDPQFԿֶ͕Δʁ w 3VCZίʔυ࣮ߦ·ͰͷྲྀΕ w $3VCZͷԾϚγϯʮ:"37ʯ w +3VCZ 3VCJOJVTͱͷൺֱ 3VCZʹؔ͢ΔͭͷτϐοΫ
w ελοΫϚγϯͱͯ͠ಈ࡞͢ΔԾϚγϯ w +BWBʹ͓͚Δ+7.Έ͍ͨͳϠπ w :"37໋ྩྻʢ3VCZͷதؒදݱʣΛղऍͯ͠ಈ࡞ $3VCZͷԾϚγϯʮ:"37ʯ
$3VCZͷԾϚγϯʮ:"37ʯ ελοΫϚγϯ w ελοΫʹҾΛ1VTIͯؔ͠ݺͼग़͠ putobject 2 putobject 2 opt_plus :"37໋ྩྻ
ελοΫͷ1VTI ؔݺͼग़͠ 4UBDL1PJOUFS 41 :"37ͷ෦ελοΫ
$3VCZͷԾϚγϯʮ:"37ʯ putobject 2 putobject 2 opt_plus :"37໋ྩྻ ελοΫͷ1VTI ؔݺͼग़͠ ࠷ॳۭ
AQVUPCKFDUAΛ࣮ߦ 41 AQVUPCKFDUAΛ࣮ߦ APQU@QMVTAΛ࣮ߦ 41 41 41
$3VCZͷԾϚγϯʮ:"37ʯ :"37ͷಈ࡞ͱͯ͠৭ʑͳڍಈΛ࣮ݱ w #MPDLɺ1SPDΦϒδΣΫτ w SBJTFɺCSFBLʹΑΔେҬδϟϯϓ w ϨΩγΧϧείʔϓͱఆ୳ࡧɺϝιου୳ࡧ :"37͕ར༻͢Δ༷ʑͳσʔλߏ w
ΦϒδΣΫτɺΫϥεͷ෦දݱ w 3VCZͷίʔϧελοΫͷ࣮
:"37ʹڵຯ͕ग़ͨΒɺ ଓ͖ʮ3VCZ6OEFSB.JDSPTDPQFʯͰʂ
3VCZ6OEFSB.JDSPTDPQFԿֶ͕Δʁ w 3VCZίʔυ࣮ߦ·ͰͷྲྀΕ w $3VCZͷԾϚγϯʮ:"37ʯ w +3VCZ 3VCJOJVTͱͷൺֱ 3VCZʹؔ͢ΔͭͷτϐοΫ
+3VCZ 3VCJOJVTͱͷൺֱ +3VCZ 3VCJOJVT$3VCZͱ࣮ߦ࣌ͷڍಈ͕ҧ͏ʂ w +3VCZʜ+7.্Ͱ3VCZΛ࣮ߦ w .VMUJDPSFͷ4VQQPSU ڧྗͳ($ w
3VCJOJVTʜ$ Ͱॻ͔Εͨ7.ɺ3VCZͰதؒίʔυੜ w --7.Ͱ+*5ίϯύΠϧ
+3VCZ 3VOJOJVTʹڵຯ͕ग़ͨΒɺ ଓ͖ʮ3VCZ6OEFSB.JDSPTDPQFʯͰʂ
w 3VCZ6OEFSB.JDSPTDPQFͱʁ w Կ͕ັྗʁ w Կֶ͕Δͷʁ w ·ͱΊ ࠓ͢༰
·ͱΊ 3VCZ6OEFB.JDSPTDPQFɺ ʮ3VCZͬͯԿΛͯ͠ΔΜͩΖ͏ʁʯ ͕͔ΔΑ͏ʹͳΔͷͰΦεεϝʂ