Store プラグインで設定を保存する

Recipe ID: plugin-003

tauri-plugin-store は、単純な設定データや状態を JSON ファイルとして永続化するためのプラグインです。SQLite などのデータベースを使うほどではない、軽量なデータの保存に適しています。

1. セットアップ

ターミナルで以下のコマンドを実行します。

npm run tauri add store

Rust 側の設定 (src-tauri/src/lib.rs)

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");
}

2. 権限の設定 (Capabilities)

src-tauri/capabilities/default.json (または類似のファイル) に store:default を追加します。
特定のファイルのみアクセスを許可したい場合は、allow- スコープを使用することも可能です。

{
  "permissions": [
    ...,
    "store:default"
    // または詳細に制御する場合:
    // {
    //   "identifier": "store:allow-get",
    //   "allow": [{ "path": "settings.json" }]
    // }
  ]
}

3. 基本的な使用方法

フロントエンド (TypeScript) からストアを読み込み、値の操作を行います。

import { Store } from '@tauri-apps/plugin-store';

// 1. ストアのロード(load メソッドを使用)
const store = await Store.load('settings.json');

// 2. 値のセット
await store.set('key', 'value');
await store.set('user-setting', { isEnabled: true, count: 42 });

// 3. 変更をファイルに書き込む(保存)
await store.save();

// 4. 値の取得
const value = await store.get<string>('key');
console.log(value); // "value"

const setting = await store.get<{ isEnabled: boolean }>('user-setting');
console.log(setting);

主なメソッド

メソッド説明
set(key, value)キーと値を設定します。
get(key)キーに対応する値を取得します。
has(key)キーが存在するか確認します。
delete(key)キーと値を削除します。
clear()すべてのデータを削除します。
save()メモリ上の変更をディスクに書き込みます。
length()保存されているアイテム数を返します。

注意点

  • 保存場所: OS ごとの標準的なアプリケーションデータディレクトリ (app_data_dir) に保存されます。
  • セキュリティ: データは暗号化されずに平文の JSON として保存されます。パスワードやトークンなどの機密情報は、代わりに tauri-plugin-stronghold を使用して保存してください。
  • 競合: 複数のウィンドウから同時に同じファイルへ書き込むと競合する可能性があります。