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
AkarengaLT vol.37
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
hashimoto-kei
October 01, 2025
Programming
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AkarengaLT vol.37
AkarengaLT vol.37 に登壇した際の資料です。
https://engineercafe.connpass.com/event/366237/
hashimoto-kei
October 01, 2025
More Decks by hashimoto-kei
See All by hashimoto-kei
AkarengaLT vol.43
hashimoto_kei
0
130
Offline Meetup | Fukuoka Rubyist Kaigi 05 Day0
hashimoto_kei
0
120
AkarengaLT vol.41
hashimoto_kei
1
170
AkarengaLT vol.40
hashimoto_kei
0
120
HajimetenoLT vol.17
hashimoto_kei
1
260
AkarengaLT vol.38
hashimoto_kei
1
310
AkarengaLT vol.36
hashimoto_kei
0
140
AkarengaLT vol.35
hashimoto_kei
0
230
Boast Code Party | RubyKaigi 2025 After Event
hashimoto_kei
2
410
Other Decks in Programming
See All in Programming
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
410
Loosening the Reins: Go Generics Get More Flexible
kuro_kurorrr
0
350
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
130
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
370
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
120
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
560
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
140
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
130
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
620
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
130
MySQLとPostgreSQLって何が違うの?
akagami
0
150
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
290
Ethics towards AI in product and experience design
skipperchong
2
360
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
680
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
440
Navigating Team Friction
lara
192
16k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
830
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
220
Music & Morning Musume
bryan
47
7.3k
Exploring anti-patterns in Rails
aemeredith
3
480
Transcript
2025/09/28 hashimoto-kei AkarengaLT Vol. 37
ࣗݾհ Let me introduce myself.
໊લɿhashimoto-kei name: hashimoto-kei
ग़ɿԬ birthplace: Fukuoka City
ॴଐɿελʔτΞοϓ@Ԭ belong_to: startup at Fukuoka
ݞॻɿݚڀһ position: researcher
ࣄɿΤϯδχΞ work: engineer
ٕज़ελοΫɿPython, AWS technology stack: Python, AWS
͖ͳຊɿNand2Tetris favorite book: Nand2Tetris
None
ࠓͷςʔϚ Today’s theme
None
Nand2Tetris
·ͨʁ Again ?
લճͷ࣭ฦ͠ Follow up !
લఏࣝ Background
Compiler v.s. Interpreter
AOT v.s. JIT
Compiler
͋ΔݴޠΛ ผͷݴޠʹม Convert source code into target code
Interpreter
ݴޠΛղऍ࣮ͯ͠ߦ Execute source code
Example
GCC
$ gcc -o hello hello.c $ ./hello
C ݴޠͷίʔυΛ ػցޠʹม Convert C source code into machine code
Ruby
$ ruby hello.rb hello!
Ruby ͷίʔυΛ ղऍ࣮ͯ͠ߦ Execute Ruby source code
ࠞ߹ܕ Hybrid
Java
$ javac Hello.java $ java Hello
$ javac Hello.java $ java Hello
Java ͷίʔυ Λ ΫϥεϑΝΠϧʹม Convert Java source code into Java
class file
$ javac Hello.java $ java Hello
ΫϥεϑΝΠϧΛ ղऍ࣮ͯ͠ߦ Execute Java class file
JVM
2 ஈ֊ͷίϯύΠϧ Compile in 2 steps
Clang
$ gcc -o hello hello.c $ ./hello
None
https://interface.cqpub.co.jp/wp-content/uploads/interface/2015/03/if03_043.pdf
https://prev.rust-lang.org/ja-JP/faq.html
LLVM
https://ja.wikipedia.org/wiki/LLVM
VM
தؒදݱΛղऍ࣮ͯ͠ߦ Execute IR
Rubyͷதͷ༧උࣝ_RubyK a igiͷલʹΓୄʂ_ެ։༻ https://docs.google.com/present a tion/d/1oFvP4W3Ox8uiGXsW a 3ibyDg a 1cpLguVZhwCjpD46hFU/
mobilepresent?slide=id.g3389fccf211_0_100
AOT
࣮ߦલʹ ػցޠʹίϯύΠϧ Ahead-of-time compilation
$ gcc -o hello hello.c $ ./hello
JIT
࣮ߦ࣌ʹ ػցޠʹίϯύΠϧ Just-in-time compilation
Rubyͷதͷ༧උࣝ_RubyK a igiͷલʹΓୄʂ_ެ։༻ https://docs.google.com/present a tion/d/1oFvP4W3Ox8uiGXsW a 3ibyDg a 1cpLguVZhwCjpD46hFU/
mobilepresent?slide=id.g341c11ef11f_0_132
ม͕૿͑ΔͷͰ ͘ͳΔͷͰ…ʁ It seems to get slower because of more
conversions ...?
ಉҰͷॲཧΛ for จͰ Կ࣮ߦ͢Δ߹ͳͲͰ༗ޮ JIT costs some, but it pays
if same IR is executed many times
1.
JVM, LLVM Ҏ֎ͷ VM Λڭ͑ͯʂ Tell me VM other than
JVM, LLVM ?
LLVM ͷ VM Virtual Machine ͷུͰͳ͍ LLVM does not
mean Low Level Virtual Machine
Ruby … YARV / RubyVM Python … PVM PHP …
Zend VM Wasm … wasmtime
2.
Python ʹ JIT ίϯύΠϧ͕ͳ͍ ? Python has NO JIT Compiler
?
https://github.com/python/cpython/blob/m a in/Tools/jit/README.md#user-content-fn- pep-744-23c711528de a 85ce780721e60e9c01b5
CPython 3.13 ͔Β ࣮ݧతʹಋೖ CPython has experimental JIT compiler
since 3.13
3.
JIT ͰͳΜͰ͘ͳΔͷ ? Why does JIT make it faster ?
ࡁ Skip
4.
Nand2Tetris Ͱ࡞Δͷ ίϯύΠϥ/ΠϯλϓϦλʁ Compiler or Interpreter implemented in Nand2Tetris ?
ίϯύΠϥʢAOT/2 ஈ֊ʣ Compiler ( AOT / 2 steps )
https://interface.cqpub.co.jp/wp-content/uploads/interface/2015/03/if03_043.pdf
5.
Java ͕ਤʹग़ͯ͜ͳ͍ ͷͳͥʁ Why isn't Java in the diagram ?
None
͜ͷਤ LLVM ͷΑ͏ͳ ͷΛఆͯ͠ඳ͍͔ͨΒ This diagram is for AOT compiler
6.
C/C++ ίϯύΠϥͷ ϑϩϯτΤϯυͬͯʁ What does mean Frontend for C/C++ Compiler?
https://interface.cqpub.co.jp/wp-content/uploads/interface/2015/03/if03_043.pdf
7.
C/C++ ίϯύΠϥͷ όοΫΤϯυͬͯʁ What does mean Backend for C/C++ Compiler?
https://interface.cqpub.co.jp/wp-content/uploads/interface/2015/03/if03_043.pdf
End ...?
None
Thank you for listening!