Skip to content

Rust & Tauriプロジェクトで5分で23GBのストレージを回収した方法

Harry
Lang
原文 中文
日本語

TauriRust でデスクトップアプリやWebアプリを開発していると、一度はこんな経験をしたことがあるのではないでしょうか。

MacやPCのストレージ容量が急に不足し、原因を調べるためにシステム設定やディスクアナライザーを開くと、プロジェクトリポジトリ内に巨大なフォルダ群を発見する瞬間です。

~/code/nextai-translator/src-tauri/target   --->  8.00 GB
~/code/lingoloop/src-tauri/target           --->  7.53 GB
~/code/yolo/src-tauri/target                --->  7.50 GB

たった 3つ のプロジェクトだけで 23 GB 以上 を占有しています!

心当たりがあってもパニックになる必要はありません。コードが肥大化しているわけではなく、これはRustのビルドシステムであるCargoが高速化のために用意している仕様です。しかし放置しておくと、Cargoは容赦なくSSD全体の容量を食いつぶしてしまいます。

この記事では、なぜこれが起こるのか、そして全プロジェクトでマルチギガバイトの target フォルダが作成されるのを防ぐ たった1行の設定 について解説します。


🔍 なぜCargoは大量の容量を消費するのか?

Rustはディスク使用量の最小化よりも 高速なコンパイル を優先します。cargo buildpnpm dev-tauri を実行すると、Cargoはバックグラウンドで以下のような重い処理を行います。

  1. deps/ (依存関係キャッシュ): 依存関係ツリー内のすべてのクレート(tokio, serde, tauri など)を静的オブジェクトファイル(.rlib, .dylib)にコンパイルします。重要:Cargoは古いバージョンの依存関係を自動削除しません。 ライブラリを更新すると、新旧両方のコンパイル済みファイルが deps/ 内に並んで残ります。
  2. デバッグシンボル: デバッグビルドには巨大なシンボルマップが含まれており、スタックトレースがサードパーティ製クレートの正確な行番号を指すようにします。
  3. incremental/ (増量コンパイラキャッシュ): 関数レベルのコンパイル状態を保存し、1行のコード変更に対する再ビルドを30秒から1秒に短縮します。
  4. build/: C/C++のネイティブビルド中間生成物(WebViewやOpenSSLのバインディングなど)を保存します。

これが4〜5個のプロジェクトに増えると、簡単に30〜50 GBもの容量が失われてしまいます。


🚀 解決策:グローバル共有 Target ディレクトリの設定

デフォルトでは、すべてのプロジェクトが独自の独立した target/ ディレクトリを作成します。つまり、プロジェクトAとプロジェクトBの両方が serdetauri を使用している場合、Cargoはそれらを 2回コンパイル し、別々の7GBフォルダを作成します。

Cargoに プロジェクト共通の 中央共有Targetディレクトリ を使用させることで、この問題を永久に解決できます。

ステップ 1: グローバル Cargo 設定を追加する

~/.cargo/config.toml のグローバルCargo設定ファイルを作成または編集します:

[build]
target-dir = "/Users/yourusername/.cargo/shared-target"

または、以下の1行のターミナルコマンドを実行します(yourusername をご自身のユーザー名に変更してください):

mkdir -p ~/.cargo && echo '[build]\ntarget-dir = "'"$HOME"'/.cargo/shared-target"' >> ~/.cargo/config.toml

これでどうなる?


🧹 ステップ 2: 古い Target フォルダを削除して容量を回収する

グローバル設定が有効になったら、各プロジェクトフォルダに残っている古い孤立した target フォルダを安全に一括削除できます:

# プロジェクト内の target フォルダを削除
rm -rf ~/code/*/src-tauri/target
rm -rf ~/code/*/target

一瞬で23GB以上の空き容量が復活! 🎉


🛠️ ボーナスヒント:複数プロジェクトの自動クリーンアップ

多数のRustプロジェクトを開発しており、古いビルドファイルを自動でスキャン・清掃したい場合は、cargo-clean-all をインストールします:

cargo install cargo-clean-all

# ~/code 内のすべてのRustプロジェクトをスキャンしてクリーンアップ
cargo-clean-all ~/code

まとめ

変更前変更後
各プロジェクトが ~7–10 GB の target/ フォルダを所持プロジェクトフォルダ内は 0 GB
プロジェクトごとに重複する依存関係をコンパイル共有キャッシュ内で依存関係のコンパイルは 1回のみ
どのプロジェクトが容量を圧迫しているか特定しにくいすべてのビルドキャッシュが ~/.cargo/shared-target に集約

SSDの空き容量に悩んでいるなら、2分で ~/.cargo/config.toml を設定してみてください。ストレージが劇的に快適になります!


参考になりましたら、ぜひ他のRust & Tauriデベロッパーにもシェアしてください! 🦀

Next
YoloにおけるProgrammatic Tool Calling:QuickJS WASMサンドボックスでのJavaScript実行