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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Nao Minami
March 23, 2017
Programming
460
1
Share
Ruby のことを深く理解できる本「Ruby Under a Microscope」のご紹介
第一回Megro.rb で、Ruby のことを深く理解できる本「Ruby Under a Microscope」のご紹介というタイトルで発表しました。
Nao Minami
March 23, 2017
More Decks by Nao Minami
See All by Nao Minami
Real World Migration from HTTP to gRPC #CNDT2020
south37
3
6.1k
Real World Migration from HTTP to gRPC in Ruby #grpcconf
south37
2
4.7k
Getting Things Done をベースにした仕事の進め方 / How to Work with Getting Things Done
south37
8
8.4k
Web API に秩序を与える Protocol Buffers / Protocol Buffers for Web API #builderscon
south37
18
17k
puma v4 では SIGTERM での worker process ゾンビ化に気をつけよう / Be aware of zombie processes in puma v4
south37
1
4.1k
理想的なマイクロサービスアーキテクチャを目指す継続的改善 / Re-architecturing of Microservices #CNDT2019
south37
10
15k
gcpc: Google Cloud Pub/Sub Client for Ruby #tqrk13
south37
1
880
実行計画から学ぶ PostgreSQL の内部動作とクエリ最適化 / Learn PostgreSQL from Explain
south37
8
42k
学びを得るための新卒 ISUCON / New Grad ISUCON for Learning
south37
4
44k
Other Decks in Programming
See All in Programming
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
130
「速くなった気がする」をデータで疑う
senleaf24
0
130
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
3
2.8k
Codex CLI でつくる、Issue から merge までの開発フロー
amata1219
0
290
Feature Toggle は捨てやすく使おう
gennei
0
400
Java 21/25 Virtual Threads 소개
debop
0
320
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.3k
Go_College_最終発表資料__外部公開用_.pdf
xe_pc23
0
110
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
180
事業会社でのセキュリティ長期インターンについて
masachikaura
0
210
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
120
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
2
140
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
The untapped power of vector embeddings
frankvandijk
2
1.7k
First, design no harm
axbom
PRO
2
1.2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
320
Paper Plane (Part 1)
katiecoart
PRO
0
6.3k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
640
Docker and Python
trallard
47
3.8k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
470
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
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ͬͯԿΛͯ͠ΔΜͩΖ͏ʁʯ ͕͔ΔΑ͏ʹͳΔͷͰΦεεϝʂ