1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Tauri vs Electron、個人開発でmacOSアプリを作るならどっち?半年使って分かったこと

1
Posted at

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?