Rust製ビルドツールFarm(farm-fe)とは?Vite・Rspackとの違いと使い方
この記事で扱うFarmは、英単語の「農場」でもビジネス用語の「ファーム」でもなく、フロントエンド開発で使うRust製のビルドツール「Farm(farm-fe)」です。ViteやWebpackと同じく、TypeScriptやReactのコードをブラウザで動く形にまとめる道具で、Rustで書かれた速さを売りにしています。2026年はVite自身がRust製バンドラRolldownへ移行するなど前提が動いたため、いまFarmを選ぶ意味も含めて、特徴・他ツールとの違い・使い方を整理します。
まとめ:Farm(farm-fe)の要点
- Farmは、Rustで書かれたVite互換のWebビルドツール。現行は @farmfe/core 1.7.11 で、起動はミリ秒、HMRは多くの場面で10ミリ秒以内。
- 最大の特徴は「部分的バンドリング」。バンドルしない方式と全部まとめる方式の中間で、リクエスト数と最適化を両立する。
- ViteのプラグインAPIと互換性があり、既存のVite/Rollupプラグイン資産をある程度そのまま使える。
- 2026年はVite 8.0がRust製のRolldownを採用し、Viteも高速化した。速さだけでFarmを選ぶ理由は以前より小さい。
- Farmが向くのは、大規模で速度を極めたい、Vite互換のまま別実装を試したいケース。多くのチームはVite(+Rolldown)で足りる。
Farm(farm-fe)とは
Farmは、farm-feプロジェクトが開発するRust製のWebビルドツールです。役割はViteやWebpackと同じで、TypeScript・JSX・CSSといった開発用のコードを、ブラウザが解釈できるJavaScriptやCSSへ変換・結合します。JavaScript製のツールが担ってきたこの処理をRustで実装しているため、起動やビルド、変更を即座に反映するHMR(ホットモジュールリプレースメント)が速いのが持ち味です。
HTML・CSS・CSS Modules・JS・JSX・TS・TSX・JSON・静的アセットは追加設定なしで扱え、Sass・Less・PostCSS・Vue・React・Solidは公式プラグインで対応します。npmパッケージ名は @farmfe/core で、現行の安定版は1.7.11です(Node.jsは16.15.1以上が必要)。
Farmの特徴:部分的バンドリングとVite互換
Farmを他と分けている一番の考え方が「部分的バンドリング」です。開発時にファイルを一切まとめない方式(no-bundle)は、変更の反映は速い一方でリクエスト数が膨れます。逆に本番向けに全部を一つにまとめると、少しの変更で全体を作り直すことになります。Farmは、モジュールを適度なまとまりに分割してこの両極の弱点を避け、開発と本番の挙動の差も小さく保ちます。
もう一つの柱がVite互換です。FarmはViteのプラグインAPIに合わせて設計されており、Vite/Rollupのプラグイン資産をある程度そのまま活かせます。ゼロから独自のプラグイン文化を育てる必要がなく、既存のエコシステムに乗れるのが実務上の利点です。
Vite・Rspack・Rolldownとの違い
Rust製ビルドツールは2026年に一気に増えました。それぞれの立ち位置を押さえると、Farmの選びどころが見えてきます。
| ツール | 実装 | 互換性の軸 | 位置づけ |
|---|---|---|---|
| Farm | Rust | Vite互換 | 独立系・部分的バンドリング |
| Vite 8 | Rust(Rolldown) | 事実上の標準 | 多くのチームの既定 |
| Rolldown | Rust | Rollup/Vite互換 | Viteチーム製の中核バンドラ |
| Rspack | Rust | Webpack互換 | Webpack資産の移行向け |
ここで効いてくるのが、Vite 8.0がRust製のRolldownを取り込んで高速化した事実です。Farmの「JavaScript製Viteより速い」という強みは、Vite自身のRust化で相対的に薄まりました。一方でRolldownはRollup/Viteプラグインの大半が動作し、互換性の面では本家の強みがあります。Rspackは、Webpackからの移行を最優先する現場に向きます。Farmは、これらと異なり独立して育ってきたVite互換ツールで、部分的バンドリングという設計上の個性で差別化しています。
Farmの使い方:導入と設定
Farmは公式のscaffoldツールで、ReactやVueなどのテンプレートから始められます。プロジェクトを作成したら、設定ファイル farm.config.ts で入力やプラグインを指定します。
npm create farm@latest
作成後、設定ファイル farm.config.ts で入力やコンパイル対象を指定します。
import { defineConfig } from '@farmfe/core';
export default defineConfig({
compilation: {
input: { index: './index.html' },
},
});
基本の構成はViteに近く、Viteを触ったことがあれば設定の勘所はつかみやすいはずです。ReactやVueは公式プラグインを追加し、必要に応じてVite/Rollupのプラグインを組み合わせます。モジュールの読み込みはNative ESMを前提とするため、Native ESMとCommonJSの違いを押さえておくと設定でつまずきにくくなります。
Farmを選ぶべきか:2026年の判断
正直に言えば、いま新規プロジェクトの既定はVite(Rolldownを含む8系)で問題ありません。エコシステムも情報量も最大で、迷ったらViteが無難です。そのうえでFarmを積極的に選ぶ理由があるとすれば、次のような場合です。大規模プロジェクトでビルド・HMRの速度を限界まで詰めたい、Vite互換のまま別のバンドラ実装で挙動を比較検証したい、部分的バンドリングの分割戦略が自分たちの構成に噛み合う——こうした具体的な動機があるときです。逆に、単に「Rustで速いから」だけが理由なら、Vite 8で同じ速さの恩恵を、より広いエコシステムとともに得られます。ツールは、速さの数字ではなく、その資産で何が楽になるかで選ぶべきです。
よくある質問
Farmとは何の略ですか?農場やファームとは違いますか?
ここでのFarmは略語ではなく、Rust製Webビルドツールのプロジェクト名(farm-fe)です。英単語の農場やビジネス用語のファームとは無関係です。検索では一般語の「farm」と混ざりやすいため、ツールを指すときは「farm-fe」「Farm ビルドツール」と補うと確実です。
FarmとViteの違いは何ですか?
Farmは、Rust製でVite互換のプラグインAPIを持つ独立系のビルドツールです。Viteは事実上の標準で、8系からRust製バンドラRolldownを取り込み高速化しました。Farmの個性は部分的バンドリングという分割方式にあります。多くの現場ではViteで十分です。
Farmは本番環境で使えますか?
使えます。Farmは2024年以降に実用段階へ達し、本番ビルドに対応しています。ただし採用事例や日本語情報はViteほど多くないため、導入時は公式ドキュメントの確認が前提になります。
WebpackやViteから移行できますか?
FarmはViteのプラグインAPIに互換性があるため、Vite構成からの移行は比較的スムーズです。Webpackからの移行は設定思想が異なるため、Webpack互換を重視するならRspackも選択肢になります。