DeskTop Application Tauri

Tauriとは
Rustで書かれたデスクトップアプリケーション開発のツールキットです。Reactなどのフロントエンドのフレイムワークをそのまま使うことができるため、Webアプリケーションを実装コストをかけずにデスクトップアプリケーション化することができます。その上でOS関連の機能(ファイルの保存、編集や通知機能)にアクセスする際にはRustの関数を作成し、UI側から呼び出します。
同様のElectronに比べinstallerとメモリ使用量が少ないのが特徴です。これによりパフォーマンスではElectronより優位にあります。
Architecture
The Core Process
のみがOSにアクセスでき、WebViewと呼ばれるUIとはevent/commandを用いて通信されます。
The WebView Process
UIをレンダリングし、HTML/CSS/Javascriptなどを実行することができます。またWebViewのライブラリはexecutableに含まれません。
Inter-Process Communication (IPC)
バックエンドとの通信方法は以下の2種類があります。
Events
一方向の通信でcore process, webviewどちらからも送ることができます。ステートの管理などに使われます。

Commands
メインのapiで双方向への通信ができ、ブラウザのfetch apiのような役割をします。

Develop
webアプリケーションからTauriを用いてデスクトップアプリケーションにするのにTauri、Rustのインストール、各OS向けへのビルドのみでWebアプリケーションと挙動が変わらずデスクトップアプリケーションとして動作します。このため、OSに関わる機能(ファイル、通知、キーボードショートカット、プロセス、システムシェルなど)を使わない場合は実装コストをかけずにWebアプリケーションからデスクトップアプリケーションを作成することが可能です。
イメージ

Build
https://tauri.studio/v1/guides/building/現時点ではcross-compilationができないため、それぞれのosでのみビルド可能つまりLinuxでwindows用のapplication bundleをビルドすることはできません。
ビルドのベストプラクティスはGitHub Actions などCI/CDのツールを用いて各OS用にビルドし、GitHub Actionsに関してはワークフローのテンプレートがあります。
使用例
アプリケーション内で使用するファイルをローカルで管理することができる
コード
コマンドを用いてRustの関数をUIから呼び出すことが可能
Rust
Javascript
所感
Tauriのおかげでフロントエンドの技術をそのままデスクトップアプリケーション開発に活かすことができることからデスクトップアプリケーション開発の敷居を下げ、Javascriptでできることがさらに広がったという印象を受けました。