アプリのバンドルサイズを分析する

Recipe ID: perf-001

Tauri アプリの最終的なインストーラーサイズは、Rust のバイナリサイズとフロントエンドのアセットサイズの合計です。
それぞれの内訳を可視化し、肥大化の原因を特定します。

1. フロントエンドの分析 (Vite)

JavaScript/CSS およびバンドルされるライブラリのサイズを分析します。rollup-plugin-visualizer を使用します。

npm install -D rollup-plugin-visualizer

vite.config.ts:

import { defineConfig } from 'vite';
import { visualizer } from 'rollup-plugin-visualizer';

export default defineConfig({
  plugins: [
    // ...他のプラグイン
    visualizer({
      open: true, // ビルド後に自動でブラウザを開く
      filename: 'stats.html',
      gzipSize: true,
      brotliSize: true,
    }),
  ],
});

ビルドを実行すると stats.html が生成され、どのライブラリが大きいかが一目でわかります。

2. Rust バイナリの分析

cargo-bloat を使用して、コンパイル後のバイナリ内でどの関数や依存クレートが容量を食っているかを調査します。
まず、以下のコマンドでツールをインストールします。

cargo install cargo-bloat

インストール後、src-tauri ディレクトリで以下のコマンドを実行します。

# クレートごとのサイズ割合を表示
cargo bloat --release --crates

# もっと詳しい内訳(関数ごと)
cargo bloat --release -n 10

3. 依存関係ツリーの確認

不要な依存関係が意図せず含まれていないか確認します。

cargo tree
# 特定のパッケージがなぜ含まれているか逆引き
cargo tree -i <package_name>