Electronで作ったデスクトップアプリのインストーラーが100MBを超える。それは避けられない仕様ではありません。
2026年3月時点の最新バージョン「Tauri v2.10.3」を使えば、同じWebフロントエンド技術で3MB前後のバイナリを出力できます。この記事ではTauriの仕組みと主な機能、Electronとの違い、始め方を解説します。
この記事でわかること:
- TauriがElectronより大幅に軽量な理由
- Tauri 2.xで追加されたモバイル対応とプラグインシステム
- Electronとの性能比較(バンドルサイズ・メモリ・起動時間)
- インストールと最初のアプリ作成手順
https://github.com/tauri-apps/tauri
DesktopアプリにChromeごと同梱するElectronの代償
Electronは「一度書いてどこでも動かす」を実現するため、各アプリにChromiumエンジンとNode.jsランタイムをまるごと同梱します。このアーキテクチャのおかげでレンダリング結果がどのOSでも一致しますが、その代償として最低85MBのバンドルが避けられません。VS Code、Slack、Discordなど有名アプリの多くがElectron製である一方、起動の遅さやメモリの重さへの不満は開発者の間で長く語られてきました。
Stack Overflowの2025年開発者調査では、デスクトップアプリを開発する72%がフレームワークの乗り換えを検討したと回答しており、理由の上位がバンドルサイズとパフォーマンスでした。Tauriのリポジトリは前年比55%成長しているのに対し、Electronの成長は横ばいに転じています。
OSのWebViewを再利用するTauriのアーキテクチャ
TauriはChromiumを同梱する代わりに、OSが標準で持つWebViewを利用します。
| OS | 使用するWebView |
|---|---|
| Windows | WebView2(Chromiumベース) |
| macOS / iOS | WKWebView(WebKitベース) |
| Linux | WebKitGTK |
| Android | Android System WebView |
バックエンドはRustで実装されており、Node.jsの代わりとして動作します。フロントエンドはReact・Vue・Svelteなど、HTMLを出力できるフレームワークであればそのまま使えます。
Rustを使う利点は、ガベージコレクションなしでメモリ安全性を確保できる点です。アプリの起動時やアイドル時のリソース消費がNode.jsベースと比べて大幅に低くなります。
Tauri 2.xで追加されたモバイル対応
2024年後半に安定版となったTauri 2.0からは、iOS・Androidへのビルドが正式にサポートされました。同一コードベースからWindows・macOS・Linux・iOS・Androidの5プラットフォームに向けてバイナリを出力できます。Electronがデスクトップのみを対象にしているのと対照的な点です。
プラグインシステムも2.0で刷新されました。ファイルシステム操作(@tauri-apps/plugin-fs)やダイアログ表示(@tauri-apps/plugin-dialog)などの機能はRustクレートとして分離されており、必要なものだけをアプリに追加できます。tauri.conf.jsonでアプリが要求するAPIを明示的に宣言する設計のため、未申告のシステムAPIへのアクセスはIPCレベルでブロックされます。
Electron 34.xとの性能比較
2026年4月時点の最新バージョン同士(Tauri 2.x / Electron 34.x)を比較した独立ベンチマークの数値を示します。
| 指標 | Tauri 2.x | Electron 34.x |
|---|---|---|
| Hello Worldバンドルサイズ | 3.2 MB | 85 MB |
| 複合アプリサイズ | 8.6 MB | 244 MB |
| コールド起動時間 | 380 ms | 1,420 ms |
| アイドルメモリ(1ウィンドウ) | 42 MB | 168 MB |
| IPCラウンドトリップ | 0.12 ms | 0.45 ms |
| 初回ビルド時間 | 48 s | 22 s |
バンドルサイズは約25倍の差があり、メモリ消費は75%少なくなっています。一方、初回ビルド時間はElectronが2倍以上速いです。RustのコンパイルはJavaScriptより時間がかかるため、頻繁な変更と確認を繰り返す開発フェーズでは体感差が出ます。
バッテリー消費の実測では、MacBook Pro M3で同等の処理を行ったとき、Tauriは1時間あたり0.4%、Electronは2.1%を消費しました。8時間の作業で約13%のバッテリー差が生じる計算です(Open Web Foundation, 2026年1月)。
主な組み込み機能
Tauri v2.10.3が標準で提供する機能を挙げます。
- 自動アップデーター — アプリ内から更新をチェックして適用
- システムトレイアイコン — OSのタスクバー・メニューバーに常駐
- ネイティブ通知 — OSの通知APIに直接アクセス
- バンドラー —
.app・.dmg・.deb・.rpm・.exe・.msiを一括生成 - GitHub Actions連携 — CIパイプラインから配布物を自動ビルド
ライセンスはMITまたはApache 2.0のデュアルライセンスです。商用利用・個人利用ともに制約はありません。GitHubスター数は2026年4月時点で約90,000に達しています。
インストールと最初のアプリ作成
前提条件
- Rust(
rustupでインストール) - Node.js 18以上
- OSごとの依存ライブラリ(LinuxはWebKitGTKが必要)
プロジェクト作成
npm create tauri-app@latest
テンプレート選択のプロンプトが表示されます。フロントエンドフレームワーク(React・Vue・Svelte・Vanilla等)を選ぶと、Rustのバックエンドとwebフロントエンドが統合されたプロジェクトが生成されます。
開発サーバー起動
cd my-app
npm install
npm run tauri dev
ホットリロードに対応した開発ウィンドウが立ち上がります。
配布物ビルド
npm run tauri build
src-tauri/target/release/bundle/ 以下にOS向けのインストーラーが生成されます。
ElectronとTauriの使い分け
どちらを選ぶかは用途によります。
Tauriが向いているのは、配布サイズとメモリを重視する場合です。モバイルも対象にしたい、セキュリティ要件が厳しい企業向けツールを作る、といったケースに特に強みがあります。Rustの学習コストは発生しますが、バックエンドのロジックをTypeScriptで書きたい場合は、Tauriのコマンド機能を使ってRust側の処理を最小限に抑えることも可能です。
Electronが向いているのは、レンダリングの一貫性が最優先でプラットフォームごとの差異を一切許容できないプロジェクトです。Node.jsのエコシステムをそのまま活用したい場合や、既存のElectronアプリとコードを共有したい場合も移行コストが大きくなります。
Tauriのビルド時間の長さは、CI環境でのキャッシュ設定で大幅に短縮できます。Rustコンパイルは差分ビルドが3.5秒まで短縮されるため、インクリメンタルな開発への影響は限定的です。
まとめ
TauriはOSのWebViewとRustバックエンドを組み合わせることで、Electronと同じWebフロントエンド技術を使いながら96%小さいバイナリを実現しています。v2.10.3ではモバイルプラットフォームへのビルドにも対応しており、デスクトップとモバイルを一つのコードベースでカバーしたい開発者にとって現実的な選択肢になっています。
Rustの学習コストと初回ビルドの遅さはデメリットとして残りますが、配布サイズ・起動速度・メモリ消費の改善幅はどれも無視できない大きさです。新規プロジェクトでElectronを選ぶ前に、Tauriのトレードオフを検討する価値があります。