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も選択肢になります。

関連記事

資料請求

RELATED POSTS 関連記事