🐙

トランスパイルとコンパイルの違いとは?

に公開

トランスパイルとコンパイルの違いとは?

プログラミングを学んでいると「コンパイル」と「トランスパイル」という言葉を耳にすることがあります。どちらも「コードを別の形に変換する」という点では共通していますが、変換先や目的に違いがあります。本記事では、その違いを整理して解説します。


コンパイル(Compile)

コンパイルとは、人間が書いた高級言語(例:C、Java)を、コンピュータが直接実行できる低級言語(バイナリやアセンブリなど)に変換することを指します。
代表的な例としては以下が挙げられます。

  • C言語 → 機械語(.exeなどの実行ファイル)
  • Java → バイトコード(JVMが解釈する中間コード)

要するに、コンパイルは人間に分かりやすいコードを機械が実行できる形に翻訳する行為です。


トランスパイル(Transpile)

トランスパイルとは、同じ「高級言語」同士でコードを変換することを意味します。
つまり、最終的な変換先も人間が読める言語のままです。実行環境に合わせた互換性の確保や開発効率向上が目的となります。

代表的な例は次の通りです。

  • TypeScript → JavaScript
  • ES6(モダンJavaScript) → ES5(古いブラウザ向けJavaScript)
  • Sass/SCSS → CSS

ここでのポイントは、トランスパイルは「機械語」にはならず、別のプログラミング言語や記法に置き換えられるということです。


違いを整理すると

  • コンパイル → 高級言語 → 低級言語(機械が直接理解できる形へ変換)
  • トランスパイル → 高級言語 → 高級言語(人間が読める形のまま別の言語へ変換)

まとめ

両者は「コードを変換する」という点で似ていますが、対象と目的が異なる点に注意が必要です。コンパイルは「機械に理解させるための変換」、トランスパイルは「実行環境や開発体験に合わせて別の高級言語へ変換する作業」と整理できます。

この違いを意識すると、TypeScriptやBabelなどのツールが何をしているのか理解しやすくなり、フロントエンド開発における技術選択にも役立ちます。

Discussion