Tauri 1.0がリリースされた
2022年6月19日(現地時間)、Web技術のHTML・CSS・JavaScriptを使ってデスクトップアプリを作成できるフレームワークとして開発が進められている「Tauri」のバージョンが1.0に到達したことが、Tauriの公式ブログで発表されました。9ヶ月のベータ版と4ヶ月のリリース候補版を経てバージョン1.0に達しました。
この記事では、Tauriを使ってみようと考えている方のために、Tauriの特徴や使用するメリット、先行する「Electron」との違いなどについて解説していきます。
【参考】:Tauri 1.0 Release | Tauri Apps
Tauriとは
Tauriはオープンソースで開発されている、デスクトッププラットフォームのアプリケーションを開発するためのツールキットです。Windows・iOS・Linuxなどのクロスプラットフォーム対応のデスクトップアプリを作成することができます。
同種のテクノロジーとして先行している「Electron」の優れた特徴を備えながら、さらに軽量で高い安全性を目指して開発されています。
Tauri開発者コミュニティでは、Tauri開発者が課題を提出したりワーキンググループに参加したり、寄付をするなど、Tauriの開発に貢献しています。
【参考】:What is Tauri? | Tauri Apps 【参考】:tauri/CONTRIBUTING.md at dev · tauri-apps/tauri · GitHub
Tauriの特徴
ここでは、Tauriが持つ特徴を紹介します。主な特徴としては、プログラミング言語としてRustを採用していること、クロスプラットフォーム対応、OS標準のブラウザでレンダリングすることなどが挙げられます。
プログラミング言語「Rust」を使用する
TauriのメインプロセスはRustで作成します。Rustは非常に高速でメモリ効率が良いことが特徴です。また、ガベージコレクションがないためパフォーマンスが高く、メモリ安全性とスレッド安全性にも優れています。
また、Tauriのアプリケーションのバックエンドは、フロントエンドがやり取り可能なAPIを備えた、Rust製のライブラリ群で構成されます。
【参考】:tauri - Rust 【参考】:Rustプログラミング言語
クロスプラットフォーム対応
Tauriは、Windows・macOS・Linuxに対応するクロスプラットフォームの開発が行えます。
Rust製のライブラリの1つである「TAO」がクロスプラットフォームアプリケーションウィンドウ作成を担っています。「TAO」は上記のOS以外にiOS、Androidにも対応しており、Tauriも将来的にこれらのOSを搭載したモバイルに対応することが計画されています。
【参考】:GitHub - tauri-apps/tao: The TAO of cross-platform windowing. A library in Rust built for Tauri.
OSが備えるWebView機能を利用する
Tauriは、レンダリングを行うためのレンダリングエンジンを同梱していません。TauriはRust製クロスプラットフォームWebViewレンダリングライブラリの「WRY」を使用することにより、レンダリングをOS標準のブラウザで行うことができます。
各OSのWebView機能として、WindowsではWebView2、macOSではWebKit、Linuxではgtk-rsを使用します。「WRY」の抽象化レイヤ経由でこれらを呼び出すことでOS間の差異を吸収し、クロスプラットフォームを実現するとともに、コンパクトで高速なユーザーインターフェースの構築が可能です。
【参考】:GitHub - tauri-apps/wry: Cross-platform WebView library in Rust for Tauri.
TauriとElectronの違い
Electronは、Tauriに先行するWindows・macOS・Linuxのデスクトップアプリ開発フレームワークです。Visual Studio CodeやTwitchなど、大手企業が提供するアプリでElectronを採用しているものも多くあります。ここでは、TauriとElectronの違いを解説します。
【参考】:Electron | JavaScript, HTML, CSSによるクロスプラットフォームなデスクトップアプリ開発
メインプロセスの記述言語
大きな違いの1つは、使用するメインプロセスの記述言語です。TauriはRustを使用しますが、ElectronはメインプロセスをJavaScriptで構築してNode.jsで実行しています。
これによりHTML・CSSとJavaScriptでデスクトップアプリの開発ができるため、デスクトップアプリ開発の経験が少ないWebアプリエンジニアでも取り組みやすいというメリットがあります。
【参考】:はじめに | Electron
ユーザーインターフェースのレンダリング方法
もう1つの違いとして挙げられるのは、ユーザーインターフェースのレンダリング方法です。
TauriがOS標準のWebView機能でレンダリングするのに対し、Electronはレンダリングのために、Chromiumブラウザを丸々内蔵しているのが大きな特徴です。ChromiumはGoogleChromeのベースとなったオープンソースのWebブラウザです。
Tauriのメリット
Tauriを使用するメリットとして、Electronに比べてプログラムサイズを小さく抑えることができ、効率的で安全性が高い、という点があります。
Tauriはプログラムサイズが小さい
Electronは、Node.jsとChromiumをアプリケーションにバンドルしますが、Tauriでは、アプリケーションにこれら2つを同梱する必要がありません。そのため、サイズが小さくなります。
TauriのGitHubで示されているElectronとの比較表によると、Linux版のインストールサイズはElectronが52.1MBであるのに対し、Tauriは3.1MBで済むとされています。
Tauriは効率的でパフォーマンスが高い
Tauriはメモリの消費量も少なく、Linux版ではElectronのメモリ消費量が462MB、Tauriは180MBです。また、起動時間もElectronが0.80秒、Tauriは0.39秒です。
また、TauriのブログではTauriの高パフォーマンスが環境に良い影響を与えると紹介しています。Tauriで作成されるアプリは無駄がなく高性能であるため、電力・ストレージのスペース・天然資源の消費が削減されるとし、アプリサイズが環境に与える影響に関する比較表を公開しています。
【参考】:Tauri 1.0 Release | Tauri Apps
Tauriは安全性が高い
Tauriを使うと、サーバーを使用してバックエンドと通信することなく、Web技術を利用したアプリケーションを構築することができます。そのため、一般的なWebアプリと比べてTCPポートや外部プロセスで通信を盗聴することができません。
また、Rustが持つメモリの安全性と速度は、従来型の攻撃を回避するのに役立ちます。また、開放したメモリに対してその脆弱性を突き、再びアクセス・実行することで悪用する「Use After Free」の脅威にさらされることがないとしています。
【参考】:Security | Tauri Apps/no-server-required 【参考】:Security | Tauri Apps/language-features-of-rust
WebView側の脆弱性対策が不要
もしもフレームワークがChromiumを組み込んでいると、Chromiumに何らかの脆弱性が見つかった場合、その脆弱性が修正されるのを待ってフレームワークも改修し、パッチを配布する必要があります。
しかし、TauriはChromiumなどのブラウザを組み込んでいないため、ブラウザの脆弱性に関する対策を行う必要がありません。アプリが使用するOSのWebView側で対策が行われれば、それで終了です。
TauriでWebベースデスクトップアプリを構築しよう
ここまで、Tauriの特徴や使用するメリット、Electronとの違いについて解説してきました。大手企業にも採用されているElectronの優れた基本的な特徴を備えながら、さらに軽量化や安全性の向上を目指したTauriは、バージョン1.0に到達したことで、今後さらに注目を集めることは間違いありません。
まだ使ったことがない方は、ぜひ1度試してみましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから