macOSのデスクトップアプリを作りたい。ReactやVueが使いたい。でもElectronは重い……。
この記事では、Tauriを選んでmacOSアプリを7本リリースした経験から、TauriとElectronの実際の違いをまとめます。
結論(先に知りたい人向け)
| Tauri v2 | Electron | |
|---|---|---|
| バンドルサイズ | ◎ 5〜10MB | △ 150MB〜 |
| バックエンド言語 | Rust(学習コスト高) | JavaScript(そのまま) |
| macOS API | ○ Swiftサイドカー経由 | △ ネイティブアドオン |
| メモリ使用量 | ◎ 少ない | △ Chromium分重い |
| 開発速度 | △ Rustの学習が必要 | ◎ JSだけでOK |
| クロスプラットフォーム | ◎ Win/Mac/Linux | ◎ Win/Mac/Linux |
Rustを知っている or 学ぶ気がある → Tauri
今すぐJSで作りたい → Electron
Tauriを選んだ理由
私がTauriを選んだのは3つの理由です。
1. バンドルサイズが小さい
Electronは最低150MBのDMGになります。Tauriの私のアプリは最大でも10MB以下。有料アプリとして配布するとき、ダウンロードサイズは購入の意思決定に影響します。
2. Rustでバックエンドが書ける
PDF処理、暗号化、ファイル転送など重い処理をRustで書けるのは大きい。JavaScriptでは難しいパフォーマンスが出せます。
3. macOSネイティブAPIが使える
PDFKit(レンダリング)、Apple Vision(OCR)、FSEvents(ファイル監視)。これらはTauriから Swiftのサイドカーバイナリ経由で呼べます。
Tauriで苦労したこと
Rustの学習コスト
バックエンドをRustで書く必要があります。借用チェッカーに慣れるまで2〜3ヶ月かかりました。JavaScriptしか知らない場合は覚悟が必要です。
macOS固有APIへのアクセス
PDFKitやApple VisionをTauriから直接呼ぶことはできません。Swiftで小さなCLIバイナリを作って、Rustからそれを呼び出す構成が必要です。これは公式ドキュメントに書いていない部分で、自力で調べました。
Tauri v2のpermission設定
v2からpermissionシステムが変わりました。外部プロセスの実行、ファイル読み書きなど全てを明示的に許可する必要があります。設定が足りないと無言で失敗するので原因特定に時間がかかります。
8年前のMacBook Airでの比較
私の検証環境は**2017年製MacBook Air(Intel・8GB)**です。
| Tauri製アプリ | Electron製アプリ(参考) | |
|---|---|---|
| 起動時間 | 約1〜2秒 | 約3〜5秒 |
| メモリ使用量 | 50〜100MB | 200〜400MB |
| DMGサイズ | 5〜10MB | 150MB〜 |
古いMacほどこの差が体感として出やすいです。
どちらを選ぶべきか
Tauriがおすすめな人:
- Rustを知っている or 学ぶ意欲がある
- アプリのサイズ・パフォーマンスにこだわりたい
- macOSネイティブAPIを使いたい
Electronがおすすめな人:
- JavaScriptで素早く作りたい
- 既存のWebアプリをデスクトップ化したい
- Rustを学ぶ時間がない
どちらも「とりあえず動くもの」を作るのは難しくありません。長期的に何を重視するかで選ぶといいです。
X → @hiyoyok