ドキュメントに戻る
デプロイメント

Tauri v2開発ガイド

Tauri v2のプロジェクトレイアウト、コマンド、機能ベース権限。

10分 で読めます

PlanToCodeはデスクトップアプリケーションにTauri v2を使用しています。このガイドはプロジェクト構造、コマンドシステム、機能ベース権限、開発ワークフローをカバーします。

プロジェクトレイアウト

デスクトップアプリケーションは標準的なTauri v2の慣例に従います:

  • desktop/src/:コンポーネント、フック、プロバイダーを含むReactフロントエンド
  • desktop/src-tauri/:コマンド、ジョブ、サービスを含むRustバックエンド
  • desktop/src-tauri/src/lib.rs:アプリケーションエントリポイント
  • desktop/src-tauri/src/commands/:Tauriコマンドハンドラー(約35モジュール)
  • desktop/src-tauri/capabilities/:権限定義
  • desktop/src-tauri/tauri.conf.json:Tauri設定

Tauri設定

tauri.conf.jsonがアプリケーションを設定します:

  • productName、version、identifierでアプリメタデータ
  • build.beforeDevCommandとbeforeBuildCommandでフロントエンド
  • インストーラー(DMG、NSIS、AppImage)用のbundle設定
  • Content Security Policy用のsecurity.csp
  • 公式プラグイン用のplugins設定

機能ベース権限

Tauri v2は機能を使用してアプリがアクセスできるものを制御します:

  • default.json:すべてのウィンドウの基本権限
  • desktop-default.json:デスクトップ固有の権限
  • plantocode-api.json:PlanToCodeコマンド用のカスタム権限
  • 権限が付与するアクセス:filesystem、shell、http、dialog、notification

Tauriプラグイン

PlanToCodeは複数の公式Tauriプラグインを使用します:

  • tauri-plugin-http:APIコール用HTTPクライアント
  • tauri-plugin-dialog:ネイティブファイル/フォルダーピッカー
  • tauri-plugin-shell:シェルコマンド実行
  • tauri-plugin-store:永続的キーバリューストレージ
  • tauri-plugin-notification:デスクトップ通知
  • tauri-plugin-updater:アプリ内更新
  • tauri-plugin-single-instance:シングルインスタンス強制

アプリケーション状態

Tauriの状態システムを通じて管理されるRust状態:

  • AppState構造体が共有状態を保持
  • サーバーURLとフィーチャーフラグ用のRuntimeConfig
  • 安全な認証情報ストレージ用のTokenManager
  • AIモデル設定用のConfigCache

コマンドの作成

TauriコマンドがRust関数をフロントエンドに公開します:

  • async関数に#[tauri::command]属性を使用
  • エラー処理にResult<T, String>を返す
  • State<AppState>パラメータ経由で状態にアクセス
  • lib.rsのinvoke_handlerに登録

シングルインスタンス

アプリはデータ競合を防ぐためにシングルインスタンスを強制します:

  • tauri-plugin-single-instanceが検出を処理
  • 2回目の起動で既存ウィンドウにフォーカス
  • ディープリンクが実行中インスタンスに転送

開発ワークフロー

開発用の一般的なコマンド:

  • pnpm tauri dev:ホットリロード付きで開発開始
  • pnpm tauri build:本番リリースをビルド
  • cargo test:Rustテストを実行
  • cargo clippy:Rustコードをリント

モバイルの考慮事項

Tauri v2はモバイルをサポートしますが、PlanToCodeはネイティブSwiftを使用:

  • iOSアプリはネイティブエクスペリエンス用にSwiftUIで構築
  • デスクトップとモバイル間で共有APIコントラクト
  • WebSocketリレー経由のデバイスリンク

配布

各プラットフォーム用のビルドアーティファクト:

  • macOS:ユニバーサルバイナリ付き.dmg(Intel + Apple Silicon)
  • Windows:NSISインストーラーとMSIXパッケージ
  • Linux:広い互換性のためのAppImage