Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
460
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.3k
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
860
実行計画から学ぶ 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
AIコーディングエージェント(Gemini)
kondai24
0
280
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
280
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
190
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
450
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.8k
Developing static sites with Ruby
okuramasafumi
0
330
JETLS.jl ─ A New Language Server for Julia
abap34
2
460
AIエージェントの設計で注意するべきポイント6選
har1101
5
2.4k
Implementation Patterns
denyspoltorak
0
120
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
420
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.2k
Patterns of Patterns
denyspoltorak
0
360
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Design in an AI World
tapps
0
100
Making Projects Easy
brettharned
120
6.5k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Building AI with AI
inesmontani
PRO
1
580
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
410
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
190
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
31
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ͬͯԿΛͯ͠ΔΜͩΖ͏ʁʯ ͕͔ΔΑ͏ʹͳΔͷͰΦεεϝʂ