【エスダブリューシー】

SWC とは?

💡 Rustの力で爆速変換!Babelの10倍速いコンパイラ
📌 このページのポイント
Babel vs SWC コンパイル速度比較 Babel (JavaScript製) ████████████████ 10.2秒 SWC (Rust製) 0.5秒 約20倍高速! ※ 大規模プロジェクトでのトランスパイル時間(参考値) JS Rust Rustのネイティブ実行とマルチスレッドにより大幅な高速化を実現
Babel vs SWCの速度比較イメージ
ひよこ ひよこ

SWCってBabelの代わりになるの?

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

そうだよ!BabelはJavaScriptで書かれていて柔軟だけど遅いのが弱点だった。SWCはRustで書き直すことで同じ変換処理を10倍以上速くこなせるようになったんだ

ひよこ ひよこ

なんでRustだと速くなるの?

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

Rustメモリ管理を効率的に行えるシステム言語で、JavaScriptのようなガベージコレクションオーバーヘッドがないんだ。さらにマルチスレッド処理も得意だから、大量のファイルを並列で変換できるよ

ひよこ ひよこ

Next.jsでも使われてるんだよね?

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

Next.js 12からデフォルトコンパイラがBabelからSWCに切り替わったよ。これによってビルド時間が最大5倍速くなったケースもあるんだ。開発者は特に設定を変えなくても恩恵を受けられるよ

ひよこ ひよこ

Babelのプラグインはそのまま使えるの?

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

残念ながらBabelプラグインをそのまま使うことはできないんだ。ただ、よく使われるプラグインの機能はSWCに組み込まれているし、SWC独自のプラグインシステム(Wasmベース)も開発が進んでいるよ

ひよこ ひよこ

SWC以外にもRust製のツールって増えてるの?

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

めちゃくちゃ増えているよ!esbuild(Go製だけど同じ高速化の流れ)、TurbopackBiome、Oxcなど、フロントエンドツールチェーンの「Rust化」が一大トレンドになっているんだ。JavaScriptエコシステムが成熟して、パフォーマンスが次の差別化ポイントになった結果だね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SWC」って出てきたら「Rustで作られた爆速のJavaScript/TypeScriptコンパイラ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Speedy Web Compiler」 = 高速ウェブコンパイラ
💬 名前の通り「速さ」を最重要視して作られたコンパイラだよ。最初はSWCという名前だけだったけど、後からSpeedy Web Compilerの略だと公式に定義されたんだ
← 用語集にもどる