2026年前端避坑対照表:
Rspack/esbuild・リモート Mac のキャッシュと並列
レンタルリモート Macでは、バンドラ設定ミスが実時間とCI の不安定さに直結します。本稿は Rspack(webpack 型+filesystem キャッシュ)と esbuild(Go 並列)を対照し、キャッシュパス・環境変数・三歩の出荷ゲートをまとめます。Vite/Webpack キャッシュ最適化、モノレポ remote cache、Tailwind/PostCSS メモリと併用し、タスクとバンドラのキーを揃えてください。
01 シナリオとベースライン
大型モノレポ等をリモート Macでビルドする前提。APFS 上で sshd/GUI と I/O を共有し、CI 復元後の空きディスクも計測に含めます。コールドとウォーム(同一コミットの二回目本番)を分けてください。
ツールチェーンごとに四つを記録:コールド/ウォーム実時間、ピーク RSS、キャッシュ合計バイト。git SHA・ロックハッシュ・node -v と各ツール版をセットで残し、マージ後も再現できるようにします。
02 Rspack と esbuild の適用境界
Rspackはwebpack移行向け。深いローダー/splitChunks 等とfilesystem キャッシュ(適切設定時)が強みで、巨大グラフの増分を数日単位で温めたい場合の既定候補です。
esbuildは単発スループット重視。ライブラリ段階や CLI 変換に向き、webpack 型の永続モジュールキャッシュは持ちません。アプリ殻は Rspack、部分パッケージは esbuild、の併用が一般的です。
| 観点 | Rspack を優先 | esbuild を優先 |
|---|---|---|
| ローダー深度 | 重いカスタム/レガシー資産 | TS・JS 中心、薄い設定 |
| 永続化 | 長期ウォーム、CI 復元 | 短命ジョブ、層外キャッシュ |
| オーナー | webpack 経験チーム | 最小設定志向 |
03 コールド起動と増分の対照表
下表は受入メモです。パスは置換し、メジャー版ごとにキャッシュルートを分離して非互換ブロブの復元ミスを防ぎます。
| 項目 | Rspack(webpack 型) | esbuild |
|---|---|---|
| コールド | 初回はグラフ構築+読取コスト | 単発は速いが巨大木はディスク律速 |
| 増分 | filesystem+キーが効く |
モジュール永続は弱く、タスク層で省略 |
| キャッシュdir | node_modules/.cache/rspack または .rspack-cache 等 |
第一級はなし。CI/Turbo/Nx で成果物 |
| 永続スイッチ | cache: { type: 'filesystem', buildDependencies: { config: [__filename] } } |
コア無し。オーケストレーション側 |
| 並列 | Node 同時実行を制限(thread-loader 等) | export GOMAXPROCS=6 例 |
| ヒープ/pool | NODE_OPTIONS=--max-old-space-size=8192、必要なら UV_THREADPOOL_SIZE=16 |
Go 側は GOMAXPROCS を保守的に |
export NODE_OPTIONS="--max-old-space-size=8192"
export UV_THREADPOOL_SIZE=16
export GOMAXPROCS=6
8 コア級は 1〜2 コア空け、GOMAXPROCS とヒープは RAM に合わせて調整。
04 リモート Mac のディスクとメモリ閾値
ディスクと RAM は契約の一部。キャッシュはモジュール数とソースマップで膨らみ、共有ホストでは型検査・Lint 等と RSS が足し算になるためジョブ全体でピークを見ます。
| シグナル | 保守的な閾値 | アクション |
|---|---|---|
| 空きディスク | 中規模 25 GB+、世代多ければ 40 GB級 | .rspack-cache 整理、CI キー重複回避 |
| キャッシュ増加 | 依存無しで週 20%超は警告 | 設定ハッシュで無効化、sourcemap/資産を点検 |
| ピーク RSS | 24〜36 GB 共有機はRAM − 8 GB目安 | 並列低下・分割・シャード |
| スワップ | コンパイル中 2 GB超が持続 | Rspack+esbuild 同時を減らす |
05 リリース前の三歩受入と FAQ
ステップ1:リリース SHA でキャッシュを消し本番ビルドを一回。メジャー更新なしでコールドが前回比 +15% 超なら止めて差分調査。
ステップ2:直後に二回目。Rspack filesystem 時はコールド比 25〜40% 短縮が目安。効かなければパス・キー・スキャンを疑う。
ステップ3:GOMAXPROCS と Node 並列を抑え、ビルド中の SSH 体感が許容か確認。三つ通過で昇格。
Q:キャッシュを NFS に?
A:ローカル APFS 推奨。ネットワーク遅延で filesystem キャッシュが潰れやすいです。
Q:同一ジョブで常に並列?
A:RSS が閾値付近なら直列かシャード。余裕があるときだけ並列。
Q:Turbo と Rspack の関係?
A:Turbo はタスク出力、Rspack はバンドラ内モジュール作業。ロックと設定ハッシュでキーを揃える。
深いグラフとfilesystem キャッシュならRspack、単発高速とオーケストレーション側キャッシュならesbuild。コールド/ウォーム計測とディスク・RAM 余裕を守り、三歩ゲート後に出荷します。