【エスダブリューシー】

SWC とは?

最終更新:
💡 Rustでコード変換を高速化。型チェックは別の役割

Rust製のJavaScript/TypeScriptコンパイラ。BabelやTerserの代替として、Next.jsをはじめ多くのフレームワークで採用されている。

📌 このページのポイント
SWCの役割:コードを変換するJS / TS入力コードSWCRust製JavaScript出力コードTypeScriptの型チェックtscなどで別に確認速度差や互換性はコード・設定で変わる
SWCはコードを変換し、TypeScriptの型チェックは別のツールで行います。変換できても、型や実行結果の正しさが保証されるわけではありません。
ひよこ ひよこ
SWCってBabelの代わりになるの?
ペンギン先生 ペンギン先生
JavaScriptやTypeScriptの変換を担えるよ。ただしBabelとすべて同じではないので、使っている構文・設定・プラグインが対応しているか確認しよう。公式の速度比較も、すべてのプロジェクトで同じ倍率になる保証ではないんだ
ひよこ ひよこ
コンパイラなら型エラーも見つけるの?
ペンギン先生 ペンギン先生
SWCはTypeScriptをJavaScriptへ変換できるけれど、型チェックはしないよ。型の誤りを検出するにはtscなどを別に使うんだ。変換できたことと、型や実行結果が正しいことは別だよ
ひよこ ひよこ
Next.jsでも使われてるんだよね?
ペンギン先生 ペンギン先生
Next.js 12から標準のコンパイラに採用されたよ。ただし独自のBabel設定やビルド方式によって処理方法が変わるので、プロジェクトの設定と対応する機能も確認してね。
ひよこ ひよこ
Babelのプラグインはそのまま使えるの?
ペンギン先生 ペンギン先生
BabelプラグインをそのままSWCのプラグインとしては使えないよ。SWCに対応する機能が組み込まれている場合もあるし、Wasmベースの独自プラグインもある。ただしプラグインとSWC本体のバージョンの組み合わせを確認する必要があるんだ。
ひよこ ひよこ
SWC以外にもRust製のツールって増えてるの?
ペンギン先生 ペンギン先生
Rust製の開発ツールにはほかの例もあるけれど、実装言語だけで速さや互換性は決まらないよ。移行するときは、自分のコードで変換結果・テスト・所要時間を確かめることが大切なんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SWC」って出てきたら「Rustで作られたJavaScript/TypeScriptの変換ツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Speedy Web Compiler」 = 高速ウェブコンパイラ
💬 公式サイトではSpeedy Web Compilerと表記されているよ

参考資料

← 用語集にもどる