tauri について
Rust と WebView で Tauri アプリを開発する人向けの、ドキュメントを基にしたスキルです。設定、プラグイン、デバッグ、セキュリティ、モバイル開発、配布を扱います。
主な機能
- 01プロジェクトの初期設定
- 02Rust と WebView 間の IPC ガイド
- 03ネイティブ・モバイルプラグインのガイド
- 04デバッグと DevTools の資料
- 05セキュリティと権限の実践方法
- 06コード署名とリリースのガイド
活用シーン
- 01Tauri アプリの開発開始
- 02フロントエンドから Rust コマンドを呼び出す実装
- 03Android または iOS プラグインの開発
- 04署名済みアプリのリリース準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ microck/ ordinary-claude-skills --skill tauriインストール後、Claude Code で/tauriを入力して読み込まれたか確認します。
同梱ファイルmetadata.json
詳細
Tauri スキル
公式ドキュメントをもとに作成された、Tauri 開発を包括的に支援するスキルです。
このスキルを使用するタイミング
次の場合に、このスキルを使用してください。
- Rust + WebView でクロスプラットフォームのデスクトップアプリケーションを構築する場合
- ネイティブのシステム連携(ファイルシステム、通知、システムトレイ)を実装する場合
- Tauri プロジェクトの構成と設定を行う場合
- VS Code または Neovim で Tauri アプリケーションをデバッグする場合
- 配布用の Windows/macOS/Linux コード署名を設定する場合
- Tauri でモバイルアプリ(Android/iOS)を開発する場合
- 独自のネイティブ機能を備えた Tauri プラグインを作成する場合
- フロントエンドとバックエンド間の IPC(プロセス間通信)を実装する場合
- Tauri アプリのセキュリティと権限を最適化する場合
- Tauri アプリのリリース用に CI/CD パイプラインを設定する場合
主な概念
マルチプロセスアーキテクチャ
Tauri は コアプロセス(Rust)と WebView プロセス(HTML/CSS/JS)からなるアーキテクチャを採用しています。
- コアプロセス:ウィンドウ、システムトレイ、IPC ルーティングを管理し、OS への完全なアクセス権を持ちます
- WebView プロセス:システムの WebView を使用して UI を描画します(ブラウザーはバンドルされません!)
- 最小権限の原則:各プロセスに必要最小限の権限を付与します
プロセス間通信(IPC)
IPC のプリミティブは 2 種類あります。
- イベント:送信後に応答を待たない一方向のメッセージ(コア → WebView、WebView → コアの両方)
- コマンド:
invoke()API を使用するリクエスト/レスポンスパターン(WebView → コアのみ)
Tauri を選ぶ理由
- 小さなバイナリ:OS の WebView(Microsoft Edge WebView2/WKWebView/webkitgtk)を使用します
- セキュリティを最優先:メッセージパッシングアーキテクチャにより、関数への直接アクセスを防ぎます
- マルチプラットフォーム:デスクトップ(Windows/macOS/Linux)+ モバイル(Android/iOS)
クイックリファレンス
1. プロジェクトのセットアップ - Cargo.toml
[build-dependencies]
tauri-build = "2.0.0"
[dependencies]
tauri = { version = "2.0.0" }
2. Windows コード署名の設定
{
"tauri": {
"bundle": {
"windows": {
"certificateThumbprint": "A1B1A2B2A3B3A4B4A5B5A6B6A7B7A8B8A9B9A0B0",
"digestAlgorithm": "sha256",
"timestampUrl": "http://timestamp.comodoca.com"
}
}
}
}
3. VS Code でのデバッグ - launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Tauri Development Debug",
"cargo": {
"args": [
"build",
"--manifest-path=./src-tauri/Cargo.toml",
"--no-default-features"
]
},
"preLaunchTask": "ui:dev"
}
]
}
4. Rust の状態管理
let data = app.state::<AppData>();
5. GitHub Actions - 公開ワークフロー
name: 'publish'
on:
push:
tags:
- 'app-v*'
6. Trunk の設定(Rust フロントエンド)
# Trunk.toml
[watch]
ignore = ["./src-tauri"]
[serve]
ws_protocol = "ws"
7. Azure Key Vault 署名(relic.conf)
[server.azurekv]
url = "https://<KEY_VAULT_NAME>.vault.azure.net/certificates/<CERTIFICATE_NAME>"
8. カスタム署名コマンド(tauri.conf.json)
{
"tauri": {
"bundle": {
"windows": {
"signCommand": "relic sign -c relic.conf -f -o \"%1\""
}
}
}
}
9. DevTools をプログラムから開く
use tauri::Manager;
#[tauri::command]
fn open_devtools(window: tauri::Window) {
window.open_devtools();
}
10. モバイルプラグイン - Android コマンド
@Command
fun download(invoke: Invoke) {
val args = invoke.parseArgs(DownloadArgs::class.java)
// Command implementation
invoke.resolve()
}
参考ファイル
このスキルには、9 つのカテゴリに整理された包括的なドキュメントが含まれています。
core_concepts.md
内容: 基本的なアーキテクチャを解説する 7 ページ
- プロセスモデル:マルチプロセスアーキテクチャ、コアプロセスと WebView プロセス、セキュリティ原則
- プロセス間通信:イベントとコマンドのパターン、メッセージパッシング
- VS Code でのデバッグ:
vscode-lldbのセットアップ、launch.json の設定、Windows デバッガー - Tauri アーキテクチャ:エコシステムの概要(tauri-runtime、tauri-macros、tauri-utils、WRY、TAO)
使用するタイミング:Tauri の設計思想、デバッグ環境のセットアップ、アーキテクチャに関する判断を理解する場合
development.md
内容: 開発ワークフローに関する 13 ページ
- Neovim でのデバッグ:nvim-dap のセットアップ、codelldb の設定、開発サーバー用の overseer プラグイン
- CrabNebula DevTools:リアルタイムのログ確認、パフォーマンス追跡、イベント監視
- デバッグ:開発時のみのコードパターン、コンソールログ、WebView インスペクター、本番環境のデバッグ
- モバイルプラグイン開発:Android(Kotlin)と iOS(Swift)のプラグイン作成、ライフサイクルイベント
使用するタイミング:開発環境のセットアップ、デバッグ戦略、モバイル開発を行う場合
distribution.md
内容: アプリの配布に関する 8 ページ
- Windows コード署名:OV 証明書、Azure Key Vault、カスタム署名コマンド、GitHub Actions
- Azure コード署名:trusted-signing-cli のセットアップ、環境変数、署名ワークフロー
- コード署名のベストプラクティス:EV と OV の証明書、SmartScreen の評価、Microsoft Store
使用するタイミング:アプリのリリース準備、コード署名、CI/CD パイプライン、本番ビルドを行う場合
getting_started.md
内容: クイックスタートガイドと初期設定の手順
- プロジェクトの初期化
- 最初の Tauri アプリのチュートリアル
- 設定の基本
使用する場面:新しい Tauri プロジェクトの開始時、新しい開発者のオンボーディング時
plugins.md
内容: プラグインの開発と統合に関するガイド
- カスタムプラグインの作成
- モバイルプラグインのパターン(Android/iOS)
- プラグインの設定
- ライフサイクルイベント(load、onNewIntent)
- コマンドの引数と解析
使用する場面:Tauri にネイティブ機能を追加する場合、サードパーティライブラリを統合する場合
reference.md
内容: API リファレンスと設定スキーマ
- tauri.conf.json の構造
- コマンドラインインターフェースのオプション
- 設定オプションのリファレンス
使用する場面:特定の API メソッド、設定プロパティ、CLI フラグを調べる場合
security.md
内容: セキュリティのベストプラクティスとパターン
- コンテンツセキュリティポリシー(CSP)
- 安全な IPC パターン
- 権限管理
- WebView のセキュリティ
使用する場面:アプリケーションのセキュリティ強化、セキュリティ監査、安全な機能の実装時
tutorials.md
内容: 手順に沿った実装ガイド
- 特定の機能の構築
- 統合の例
- 実際のユースケース
使用する場面:例を通じて学習する場合、一般的なパターンを実装する場合
other.md
内容: 上記に分類されないその他のドキュメント
- 高度なトピック
- エッジケース
- プラットフォーム固有の注意事項
使用する場面:通常とは異なる問題のトラブルシューティング、プラットフォーム固有の実装時
このスキルの使い方
初心者向け
- まず読む:プロジェクトのセットアップと基本概念については
getting_started.md - 次に読む:
core_concepts.md→ プロセスモデルと IPC のセクション - 実践する:
development.md→ VS Code でのデバッグを参考にデバッグ環境を設定 - 構築する:
tutorials.mdのチュートリアルに従う
初心者によくある質問:
- 「Tauri アプリを作成するにはどうすればよいですか?」→
getting_started.md - 「コアプロセスとは何ですか?」→
core_concepts.md→ プロセスモデル - 「JavaScript から Rust を呼び出すにはどうすればよいですか?」→
core_concepts.md→ IPC → コマンド
中級開発者向け
- 重点的に読む:カスタムネイティブ機能については
plugins.md - 習得する:デバッグと DevTools については
development.md - 詳しく調べる:API の詳細については
reference.md - 実装する:
core_concepts.mdのカスタム IPC パターン
中級者によくある質問:
- 「カスタムプラグインを作成するにはどうすればよいですか?」→
plugins.md→ プラグイン開発 - 「パフォーマンスの問題をデバッグするにはどうすればよいですか?」→
development.md→ CrabNebula DevTools - 「どのような設定オプションがありますか?」→
reference.md
上級ユーザー向け
- 詳しく学ぶ:本番環境向けのセキュリティについては
security.md - 最適化する:
plugins.mdのモバイル開発パターン - 自動化する:
distribution.mdの配布ワークフロー - カスタマイズする:
other.mdの高度なパターン
上級者によくある質問:
- 「Windows のコード署名を設定するにはどうすればよいですか?」→
distribution.md→ Windows のコード署名 - 「モバイルプラグインを作成するにはどうすればよいですか?」→
development.md→ モバイルプラグイン開発 - 「セキュリティのベストプラクティスは何ですか?」→
security.md
ナビゲーションのヒント
- トピックで検索する:各リファレンスファイルには目次があります
- コード例:すべてのコードブロックには言語の注釈が付いています
- 元のドキュメント:リファレンスファイルには、元のドキュメントへの URL が含まれています
- 手早く確認できるパターン:まず上記のクイックリファレンスのセクションを確認してください
Claude と一緒に使う
Tauri について Claude に質問する際は:
- 具体的に伝える:プラットフォーム(Windows/macOS/Linux/Android/iOS)を明記します
- 背景情報を伝える:該当する場合は
tauri.conf.jsonを共有します - カテゴリを参照する:「署名の情報は distribution.md ファイルを確認してください」
- エラーを共有する:エラーメッセージとスタックトレースを省略せずに含めます
リソース
references/
公式の Tauri ソース(https://tauri.app/)から抽出したドキュメントを整理しています。これらのファイルには以下が含まれます。
- 詳細な説明:アーキテクチャ、パターン、ベストプラクティス
- コード例:言語別の注釈付き(rust、json、toml、kotlin、swift)
- ソースへのリンク:詳しく読むための元のドキュメント URL
- 目次:各ファイル内をすばやく移動するための目次
scripts/
一般的な自動化タスク用のヘルパースクリプト:
- ビルドスクリプト
- テスト用ユーティリティ
- デプロイ用ヘルパー
プロジェクト固有の自動化には、ここにカスタムスクリプトを追加してください
assets/
テンプレート、ボイラープレート、サンプルプロジェクト:
- プロジェクトテンプレート
- 設定例
- サンプルアプリケーション
ここにテンプレートとボイラープレートコードを追加してください
よく使われるパターン
Tauri コマンドの作成
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
// In main.rs
fn main() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
フロントエンドからコマンドを呼び出す
import { invoke } from '@tauri-apps/api/core';
const greeting = await invoke('greet', { name: 'World' });
console.log(greeting); // "Hello, World!"
イベントの発行
// From Rust
app.emit_all("event-name", Payload { message: "Hello".into() }).unwrap();
// Listening in JavaScript
import { listen } from '@tauri-apps/api/event';
const unlisten = await listen('event-name', (event) => {
console.log(event.payload.message);
});
デバッグのクイックヒント
Rust バックトレースを有効にする
# Linux/macOS
RUST_BACKTRACE=1 tauri dev
# Windows (PowerShell)
$env:RUST_BACKTRACE=1; tauri dev
デバッグビルドを作成する
npm run tauri build -- --debug
プログラムから DevTools を開く
use tauri::Manager;
window.open_devtools();
window.close_devtools();
プラットフォーム固有の注意事項
Windows
- Microsoft Edge WebView2 を使用します(Windows 11 では自動的にインストールされます)
- SmartScreen での信頼性を得るには、コード署名が必要です
- EV 証明書はすぐに信頼を得られます。OV 証明書は時間をかけて信頼性を築きます
macOS
- WKWebView を使用します(macOS に標準搭載)
- DevTools API は非公開です(本番環境で使用すると、App Store での承認を妨げます)
- Apple Developer 証明書によるコード署名が必要です
Linux
- webkitgtk を使用します(別途インストールが必要です)
- パッケージ形式:.deb、.rpm、.AppImage
Android
- Kotlin ベースのプラグイン
- アクティビティのライフサイクルとの統合
- Android Studio が必要です
iOS
- Swift ベースのプラグイン
- 依存関係の管理には Swift Package Manager を使用します
- Xcode が必要です
注意事項
- このスキルは、公式 Tauri ドキュメントから自動生成されました
- コード例はすべて公式ソースから抽出されています
- 参照ファイルでは、元のドキュメントへのリンクと構造が維持されています
- クイックリファレンスのパターンは、実際の使用例を表しています
- 最終更新日:2025年10月
更新
このスキルを最新のドキュメントで更新するには:
configs/tauri.jsonを使ってスクレイパーを再実行します- 最新情報を反映してスキルが再構築されます
- 更新時には、
scripts/とassets/内のカスタム追加内容が維持されます