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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yusuke Inai
July 05, 2022
Programming
350
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.7k
"ぼくのかんがえたさいきょうの"勉強法
youliangdao
0
430
Other Decks in Programming
See All in Programming
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
230
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
290
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
280
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
120
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
110
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
190
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
310
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
150
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
260
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
610
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.8k
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
120
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.2k
Ethics towards AI in product and experience design
skipperchong
2
320
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Ruling the World: When Life Gets Gamed
codingconduct
0
260
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Done Done
chrislema
186
16k
How GitHub (no longer) Works
holman
316
150k
sira's awesome portfolio website redesign presentation
elsirapls
0
290
Game over? The fight for quality and originality in the time of robots
wayneb77
1
210
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
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 おわりに
低レイヤを知れば 世界が広がる!!