アプリの設定情報やウィンドウの位置情報など、データベースを使うほどではない軽量なデータを JSON ファイルとして保存・管理するための plugin-store の導入手順と使い方を解説します。
1. セットアップ
インストール手順
Rust 側と JavaScript 側の両方に依存関係を追加し、プラグインを初期化します。
1. コマンドで追加
Tauri の CLI を使用して追加します。
npm run tauri add store
補足: 手動でインストールする場合はsrc-tauriディレクトリでcargo add tauri-plugin-storeを実行してください。
2. プラグインの初期化 (Rust)
src-tauri/src/lib.rs でプラグインを登録します。
// src-tauri/src/lib.rs
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.plugin(tauri_plugin_store::Builder::default().build()) // ここに追加
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
権限設定 (Capabilities)
src-tauri/capabilities/default.json でストアへのアクセスを許可します。
{
"permissions": [
...,
"store:default"
]
}
2. ストアの使い方
Store クラスを使用して、データの読み書きを行います。データは指定したファイル名(例: settings.json)でアプリケーションのデータディレクトリに保存されます。
ストアの初期化
import { load } from '@tauri-apps/plugin-store';
// ストアの作成または読み込み
// 既に存在する場合はそのファイルをロードし、なければ新規作成します
const store = await load('settings.json', { autoSave: false, defaults: {} });
データの保存 (Set & Save)
データをセットしただけではメモリ上の変更にとどまります。永続化するには必ず save() を呼び出してください。
async function saveSettings() {
// 値のセット
await store.set('theme', 'dark');
await store.set('window_size', { width: 800, height: 600 });
// ファイルへの書き込み(必須)
await store.save();
}
データの取得 (Get)
キーを指定してデータを取得します。ジェネリクスで型を指定可能です。
async function loadSettings() {
const theme = await store.get<string>('theme');
const size = await store.get<{ width: number, height: number }>('window_size');
console.log(`Theme: ${theme}, Size: ${JSON.stringify(size)}`);
}
変更の監視 (Listen)
特定の値が変更されたときに処理を実行できます。
const unlisten = await store.onKeyChange('theme', (value) => {
console.log('New theme:', value);
});
// 監視を終了する場合
// unlisten();