【ロールアップ】

Rollup(バンドラ) とは?

最終更新:
💡 使わないコードはバッサリ切り捨て!軽量バンドルの職人

ES Modules(import/export)を前提にしたJavaScriptのモジュールバンドラ。使われていないコードを除くTree Shakingを広めたツールとして知られ、ライブラリの配布用ビルドによく使われる。

📌 このページのポイント
Tree Shaking(不要コード除去) バンドル前 funcA funcB util 未使用X 未使用Y 未使用Z → Rollup バンドル後 funcA funcB util 除去された不要コード 使用中のコード 未使用コード(除去対象)
Tree Shakingのイメージ
ひよこ ひよこ
Rollupってwebpackと何が違うの?
ペンギン先生 ペンギン先生
RollupはES Modulesのimport/exportを前提に作られたバンドラで、設定が比較的シンプルなんだ。出力も読みやすい形になりやすいから、ライブラリを配るときに好まれてきたよ。webpackもES Modulesを扱えるし不要コードの除去もできるから、「どっちが上」ではなく得意な場面の違いと考えてね
ひよこ ひよこ
Tree Shakingって何?木を揺するの?
ペンギン先生 ペンギン先生
まさにそのイメージ!木を揺すると枯れた葉っぱ(使っていないコード)が落ちるでしょ?Rollupはimportされたコードを静的に解析して、実際に使われていない部分を出力から外すんだ。ただ、読み込むだけで処理が走る(副作用がある)モジュールは、初期設定では使われていなくても残されるよ
ひよこ ひよこ
どういうときにRollupを使うの?
ペンギン先生 ペンギン先生
ライブラリを作って配布するときが代表的な出番だね。Rollupの公式ドキュメントでも、CommonJSやUMD形式のファイルと、ES Modules形式のファイルの両方を用意してpackage.jsonで指定する方法が紹介されているよ
ひよこ ひよこ
ViteがRollupを使ってるって聞いたけど本当?
ペンギン先生 ペンギン先生
Vite 7までは本当だったよ。開発中の変換にesbuild、本番ビルドにRollupを使っていたんだ。でも2026年3月のVite 8からは、Rust製のRolldownという1つのバンドラにまとめられた。古い記事を読むときは、どのバージョンの話かに注意してね
ひよこ ひよこ
じゃあRollupのプラグインはもう役に立たないの?
ペンギン先生 ペンギン先生
そんなことはないよ。RolldownはRollupと同じプラグインAPIに対応していて、Vite 8の発表でも既存のViteプラグインの多くはそのまま動くと説明されている。Rollupで育ったプラグインの仕組みは、形を変えて今も使われているんだね
もっと詳しく知りたい人へ

ViteがRolldownに変わったなら、Rollupのプラグインはもう使えないの?

多くはそのまま使えます。Vite 8の発表では、RolldownはRollupおよびViteと同じプラグインAPIに対応しており、既存のViteプラグインの多くは変更なしで動くと説明されています。ただし一部の挙動や設定は異なる場合があるため、Vite 7以前から移行するときは公式ドキュメントで変更点を確認し、本番ビルドの出力を実際に確かめます。Rollup自体は単体のバンドラとして引き続き使えます。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Rollup」って出てきたら「ES Modules向けのバンドラで、Tree Shakingを広めた、ライブラリ作りでよく使われるやつ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Rollup」 = 巻き上げる・ひとまとめにする
💬 英語のroll upには「巻き上げる」「ひとまとめにする」という意味があるよ。たくさんのモジュールを1つにまとめるバンドラの仕事にぴったりの言葉だね

参考資料

← 用語集にもどる