Rust バイナリを最適化して小さくする

Recipe ID: perf-004

コンパイルオプションを調整し、アプリのバイナリサイズを劇的に削減します。
デフォルトの release プロファイルは実行速度を優先しますが、設定変更でサイズ優先にできます。

1. Cargo.toml の設定

src-tauri/Cargo.toml に以下のプロファイル設定を追加・修正します。

[profile.release]
# パニック時のスタックトレース情報を削除 (panic = "abort")
# ただしデバッグが困難になるため注意
panic = "abort" 

# 最適化レベル: "z" (サイズ最小) または "s" (サイズ優先)
opt-level = "z"

# Link Time Optimization (LTO): 全体を解析して不要コード削除を徹底
lto = true

# コード生成ユニット数を1にすると並列ビルドが無効になるが、圧縮率は上がる
codegen-units = 1

# デバッグシンボルを削除
strip = true 

2. UPX で圧縮する (非推奨・または注意が必要)

upx などの実行ファイル圧縮ツールを使うとさらに半分以下のサイズにできますが、以下の理由から推奨されないケースが増えています。
- ウイルス対策ソフトによる誤検知が増える
- 起動時の解凍オーバーヘッドで起動時間が遅くなる場合がある
- macOS での署名検証トラブル

どうしても極限まで小さくしたい場合のみ試してください。

3. 標準ライブラリの再コンパイル (build-std)

Rust の標準ライブラリ自体も最適化してビルドし直すことで、さらにサイズを削れます。
(Nightly ツールチェーンが必要です)

cargo +nightly build --release -Z build-std=std,panic_abort --target x86_64-pc-windows-msvc