Rust バックエンドパターン
堅牢なデスクトップアプリケーションを構築するための Tauri v2 Rust バックエンドパターンの概要。
このセクションでは、Tauri v2 アプリケーション向けの実戦で検証済みの Rust バックエンドパターンを扱う。これらのパターンはフレームワーク固有の理論ではなく、実際のプロダクションアプリから生まれたものであり、実際に遭遇する問題に対処するものである。
ここで扱う内容
Mutex の安全性
Tauri コマンドは State<AppState> を通じて共有状態を受け取る。この状態は通常 Mutex で保護されており、誤った使い方をするとアプリケーションがクラッシュする。Mutex の安全性ページでそのルールを解説する。
外部編集検知付き設定キャッシュ
すべての IPC 呼び出しでディスクから設定を読み込むのは無駄であるが、単純なキャッシュではユーザー(または別のアプリケーション)が外部でファイルを編集した場合に正しく動作しない。設定キャッシュページでは、mtime ベースのキャッシュ無効化戦略を示す。
デバウンス付きファイルウォッチャー
ファイルシステムウォッチャーは高速かつ重複してイベントを発火する。ファイルウォッチャーページでは、汎用的なデバウンス付き監視ループ、バックグラウンドスレッドの Send 安全性パターン、アプリの書き込みと外部変更を区別するための書き込みマーカーを扱う。
メニューイベントハンドラー
on_menu_event はメインスレッドで実行される。ブロックするとアプリケーション全体がフリーズする。メニューイベントページでは、メニューハンドラーからバックグラウンド処理を生成する正しいパターンを示す。
ウィンドウ管理
プログラムによるウィンドウ生成により、スプラッシュスクリーン、開発サーバーのポーリング、プラットフォーム固有の動作を制御できる。ウィンドウ管理ページでは、ウィンドウのライフサイクル全体を扱う。
外部ツールのプレビュー/承認/キャンセルアクション
モノリポのデスクトップアプリは Tauri シェルと共に独自の CLI ツールを同梱することが多い。外部ツールアクションページでは、バンドルされた Node CLI をワンショットのサブプロセスとして実行し、システム一時ディレクトリに出力をステージングし、破壊的なファイル上書きをユーザーの明示的な操作下に置くプレビュー → 承認 → キャンセルの契約を組む方法をカバーする。
OS 設定ディレクトリへの設定の永続化
グローバルなアプリ設定はバイナリの隣ではなく、OS 標準のユーザーごとの設定ディレクトリに保存すべきである。設定の永続化ページでは、dirs クレートを使った settings.json の読み書き、ファイルが破損した場合のデフォルト値へのフォールバック、保存前のパス検証を扱う。
一般的なアーキテクチャ
典型的な Tauri v2 Rust バックエンドは以下の構造に従う:
src/
main. rs # Builder setup, invoke_ handler, setup()
state. rs # AppState definition (Mutex- wrapped fields)
commands/
mod. rs # Module declarations
files. rs # File operation commands
settings. rs # Settings read/ write with cache
watchers. rs # File watcher management
terminal. rs # PTY/ process commands
workspace. rs # Workspace switching
native/
mod. rs # Module declarations
menu. rs # Menu creation and event handlers
window. rs # Window creation and lifecycle
dialog. rs # Native dialogs
helpers/
. . . # Utility functions主要なアーキテクチャ上の判断:
単一の
AppState構造体 -- すべての共有状態をMutexフィールドの背後に配置Arc ラッピング --
AppStateをArcでラップすることで、Tauri ランタイムとバックグラウンドスレッド(例:HTTP サーバー)間で共有可能にする専用モジュールのコマンド -- 各コマンドモジュールは一つのドメインに集中する
プラットフォーム固有のコード は
#[cfg(target_os = "macos")]ガードの背後に配置