22 ポイント 投稿者 GN⁺ 2025-05-29 | 7件のコメント | WhatsAppで共有
  • 開発者は既存のMac向けElectronアプリ Desktop DocsRust で書き直し、結論として 正しい選択 だったとしている
  • 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件のコメント

 
choyunsung79 2025-06-02

Electron は Chromium を内蔵しており、Tauri は OS にインストールされたエンジンを使うという違いがあります。

Tauri(OS WebView)は軽量な配布と高速なパフォーマンスが必要なときに有利ですが、
セキュリティ、信頼性、機能制御が重要なサービスでは Electron(Chromium 内蔵)方式のほうがより適しています。

コードの問題はよく分かりませんが、プラットフォームの特性が大きく反映されるのだと思います。

 
bus710 2025-05-30

Flutterなら、rinfもとても良いですよ。

 
aer0700 2025-05-29

Electronは使ったことがありますが、Tauriはまだ触ったことがないので、一度は使ってみるべきですね。

 
GN⁺ 2025-05-29
Hacker Newsの意見
  • Rustとeguiでデスクトップアプリを作っているのですが、Rustもデスクトップ開発も初めてなので、一度にあまりに多くの概念を学ぶのは大変だと感じています。私の分野は機械工学の解析ツールなので、バックエンドには高性能が必要で、フロントエンドにはデータ可視化が求められます。Tauriを使う際に、rust、js、html など複数のスタックを一緒に管理するのは大変ではなかったのか気になります

  • 最近、TauriからElectronへプロジェクトを移した経験があります。複数プラットフォームで使われるWebViewのレンダリング差異のせいで頭を悩ませました。クロスプラットフォームでUIバグを経験したことがあるのか気になります。UI要件は単純で計算は複雑なので、QAコストがかかっても十分に見合うとは思っています。私の経験が珍しかったのか、それともレンダリング差異は本当によくある問題なのか知りたいです。そして、Tauriは1.0を使ったのか2.0を使ったのかも気になります。2.0は私がv1から移行している最中に正式版が出たのですが、マイグレーションは悪夢で、ドキュメントも本当に不足していました。今はドキュメントが充実しているのか気になります

    • 私たちは kreya.app でシステムWebViewを自前実装して使っています(つまりTauriではありません)が、プラットフォーム差異は実際にはほとんど問題になっていません。大半はポリフィルで解決でき、Linuxでend to end自動テストを回してほとんどの問題を見つけています。いちばん大変なのは、ユーザーのWebViewバージョンがどれだけ古いかを把握することです。LinuxとMacではこれが大きな問題で、WindowsはWebView2のおかげでかなりましです
    • 実は、まだTauri版でクロスプラットフォーム配布はしていないので、これから確認する予定です。幸いUI要件は単純です。Tauriでどんなレンダリング差異があったのか気になります。アプリではどのプラットフォームがいちばんうまく動いたのか、あるいは問題が出たのかも知りたいです。私たちもWindows対応を望んでいます。Electron版では、MacのIntelチップでバンドル済みバイナリの実行に問題があり、これがあまりに厄介だったので、Tauriでリビルドする際はまずMac(Apple chip)1プラットフォームに集中することにしました。Tauri 1.4で進めていて、今のところ問題はありません。2.0のマイグレーション文書も今後確認する予定です
    • クロスプラットフォームUIバグを経験したかという質問については、当然ながらまだMacしかサポートしていないので該当しません。もしWindowsやLinuxまでサポートしようとしていたら、この投稿自体できなかったと思います。クロスプラットフォームUIは本当に難しく、同じUIと機能セットを維持しつつオンライン版まで視野に入れると、なおさら難しくなります。だから皆、ネイティブからQt、Webスタックへ移っていったのです。私の経験では、数百万ユーザー規模のクロスプラットフォームデスクトップアプリを開発する会社で働いていますが、他のやり方は想像もできません
    • 6か月ほど前にTauri V2を使ったとき、ドキュメントは完全にひどい状態でした。プロジェクト自体は有望ですが、参照できるものがなく、まともに実装するのは本当につらかったです
    • 最近Tauriがこうした発表をしていました。今年、CEFやSERVOベースのWebViewなど新技術を披露する予定だとDiscordで告知していました
  • 私も似たような道をたどったことがあります。USB顕微鏡向けに最適化したシンプルなWebカメラビューアを作ったのですが、既存にまともなものがなかったので自作しました。ほぼすべての機能をレンダラーに実装しました。App Store提出の準備をしていて、500MBもあるWebカメラビューアはどうなんだと思い、Tauri V2に移植してサイズを15MB近くまで減らしました

    • TauriとElectronの違いが気になります。私の理解では、どちらもレンダリングにブラウザを使いますが、Electronはブラウザ全体を同梱し、Tauriはシステムにすでにあるブラウザを使います
    • 本当にすごいと思います。どんな製品なのか気になります。私たちも今週App Store提出の準備をしています
  • このアプリの趣旨が本当に気に入りました。この分野の他のアプリはあまりに重くて使いにくいことが多いので、リライトには強い関心があります。ただ、私は写真家なので、扱うメディアの多くがRAW形式です。それに対応しているのか確信が持てません(あるいは「主要な画像・動画フォーマットすべて」と書きつつRAWが含まれていないのを見ると、たぶん違うのかもしれません)。こうした細部を確認できる公式ドキュメント、ユーザーフォーラム、そのほかのチャンネルがあるのか気になります

  • 私はMacユーザーでもないですし、私たちのチームもRustへのリライトは検討していませんが、この投稿はとてもうれしかったです。「Show HN」には、まさにこのくらいの分量で、現実の問題を解決するために必要な技術的トレードオフを要約してくれる投稿を期待しています。ありがとう

    • 経験を共有できてうれしいです。すでに動いているものをリビルドするという決断は簡単ではありませんでしたが、結果的には満足しています
  • Tauri、Flutter、Electron、React Native、そのほか現代的なクロスプラットフォームフレームワークを比較する最新のベンチマーク資料があると本当にありがたいと思います。主要指標としては、バンドルサイズ、メモリ使用量(RAM)、起動時間、高負荷時のCPU使用率、ディスク占有量などが考えられます。特にTauriのようにWebViewバージョンによってレンダリングやパフォーマンスが変わるフレームワークなら、プラットフォーム別(WebView2、WKWebViewなど)の互換性マトリクスもあるとよいと思います。こうした違いを視覚的に表で整理すれば、開発者はずっとよい選択ができるはずです

    • 2週間前に公開された最新の比較資料があります。web-to-desktop-framework-comparison で確認できます。Electronはランタイム性能ではかなり競争力があります。ディスク容量よりメモリ使用量のほうを気にするべきだと思います。
      • Windows(x64)のメモリ使用量(シングルウィンドウ、リリースビルド):
      1. Electron: 約93MB
      2. NodeGui: 約116MB
      3. NW.JS: 約131MB
      4. Tauri: 約154MB
      5. Wails: 約163MB
      6. Neutralino: 約282MB
      • Mac(arm64):
      1. NodeGui: 約84MB
      2. Wails: 約85MB
      3. Tauri: 約86MB
      4. Neutralino: 約109MB
      5. Electron: 約121MB
      6. NW.JS: 約189MB
      • Linux(x64):
      1. Tauri: 約16MB
      2. Electron: 約70MB
      3. Wails: 約86MB
      4. NodeGui: 約109MB
      5. NW.JS: 約166MB
      6. Neutralino: 約402MB
    • こういう比較資料をもっと見たいです
  • 以前の会社では、WindowsとMac向けのデスクトップElectronアプリを保守していました。アプリがあまりに重く、Squirrelでアップデートするのも苦行でした。
    最終的にはGUIはWeb SPA(Infernoベース)のままにして、WebViewの読み込みなどはそれぞれ小さなネイティブアプリ(C#とSwift)に置き換えました。その結果、ダウンロードサイズとメモリ使用量が約90%減り、各プラットフォームのApp Store経由で配布・更新する形へ移行しました。最高の決断だったと思います

    • ネイティブApp Store経由の配布・更新を褒める人はほとんど初めて見ました。
      更新承認の時間や不確実性が気になるのですが、Squirrelからネイティブへ移って改善した点があれば知りたいです
    • 切り替えにはどれくらい時間がかかったのか気になります
  • 最終的なアプリがMac向けなら、なぜRust/Tauriを選び、Swift/SwiftUIではなくそちらを使ったのか本当に気になります

    • 確認ありがとうございます。Desktop Docsの目標はクロスプラットフォームです。Windows対応の要望が多かったので、将来のWindows版を見据えてRustを選ぶことになりました
    • 私も同じ質問をしたかったです。Swiftはかなり良い言語ですし、Rustに近い長所も多いと思います。CLIP統合の話も気になりますし、移植の話もとても良かったです
    • 私も気になります。近いうちにデスクトップアプリを作ろうとしているのですが、Swiftは長く使っておらず、Rustもほんの少ししか分かりません。Tauriはとても魅力的に見えます。Electronアプリは、どれだけ高速なPCでも起動が遅すぎます。インサイトを共有してくれて感謝します
  • なぜ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アクセラレーションオプションも追加して、性能がかなり向上しました。画像埋め込み生成もバッチ処理で最適化しました。ただし、無理をさせすぎるとモデルインスタンスがクラッシュすることもあります
 
secret3056 2025-05-29

HNにリンクされた性能比較表では、ほとんどのケースで Electron のほうが Tauri より優れているようですね....

 
majorika 2025-05-29

コメントにある性能比較の内容は、そのリポジトリにある値のうち、Electronに有利な値を切り取った印象がかなりあります。多少の差はありますが、最も近い数値は「実行前の空きメモリと実行後の空きメモリの差」を比較した部分です。ただ、そのすぐ上の項目である実行中のメインプロセスと子プロセスのメモリ合計では、Electronが258Mと記録されている状況なので、実行前後のメモリ使用量の変化が91MBだという点は、にわかには納得しがたいように思います。HNの返信コメントでも、Tauriで作られたアプリの起動時間が7秒以上かかったとされており、リポジトリの測定値は信頼しにくいという内容がありました。

 
wfedev 15 일 전

うーん、問題の大半は、Electron と Tauri の違いから生じるものというより、WebView エンジン + OS/ドライバの問題のほうが多いようです。