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
TypeScriptがブラウザで実行されるまでの流れを5分で伝えたい
Search
ジン / Jin
November 29, 2025
5.9k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TypeScriptがブラウザで実行されるまでの流れを5分で伝えたい
https://frontend-conf.osaka.jp/
ジン / Jin
November 29, 2025
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
790
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
450
Facilitating Awesome Meetings
lara
57
7.2k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
530
Evolving SEO for Evolving Search Engines
ryanjones
0
310
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
A better future with KSS
kneath
240
18k
Claude Code のすすめ
schroneko
67
230k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
Darren the Foodie - Storyboard
khoart
PRO
4
4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
440
Transcript
TypeScriptがブラウザで 実⾏されるまでの流れを5分で伝えたい ジン / #fec_kansai
2年⽬フロントエンド ⼈⽣初のconf登壇👏 ⾃⼰紹介 ジン X: @Jin_pro_01 (齋藤仁 / じんじん)
TypeScriptはブラウザでは動かない 実はTypeScriptはブラウザで実⾏されるまでに裏でコネコネされている。 (開発始めて1年くらいはそんなこと知らなかった) じゃあ我々が書いたTypeScriptは、実際にはそのままユーザーのブラウザに 配信されて動いてないってこと...!? そんな裏のコネコネをビルドプロセスとして、ざっくり5分で喋りたい。
ざっくりビルドプロセス ブラウザランタイム aaa.ts bbb.ts ccc.ts aaa.js bbb.js ccc.js bundle.js bundle.min.js
①トランスパイル (TS→JS変換) ②バンドル (1つのファイルに) ③ミニファイ (なるべく小さく)
なぜビルドプロセスを経る必要があるか? • ブラウザで実⾏するため ◦ 開発者が開発しやすい⾔語(TypeScript)から、 ブラウザで実⾏できる⾔語(JavaScript)へ変換する。 • モダンな機能を⽤いて開発を進めるため ◦ 最新のTypeScript
/ JavaScriptを書きながら、 古いブラウザでも動作するようにする。 • パフォーマンスを向上させるため ◦ 巨⼤なプロジェクトでも、 ファイルの統合‧分割‧圧縮を⾏うことで⾼速にブラウザへ配信する。
1. トランスパイル 何をする? • トランスパイル = トランスレーション + コンパイル。 •
ブラウザでそのまま実⾏できないTypeScript から (古いブラウザでも実⾏できる)JavaScriptへの変換を⾏う。 • (tsc), Babel, SWC, esbuildなどが使われる。
1. トランスパイル // 入力 (main.ts) const greet = (name: string):
string => { return `Hello, ${name}!`; }; $ npx tsc main.ts --target es5 // 出力 (main.js) var greet = function (name) { return "Hello, ".concat(name, "!"); }; // 型が消え、 // 古いブラウザでも動く関数表現に
2. バンドル 何をする? • 複数のJavaScriptファイルを1つにまとめる(分割することも)。 • →HTTPリクエスト数を減らすなどブラウザへの転送や読み込みを⾼速化。 • webpack, Rollup,
esbuild, Rolldown, Turbopack, Rspackなどが使われる。
// 入力 // math.js export const add = (a, b)
=> a + b; // main.js import { add } from './math.js'; console.log(add(1, 2)); 2. バンドル $ npx esbuild main.js --bundle --outfile=bundle.js // 出力 (bundle.js) (() => { // math.js var add = (a, b) => a + b; // main.js console.log(add(1, 2)); })();
3. ミニファイ 何をする? • ファイルサイズを削減する。 ◦ 変数名の短縮 ◦ 不要な空⽩や改⾏、コメントの削除 ◦
使われていないコードの削除 • →ブラウザがファイルを読み込む時間の⾼速化。 • Terser, esbuild, SWCなどが使われる。
// 入力 (bundle.js) (() => { // math.js var add
= (a, b) => a + b; // main.js console.log(add(1, 2)); })(); 3. ミニファイ $ npx terser bundle.js --output bundle.min.js // 出力 (bundle.min.js) (()=>{var add=(a,b)=>a+b;consol e.log(add(1,2))})();
ざっくりビルドプロセス(再掲) ブラウザランタイム aaa.ts bbb.ts ccc.ts aaa.js bbb.js ccc.js bundle.js bundle.min.js
①トランスパイル (TS→JS変換) ②バンドル (1つのファイルに) ③ミニファイ (なるべく小さく)
⽇頃のコーディングにおいてあまりビルドプロセスについて意識する瞬間は 多くないかもしれませんが、我々が書いたコードがユーザーの使うブラウザ にどのような形で届くのか、我々が乗っかっているそのツール群はどのよう なものなのか、そこまで⽬を向けることはサービスの作り⼿としてとても⼤ 事だと感じています。 5分なのでいろいろ端折っていた箇所は多いですが、 何かの気づきや学びにつながると嬉しいです!ありがとうございました。 おわり