- 開発者は既存のMac向けElectronアプリ Desktop Docs を Rust で書き直し、結論として 正しい選択 だったとしている
- Electronで作った初期アプリは容量が 1GB と大きく、性能上の問題で 頻繁にクラッシュ していた
- 特に 大規模な画像・動画処理での性能低下 が問題だった
- Rust + Tauri で再構築した結果、アプリ容量は 83%減少、インデックス速度は 3倍以上改善、安定性も向上した
- アプリサイズ: 1GB → 172MB(83%減)
- インストーラ: 232MB → 69.5MB(70%減)
- 動画インデックス作成: 38分の動画で 10~14分 → 3分に短縮
- 不安定だったElectronアプリと比べてはるかに安定して動作
- 再構築の過程と選択
- Electronアプリはバックグラウンドでも Chromium自体が200MB以上のメモリを使用 し、さらに ビデオ通話でもクラッシュを誘発 していた
- 新しいアプリでもCLIP埋め込みとRedisベクトルストアはそのまま使用
- ただしRustで 画像・動画処理とファイルI/Oのパイプライン全体を書き直した
- UIも既存コードを移植するのではなく ゼロから作り直し、結果としてより クリーンでシンプルなインターフェース を実現した
- 技術的な難しさ
- Rustの学習曲線は高く、Tauriコミュニティはまだ Electronほど成熟していない
- Redisをアプリにバンドルする過程で 権限処理と配布の問題 があった
- それでもElectronより 全体的な制御性と性能は改善 された
- 結論
- 完全な機能同等性にはまだ達していないが、中核機能ははるかに高速かつ安定して動作 している
- 「動くが間違って作られたコードは、思い切って捨てるべきだ」
7件のコメント
Electron は Chromium を内蔵しており、Tauri は OS にインストールされたエンジンを使うという違いがあります。
Tauri(OS WebView)は軽量な配布と高速なパフォーマンスが必要なときに有利ですが、
セキュリティ、信頼性、機能制御が重要なサービスでは Electron(Chromium 内蔵)方式のほうがより適しています。
コードの問題はよく分かりませんが、プラットフォームの特性が大きく反映されるのだと思います。
Flutterなら、rinfもとても良いですよ。
Electronは使ったことがありますが、Tauriはまだ触ったことがないので、一度は使ってみるべきですね。
Hacker Newsの意見
Rustとeguiでデスクトップアプリを作っているのですが、Rustもデスクトップ開発も初めてなので、一度にあまりに多くの概念を学ぶのは大変だと感じています。私の分野は機械工学の解析ツールなので、バックエンドには高性能が必要で、フロントエンドにはデータ可視化が求められます。Tauriを使う際に、rust、js、html など複数のスタックを一緒に管理するのは大変ではなかったのか気になります
最近、TauriからElectronへプロジェクトを移した経験があります。複数プラットフォームで使われるWebViewのレンダリング差異のせいで頭を悩ませました。クロスプラットフォームでUIバグを経験したことがあるのか気になります。UI要件は単純で計算は複雑なので、QAコストがかかっても十分に見合うとは思っています。私の経験が珍しかったのか、それともレンダリング差異は本当によくある問題なのか知りたいです。そして、Tauriは1.0を使ったのか2.0を使ったのかも気になります。2.0は私がv1から移行している最中に正式版が出たのですが、マイグレーションは悪夢で、ドキュメントも本当に不足していました。今はドキュメントが充実しているのか気になります
私も似たような道をたどったことがあります。USB顕微鏡向けに最適化したシンプルなWebカメラビューアを作ったのですが、既存にまともなものがなかったので自作しました。ほぼすべての機能をレンダラーに実装しました。App Store提出の準備をしていて、500MBもあるWebカメラビューアはどうなんだと思い、Tauri V2に移植してサイズを15MB近くまで減らしました
このアプリの趣旨が本当に気に入りました。この分野の他のアプリはあまりに重くて使いにくいことが多いので、リライトには強い関心があります。ただ、私は写真家なので、扱うメディアの多くがRAW形式です。それに対応しているのか確信が持てません(あるいは「主要な画像・動画フォーマットすべて」と書きつつRAWが含まれていないのを見ると、たぶん違うのかもしれません)。こうした細部を確認できる公式ドキュメント、ユーザーフォーラム、そのほかのチャンネルがあるのか気になります
私はMacユーザーでもないですし、私たちのチームもRustへのリライトは検討していませんが、この投稿はとてもうれしかったです。「Show HN」には、まさにこのくらいの分量で、現実の問題を解決するために必要な技術的トレードオフを要約してくれる投稿を期待しています。ありがとう
Tauri、Flutter、Electron、React Native、そのほか現代的なクロスプラットフォームフレームワークを比較する最新のベンチマーク資料があると本当にありがたいと思います。主要指標としては、バンドルサイズ、メモリ使用量(RAM)、起動時間、高負荷時のCPU使用率、ディスク占有量などが考えられます。特にTauriのようにWebViewバージョンによってレンダリングやパフォーマンスが変わるフレームワークなら、プラットフォーム別(WebView2、WKWebViewなど)の互換性マトリクスもあるとよいと思います。こうした違いを視覚的に表で整理すれば、開発者はずっとよい選択ができるはずです
以前の会社では、WindowsとMac向けのデスクトップElectronアプリを保守していました。アプリがあまりに重く、Squirrelでアップデートするのも苦行でした。
最終的にはGUIはWeb SPA(Infernoベース)のままにして、WebViewの読み込みなどはそれぞれ小さなネイティブアプリ(C#とSwift)に置き換えました。その結果、ダウンロードサイズとメモリ使用量が約90%減り、各プラットフォームのApp Store経由で配布・更新する形へ移行しました。最高の決断だったと思います
更新承認の時間や不確実性が気になるのですが、Squirrelからネイティブへ移って改善した点があれば知りたいです
最終的なアプリがMac向けなら、なぜRust/Tauriを選び、Swift/SwiftUIではなくそちらを使ったのか本当に気になります
なぜeguiではなくTauriを選んだのか、そのきっかけが気になります。Electronの経験が理由でしょうか。私もPython QtアプリをRustに移植しようとしているのですが、まだRustのGUIライブラリはQtほど充実していないので、途中で行き詰まるのではないかと心配しています
メインのランディングページの「Try」ボタンを見ると、ユーザーは体験版があるように感じますが、実際にはそのまま購入に進みます。短くても1週間の体験版があるとよいと思います。
永続利用バックアップライセンスの方針は好きです。99ドルはかなり高い参入障壁ですが、クリエイターやスタジオ向けをターゲットにするなら妥当でしょうし、一般消費者向けなら20〜25ドルくらいがよさそうです。
記事では性能を強調していますが、ランディングページではまったく触れられていません。38分の動画のように、各種ベンチマーク、並列処理、VRAM要件といった情報も重要です。数百〜数千時間のメディアを処理する際に実際どうなのか気になります。
Electronで10〜14分かかっていた作業がTauriで3分になったというのは驚きです。ElectronがCLIPとffmpegを単にオーケストレーションしていただけなのに、どこでそんなオーバーヘッドが出るのか気になります。
以前、私もElectronで動画の文字起こしベースのメディア検索ツールを作りましたが、性能問題はそれほどありませんでした。
通常、ElectronやTauriを選ぶ理由はクロスプラットフォーム対応ですが、そもそもなぜMac専用なのか気になります(特に大容量メディア処理ならNVIDIAの活用もできるので)。
私も最近10年ぶりにSwiftを再び使い、Tauriと迷った末にSwiftを選びましたが(新規プロジェクトで)、2014年ごろに比べてものすごく進化していて、ほぼ快適でした。
アクティブユーザーに関するセクションが本当なら、すでにかなり成功しているように見えますが、以前からスタジオやクリエイター業界でネットワークやオーディエンスがあったのか気になります。マーケティング面の話も聞いてみたいです
似たようなツールを自作したとのことですが、なぜリリースしなかったのか気になります。
Windows版とLinux版も、需要があれば今後数か月以内に出す予定です。
ユーザーはHN、redditでのローンチ、一部のLinkedInプロモーションで獲得しました。ほとんどは口コミです。
Electronと動画処理性能の話は、深掘りするといろいろあります。私もElectronの専門家ではないので、workerをうまく使えておらず、それがボトルネックになっていた可能性もあります。
rustへ移行する際にシーン検出(scene detection)も導入し、インデックス化するフレーム数を減らすなどして、処理負荷を大きく下げました。ffmpegのGPUアクセラレーションオプションも追加して、性能がかなり向上しました。画像埋め込み生成もバッチ処理で最適化しました。ただし、無理をさせすぎるとモデルインスタンスがクラッシュすることもあります
HNにリンクされた性能比較表では、ほとんどのケースで Electron のほうが Tauri より優れているようですね....
コメントにある性能比較の内容は、そのリポジトリにある値のうち、Electronに有利な値を切り取った印象がかなりあります。多少の差はありますが、最も近い数値は「実行前の空きメモリと実行後の空きメモリの差」を比較した部分です。ただ、そのすぐ上の項目である実行中のメインプロセスと子プロセスのメモリ合計では、Electronが258Mと記録されている状況なので、実行前後のメモリ使用量の変化が91MBだという点は、にわかには納得しがたいように思います。HNの返信コメントでも、Tauriで作られたアプリの起動時間が7秒以上かかったとされており、リポジトリの測定値は信頼しにくいという内容がありました。
うーん、問題の大半は、Electron と Tauri の違いから生じるものというより、WebView エンジン + OS/ドライバの問題のほうが多いようです。