Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
『インタプリタの作り方』の紹介 / Let's enjoy crafting interpre...
Search
Takuya Mukohira
June 01, 2024
Technology
1.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
『インタプリタの作り方』の紹介 / Let's enjoy crafting interpreters
Takuya Mukohira
June 01, 2024
More Decks by Takuya Mukohira
See All by Takuya Mukohira
RubyistがLaravelLiveJapan行ってきましたレポ / SmartHR-LT-17
mktakuya
0
110
最近読んで良かった本 / Yokohama North Meetup #10
mktakuya
0
1.8k
Podcasting Guide 2024
mktakuya
3
2.2k
マネジメントとコミュニケーションとプロトコルと / kichijojipm-34
mktakuya
1
1.1k
自分の道具を自作してつくる喜びを体感しよう、Railsで。 〜4年続いたPodcastを実例に〜 / Kaigi on Rails 2023
mktakuya
1
3.5k
Podcast配信システムを自作したら捗った話 / kichijojipm-28
mktakuya
0
3.1k
趣味と趣味の掛け算で技術を学んでいく話 / 2020-11-27
mktakuya
0
400
ゆるふわなPodcastのすすめ / kichijojipm-22
mktakuya
0
1.5k
コーチLT / Rails Girls Tokyo 12th
mktakuya
1
1.3k
Other Decks in Technology
See All in Technology
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
550
「とりあえず動く」の先へ。 AI時代のチーム開発と内部設計/2026-slsdays
slsops
0
150
しろおびから始める!ログ活用の第一歩
shumei_ito
0
130
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.4k
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
330
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
1
310
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
210
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
210
ミイダス株式会社 テックチームのご紹介 / MIIDAS Tech Team
miidas
0
160
Codex概要
ymiya55
0
440
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
510
Featured
See All Featured
Are puppies a ranking factor?
jonoalderson
2
4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
We Are The Robots
honzajavorek
0
390
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
The World Runs on Bad Software
bkeepers
PRO
72
12k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
The SEO Collaboration Effect
kristinabergwall1
1
590
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
The Curious Case for Waylosing
cassininazir
1
550
Crafting Experiences
bethany
1
370
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
930
Transcript
Let's enjoy crafting interpreters! 〜『インタプリタの作り方』の紹介〜 2024年05月24日(金) SmartHR LT大会 mktakuya /
Takuya Mukohira SmartHR プロダクトエンジニア
5月入社のmktakuyaです
前職を退職後
無職期間1.5ヶ月
やったこと
None
None
(技術的に)やったこと
https://book.impress.co.jp/books/1122101087
『インタプリタの作り方』 著: Robert Nystrom / 訳: 吉川邦夫 出版: インプレス /
2023年9月 ・インタプリタ自作 をやっていく本 ・Loxという著者オリジナル言語 ・手書きパーサ派 (lexerも自作) ・Java / C言語を用いて、 2つのインタプリタを つくる
出典: インタプリタの作り方( Robert Nystrom, 2023: p.14)
2つのインタプリタ
第1のインタプリタ: jlox
・jlox: JavaによるLoxのインタプリタ ・ツリーウォーク型のインタプリタ ・ASTを再帰関数でたどる (まさにツリーをウォーク する!) ・おそい
第2のインタプリタ: clox
・clox: C言語によるLoxのインタプリタ ・バイトコード式の仮想マシン ・Loxのコードをコンパイル し、 バイトコードを生成 →VMで実行する ・はやい
???
ツリーウォーク型インタプリタ: jlox → 1.8以前のCRuby と同じ バイトコード式の仮想マシン: clox → 1.9(YARV)以降のCRubyと同じ
つまり……
ツリーウォーク型インタプリタ: jlox → Matzになれる!!! バイトコード式の仮想マシン: clox → ko1さんになれる!!!
と言っても 過言ではない!!!(過言)
None
所感
・単に、いちプログラマとしての幅が広がった ・言語処理系の知識がざっくり身についた → 用語としては知っていた各解析やバイトコード、 スタックマシン型VMなどをつくることを通して理解。 ・これまで触れなかった言語に触れたいと思うようになった → 言語の設計についてのコラムで、
他の言語を例に出したり、設計アイデアを拝借したり。 LuaやSmalltalk、そしてLISPを触ってみたくなった。
・RubyKaigiの議論を理解 するのに役立った ・パーサ系トーク →「手書きパーサ」「パーサジェネレータ」の比較。 本で手書きパーサを書いたおかげで、 それぞれのメリデメなどをなんとなく理解できる。 ・VM系トーク → LoxのバイトコードはYARVとは違うが基本は一緒。 スタックマシンという意味では一緒なので爆わかり。
・一方で…… ・Rebuild EP153 rui314さん回の話を思い出す。 → ruiさんがCコンパイラをスクラッチで書いた話。 「自作言語を作るのも楽しいけど、既存言語もいい。 既存の言語でセルフホスティングも目指す となると
全部やる(手抜き NG)ので勉強に なる。」(要約) ・これは実際そうだなーと思った。 → 書籍でも自分でも、簡略化のために省いたもの多し。 https://rebuild.fm/153/#t=01:01:45
None
おわりに
・無職期間をやる前に、 → 「普段は絶対やらないようなことやろう」 と決めた。 Webアプリやツール開発は仕事終わりに勝手にやるので。 ・せっかくならCSっぽいことや低レイヤっぽいこと やろう! →
“プログラミング”にちゃんと向き合いたいし、 言語でも作るか、で『インタプリタの作り方』に出会う。
・インタプリタの作り方は、 たぶんSmartHRでの仕事にはあんまり役に立たない…… ・けど、 RubyKaigiでRubyをつくる人たちを見てシビれたように ・『インタプリタの作り方』を読んで Matzやko1さんに近づいたつもりになってみるのもアリ!?
Let's enjoy crafting interpreters!