【とらんすぱいら】

トランスパイラ とは?

公開:
💡 言語から言語へ、同じ高さで翻訳するコンパイラの仲間
📌 このページのポイント
トランスパイラ 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(コンパイラ)を組み合わせた造語だよ
← 用語集にもどる