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
nikawa2161
September 16, 2025
16
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コンパイルの違い
nikawa2161
September 16, 2025
More Decks by nikawa2161
See All by nikawa2161
Node.js Subpath imports
nikawa2161
0
28
Sagaパターン入門(続編)
nikawa2161
0
39
Sagaパターン入門
nikawa2161
0
48
沖縄観光とPostgreSQL排他制約の話
nikawa2161
0
36
20251209_プログラミング原則の学び
nikawa2161
0
29
自分のコードを数年ぶりに読んだら
nikawa2161
0
20
ユーザーインタビュー分析に参加して得られたことと気づき
nikawa2161
0
31
oEmbedとは?
nikawa2161
0
170
はじめまして、にかわです
nikawa2161
0
20
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
380
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
770
A designer walks into a library…
pauljervisheath
211
24k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1.1k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
440
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Git: the NoSQL Database
bkeepers
PRO
432
67k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Transcript
TypeScriptのコンパイルは他の言語と少し違う 1
コンパイル方式とインタプリタ方式 2
低水準言語 コンピュータが理解しやすい言語 機械語やアセンブリ言語がこれにあたる。 機械語の例: 01001000 11000111 11000000 00000001 00000000 00000000
00000000 アセンブリ言語の例(C言語の add 関数をコンパイル後に変換したもの): add: mov eax, edi ; 第1 引数 edi add eax, esi ; 第2 引数 esi ret 3
高水準言語 人が理解しやすい自然言語に近い言語 C言語やJavaScriptなど。 例: int add(int a, int b) {
return a + b; } 読みやすく、操作も簡単。普段私たちが使う言語はほとんど高水準言語。 4
翻訳の方法 高水準言語を低水準言語に翻訳する方法には大きく2種類ある。 5
コンパイル方式 プログラム全体を事前に翻訳 → 実行ファイルを作る。 翻訳を行うのが「コンパイラ」 。 特徴: 実行は速いが、ビルドに時間がかかる。 6
インタプリタ方式 1行ずつ翻訳しながら実行。 特徴: 実行前のビルドが不要、修正後すぐ実行できる。ただし速度は遅め。 7
例: PHP <?php for ($i = 1; $i <= 5;
$i++) { if ($i % 2 == 0) { echo "$i: hoge"; } else { echo "$i: huga"; } } ?> php sample.php 8
TypeScript のコンパイルと実行 TypeScript。 特徴的なのは「高水準言語 → 高水準言語」に変換している点。 9
コンパイルの流れ 1. TS ファイル作成 function greet(name: string) { console.log("Hello, "
+ name); } 2. コンパイル実行 tsc src/greet.ts このとき ①型チェック と ②JavaScript への変換 が行われる。 10
① 型チェック greet(123); // $ tsc sample.ts // error TS2345:
Argument of type 'number' is not assignable to parameter of type 'string'. 11
② JavaScript への変換 function greet(name) { console.log("Hello, " + name);
} 12
図解 一般的な「コンパイル」は、低水準言語に翻訳 TypeScriptコンパイルの変わっているのは、JavaScriptなのでまだ「高水準→高水 準」となっている 13
最後に 通常の「コンパイル」は 高水準 → 低水準。 TypeScript のコンパイルは「高水準 → 高水準(TS →
JS) 」 。 実行時は JavaScript エンジン(V8など)が JIT コンパイルを使って処理。 ビルドとランタイムは分離しているため、 型チェックは tsc 変換は esbuild など別ツール を組み合わせて使うことも可能。 tsgo で「コンパイル速度を10倍速くする」こともできる 14