Electronの代替を目指す軽量なRust製フレームワーク「Tauri」、リリース候補版に到達
WindowsやmacOS、Linuxなどのクロスプラットフォーム対応のデスクトップアプリ開発を容易にするフレームワークとして高い人気を持つフレームワークが「Electron」です。
ElectronはChromiumとNode.jsを用いることで、HTML/CSS/JavaScriptのWebテクノロジーによってデスクトップアプリケーションを開発できるのが最大の特徴です。
いまやElectronは、Visual Studio CodeやMicrosoft Teams、Slack、GitHub Desktop、そして最近話題のNotionなど、さまざまなアプリケーションに採用されています。
このElectronの優れた特徴を備えつつ、よりメモリ消費量が小さくファイルサイズもコンパクトで、高いセキュリティを備え、柔軟なライセンスを実現しようと開発されたのが「Tauri」です。
Tauriは、時期未定ながらiOSとAndroidにも対応する計画があります。これが実現すれば、モバイルも含めたクロスプラットフォーム対応のフレームワークとなります。また、バックエンドにDenoをバインドできるようにする計画もあります。
Tauriはこれまでベータ版として開発が続けられてきましたが、開発チームは先月にリリース候補版への到達を発表しました。今年第1四半期中には正式版となる安定版が登場予定ですので、予定通りに開発が進めば、今月中にWindows、macOS、Linuxに対応した正式版がリリースされるでしょう。
Read all about the release of Tauri's 1.0.0-rc.0 https://t.co/GrGtvDiUdh
— Tauri (@TauriApps) February 10, 2022
TauriはElectronの代替を目指す軽量なフレームワーク
TauriはRust言語で開発されており、Electronと比較してファイルサイズもメモリ容量も小さい点が特徴であると開発チームが強調しています。
GitHubにはElectronとの比較表が示されています。それによるとLinux版のインストールサイズがElectronで52.1MBのところ、Tauriは10分の1以下のわずか3.1MB。同じくLinux版でのメモリ消費量はElectronが462MBのところ、Tauriは半分以下の180MBとなっています。
起動時間もElectronの0.80秒に対してTauriは0.39秒です。
これはTauriの開発チームによる比較なのでその分を割り引いて見るべきですが、それでもTauriが軽量であることは見て取れます。
Tauriがこのように軽量なのは、最初から効率よくリソースを使うように設計されてRustで実装されていることに加えて、Electronとは異なりChromiumを組み込んでいないことが大きな理由として挙げられるでしょう。
Electronはフロントエンドの基盤としてChromiumを組み込んでいますが、Tauriでは代わりにOSが備えているWebViewの機能を、抽象化レイヤのwry経由で呼び出すことで、クロスプラットフォームを実現しつつChromiumを不要にしています。
OSネイティブのWebView機能は、WindowsではWebView2、macOSではWebKit、Linuxではgtk-rsがそれに該当します。ただしすべてのプラットフォームでChromiumを使うElectronと比べると、プラットフォームごとに微妙にレンダリング結果が異なる、といったことが発生する可能性はありそうです(互換性についてはかなり改善されては来ましたが)。
フレームワーク内にChromiumを組み込まないことでセキュリティも向上すると、Tauri開発チームは説明しています。例えば、Chromiumに何らかの脆弱性が見つかった場合、Chromiumが組み込まれたフレームワークであれば、Chromiumで脆弱性が修正されたあとでフレームワークに対する修正を行い、その後にパッチを配布しなければなりません。
これは脆弱性の発見からパッチの配布までのステップ数が多く、時間がかかります。
一方、フレームワーク内にChromiumなどを組み込んでいなければフレームワーク側で対応する必要がなく、WebView側の脆弱性対応が済めばそれで終わりです。
Tauriの開発チームはこのように、自分たちがElectronの課題だと考えている部分の改善を反映させた設計と実装をTauriで実現しようとしています。
先日発表された「The State of JS 2021」では、まだTauriの人気はそれほどでもないようなのですが、正式版のリリースが近づいていることもあり、人気の高いElectronを代替し得る存在として、これから注目されるフレームワークになるのではないでしょうか。
関連記事
2022年6月16日に正式版としてバージョン1.0がリリースされました。
あわせて読みたい
スクラムガイドに新たに追加された「プロダクトゴール」とは? あるいはプロダクトゴールの設定には何が必要か?(前編) Regional Scrum Gathering Tokyo 2022
≪前の記事
Amazon S3、データの整合性確認を最大90%高速化。新たなオブジェクトのチェックサムアルゴリズム追加で