【とらんすぱいら】

トランスパイラ とは?

💡 言語から言語へ、同じ高さで翻訳するコンパイラの仲間
📌 このページのポイント
トランスパイラ vs コンパイラ トランスパイラ(同じ抽象度で変換) TypeScript 高級言語 tsc SWC/esbuild JavaScript 高級言語 Sass → CSS JSX → JavaScript ES2024 → ES5 コンパイラ(低い抽象度へ変換) C / Rust 高級言語 gcc rustc 機械語 低級言語 トランスパイラは「横の変換」、コンパイラは「縦の変換」
トランスパイラのイメージ
ひよこ ひよこ

トランスパイラって普通のコンパイラと何が違うの?

ペンギン先生 ペンギン先生

コンパイラは高級言語を機械語やバイトコードに変換するけど、トランスパイラは高級言語から高級言語に変換するんだ。同じ抽象度の言語間での翻訳だね

ひよこ ひよこ

TypeScriptJavaScriptにするのもトランスパイラなんだね!

ペンギン先生 ペンギン先生

そうだよ。tscコマンドがまさにそれ。最近はSWCesbuildのようにRustやGoで書かれた超高速なトランスパイラも登場して、ビルド時間が劇的に短くなったんだ

ひよこ ひよこ

変換後のコードって読めるの?

ペンギン先生 ペンギン先生

ものによるね。TypeScriptJavaScriptは比較的読みやすいけど、Babelで古いJavaScriptに変換するとかなり変わることもある。だからソースマップを一緒に生成して、デバッグ時に元のコードを参照できるようにするのが定石だよ

ひよこ ひよこ

トランスパイラがたくさんあるけど、どう選べばいいの?

ペンギン先生 ペンギン先生

速度重視ならSWCesbuild、型チェックも一緒にしたいならtsc、古いブラウザ対応が必要ならBabelかな。最近のフレームワークViteが内部でesbuildSWCを使ってるから、意識せず恩恵を受けてることが多いよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「トランスパイラ」って出てきたら「ある言語のコードを別の言語のコードに変換するツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Transpiler (Source-to-Source Compiler)」 = 変換コンパイラ
💬 Transform(変換)と Compiler(コンパイラ)を組み合わせた造語だよ
← 用語集にもどる