デスクトップアプリを個人開発するとき、TauriかElectronかで悩む人は多いと思う。SSHクライアントを作る過程で実際に両方触った上での感想をまとめておく。
最初はElectronで試作した。エコシステムが厚く、情報も多いので立ち上がりは早い。ただSSH接続を扱うアプリだと、すぐに2つの壁にぶつかった。
1つ目はメモリ消費。ターミナルセッションを複数開くと、Electronは1接続ごとに重くなっていく感覚があった。個人開発だと検証環境が限られるので気づきにくいが、実際にホストを10、20と登録して使うと差がはっきり出る。
2つ目は起動速度。Chromiumを丸ごと抱える構造上、コールドスタートがどうしても遅い。SSHクライアントは「サッと開いてサッと繋ぐ」道具であってほしいので、これは体感の満足度に直結した。
Tauriに切り替えた理由はここにある。バックエンドをRustで書き、フロントはWebview(OS標準のレンダラー)を使う構成なので、バイナリサイズも起動速度も大きく改善した。特に暗号化処理(AES-GCM、PBKDF2の鍵導出)をRust側に寄せられたのは大きい。JS側で機密情報を扱う面が減るので、設計としても素直になった。
ただしTauriにも学習コストはある。IPC(フロントとRust間の通信)の設計を最初から考えないと、後で機密情報がどこを経由しているか追いにくくなる。自分は「機密値 はRust側から出さない」というルールを早い段階で決めて、フロント側には表示用の最小限のデータしか渡さない構成にした。
結果として、起動は体感で3〜4倍速くなり、メモリも安定した。ネイティブに近い動きを求めるデスクトップツールで、かつ機密情報を扱うなら、今なら迷わずTauriを選ぶと思う。
同じようにRust/Tauriでデスクトップアプリを作っている人がいたら、IPC設計やパッケージング周りでハマったポイントをぜひ聞いてみたい。
ディスカッション
コメントはまだありません
関連記事
読み込み中...