Skip to content
Latchkey

トランスパイラーとは?ソースからソースへのコード変換

トランスパイラーはソースからソースへのコンパイラーです。ある言語や構文レベルのコードを、モダンな JS を古い JS にするように、別のものの等価なコードに書き換えます。

ブラウザは、作者が書くあらゆる種類のソースコードを実行できるわけではありません。TypeScript、JSX、最新の JavaScript 構文はすべて、古いブラウザが実行できるプレーンな JavaScript に変換する必要があります。トランスパイラーは、コードの動作を変えずにその翻訳を行います。build の早い段階、バンドリングの前に実行され、その出力が pipeline の残りに供給されます。

トランスパイラー 対 コンパイラー

従来のコンパイラーは、高水準コードをマシンコードやバイトコードに下げます。トランスパイラーは同じ抽象レベルにとどまり、ある人間可読な言語を別のものに翻訳します。TypeScript から JavaScript はトランスパイルで、C からマシンコードはコンパイルです。

Web で何がトランスパイルされるか

  • TypeScript が JavaScript に落とし込まれる。
  • JSX が関数呼び出しに書き換えられる。
  • 新しい JS 構文が古いブラウザターゲット向けに下げられる。
  • decorator のようなオプションの言語機能。

一般的なトランスパイラー

Babel は古典的で設定可能なトランスパイラーです。esbuild と SWC は、より速い言語で書かれた同じ仕事をします。TypeScript コンパイラー(tsc)もトランスパイルしますが、多くのチームは速いツールに JS を出力させ、tsc は型チェックにのみ使います。

型チェックは別

速いトランスパイラーはしばしば、検証せずに TypeScript の型を取り除きます。つまり、型が壊れていても build が成功することがあります。pipeline は通常、型エラーが依然として CI を失敗させるよう、別の型チェックステップを追加します。

CI/CD でのトランスパイル

トランスパイルはすべての build で実行され、ファイル数に応じてスケールします。トランスパイラーの出力をキャッシュし、変更されたファイルだけを再処理することで速く保てます。cache のない新鮮な runner では、すべてのファイルがゼロからトランスパイルされ、小さな build では支配的になり得ます。

重要なポイント

  • トランスパイラーは、同じ抽象レベルで言語や構文レベルの間でコードを翻訳します。
  • 速いトランスパイラーはしばしば型チェックをスキップするので、CI に別の型チェックステップを追加します。
  • トランスパイル済みの出力をキャッシュすると、毎回変更のないファイルを再処理せずに済みます。

関連ガイド