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
低レイヤへの誘い
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yusuke Inai
July 05, 2022
Programming
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
低レイヤへの誘い
Yusuke Inai
July 05, 2022
More Decks by Yusuke Inai
See All by Yusuke Inai
で、エンジニアになって1年経ったけどどう?
youliangdao
1
380
人よりアウトプットができるようになるためのコツ
youliangdao
0
230
Next.jsから見る Webフロントエンドの歴史
youliangdao
1
1.2k
SaaSスタートアップで3ヶ月働いてみて感じた現実(リアル)
youliangdao
0
520
個人開発で挫折する人を救いたい
youliangdao
2
3.8k
Qiitaでバズりやすい記事の書き方を伝授する
youliangdao
0
4.7k
React って本当に使う意味あるの? 〜SPA と React の「キホン」の「キ」〜
youliangdao
1
260
PumaとUnicornって結局何なん!?
youliangdao
0
1.6k
"ぼくのかんがえたさいきょうの"勉強法
youliangdao
0
430
Other Decks in Programming
See All in Programming
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
190
dRuby over BLE
makicamel
2
330
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
210
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
240
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
150
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
720
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
260
3Dシーンの圧縮
fadis
1
740
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
220
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.4k
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
3
400
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
How GitHub (no longer) Works
holman
316
150k
First, design no harm
axbom
PRO
2
1.2k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
380
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Deep Space Network (abreviated)
tonyrice
0
170
How to make the Groovebox
asonas
2
2.2k
Transcript
低レイヤへの誘い 2022.7/5 LT 杏寿郎、お前も 低レイヤの住人にならないか?
01 02 03 04 05 こんな仲間が欲しい! 自己紹介 低レイヤとは? Let's 低レイヤ!
おわりに 目次
自己紹介 01 01
01 自己紹介 ・稲井友亮 ・25歳 ・RUNTEQ34期生 ・医者目指してた ・低レイヤ大好き
自己紹介 01 自己紹介
02 02 こんな仲間が 欲しい!
02 こんな仲間が 欲しい! 以上 募集する仲間 低レイヤ プログラミング仲間 以上
03 03低レイヤとは?
03 低レイヤと は? ハードウェアに近い階層 =低レイヤ
「縁の下の力持ち」 03 低レイヤと は?
03 低レイヤと は?
03 低レイヤと は? ※引用元 https://qiita.com/no wnabe/items/47cc5d 95e8b4e01205a8
03 低レイヤと は? 低レイヤ風に説明 Rubyプログラム実行プロセス 01 01 02 02 03
03 04 04 まずRubyインタプリタ ( コ ー ド を 実 行 す る 際 に、rubyコマンドと打つ あれ)がプログラムを意 味のわかる最小単位にま で分解する 字句解析 構文解析 トークン列がどんな意味 のプログラムなのか理解 するために構文木と呼ば れるデータ構造に落とし 込む コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行
04 04 Let's 低レイヤ!
低レイヤがしていることを 実際に体験してみよう! 04 Let's 低レ イヤ!
04 Let's 低レ イヤ! 例題プログラム
低レイヤ Rubyプログラム実行プロセス 01 01 02 02 03 03 04 04
まずRubyインタプリタ ( コ ー ド を 実 行 す る 際 に、rubyコマンドと打つ あれ)がプログラムを意 味のわかる最小単位にま で分解する 字句解析 構文解析 トークン列がどんな意味 のプログラムなのか理解 するために構文木と呼ば れるデータ構造に落とし 込む コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行 04 Let's 低レ イヤ!
04 Let's 低レ イヤ! 低レイヤ Rubyプログラム実行プロセス 03 03 04 04
コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行 詳細を知りたい人は 「言語理論」「オートマトン 」 「文脈自由文法」「再帰下降構文解析」 辺りでググろう♪
04 Let's 低レ イヤ! 低レイヤ Rubyプログラム実行プロセス 03 03 04 04
コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行
04 Let's 低レ イヤ! 構文木 =データ構造
04 Let's 低レ イヤ! 低レイヤ Rubyプログラム実行プロセス 03 03 04 04
コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行 コンパイル ・言語を変換すること ・英語のcompileから来ており、元は編纂って意味 ・昔はコンピュータで仕事をする前、いろいろな書類 を綴じて(file)、紙挟み(folder)に入れることを compileと言っていました。
04 Let's 低レ イヤ! 低レイヤ Rubyプログラム実行プロセス 03 03 04 04
コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行
04 Let's 低レ イヤ! (Rubyを実行するために設計された仮想マシンで あるRubyVM用の)言語に落とし込む →「別の言語に置き換える」ということ RubyVMがバイトコードを実行 →「置き換わった言語を実行する」ということ
低レイヤ Rubyプログラム実行プロセス 03 03 04 04 コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで
あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行 04 Let's 低レ イヤ! + ⬅️ 構文木を別の言語に置き 換えて処理して実行する
低レイヤ Rubyプログラム実行プロセス 04 Let's 低レ イヤ! ⬅️ 構文木をRubyで処 理して実行する 03
03 04 04 コード生成 構文木をコンパイルし、 Rubyを実行するために 設計された仮想マシンで あ る RubyVM 用 の 言 語 (バイトコード)に落と し込む 実行 RubyVMがバイトコード を実行 +
04 Let's 低レ イヤ! 例題プログラム
04 Let's 低レ イヤ! + + 3 1 2 今回の構文木
04 Let's 低レ イヤ! 木を配列で表現 木の表現方法 ・今回は[名前、左の木、右の木]の順番で配列に格納 ・ただしこれ以外にも方法は色々ある
04 Let's 低レ イヤ! + + 3 1 2 今回の構文木
04 Let's 低レ イヤ! Rubyに落とし込む
04 Let's 低レ イヤ! + + 3 1 2 今回の構文木
04 Let's 低レ イヤ! Rubyに落とし込む
04 Let's 低レ イヤ! アクセス方法
04 Let's 低レ イヤ! + + 3 1 2 今回の構文木
04 Let's 低レ イヤ! 実際にコードを書いて みよう! 皆さんも一緒に考えながらやっていただける と幸いです。
04 Let's 低レ イヤ! 例題プログラム
04 Let's 低レ イヤ! 木の処理方法 木の処理方法 ・木を処理する方法は名前の部分が値ならその値、値 でなければ左と右を処理して得られた値に「名前」 の処理を行う
04 Let's 低レ イヤ! + 1 2
04 Let's 低レ イヤ! + + 3 1 2 今回の構文木
04 Let's 低レ イヤ! 雛型を作成
04 Let's 低レ イヤ! + + 3 1 2 今回の構文木
04 Let's 低レ イヤ! 左側の処理
04 Let's 低レ イヤ! + + 3 1 2 今回の構文木
04 Let's 低レ イヤ! 右側の処理
04 Let's 低レ イヤ! + + 3 1 2 今回の構文木
04 Let's 低レ イヤ! 全体処理
04 Let's 低レ イヤ! 完成!!
04 Let's 低レ イヤ!
05 05 おわりに
低レイヤを知れば 世界が広がる!!