as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

react-native-mmkv

react-native-mmkv

MMKVは、WeChatが開発した効率的で小型のモバイルキーバリューストレージフレームワークです。@amazon-devices/react-native-mmkvは、ネイティブC++ライブラリへの高速かつ直接的なJSバインディングを通じて、React Nativeアプリ内でMMKVを簡単に使用できるようにするライブラリです。詳細については、Tencent/MMKV(英語のみ)を参照してください。

インストール

  1. package.jsonファイルに依存関係を追加します。

    クリップボードにコピーしました。

     "dependencies": {
          ...
          "@amazon-devices/react-native-mmkv": "~1.0.0",
          ...
     }
    
  2. npm installコマンドを使用して、依存関係を再インストールします。

以下は、ランダムなキーと値のペアを格納するシンプルなストレージを作成する例です。

クリップボードにコピーしました。

import React, { useState } from 'react';
import { Button, StyleSheet, Text, View } from 'react-native';
import { MMKV, useMMKVString, useMMKVNumber, useMMKVBoolean } from '@amazon-devices/react-native-mmkv';

const storage = new MMKV();

export const App = () => {
  const [hookUsername, setHookUsername] = useMMKVString('hookUsername');
  const [hookAge, setHookAge] = useMMKVNumber('hookAge');
  const [hookIsLoggedIn, setHookIsLoggedIn] = useMMKVBoolean('hookIsLoggedIn');

  const [status, setStatus] = useState<string>("");

  const handleSetData = () => {
    storage.set('username', 'JohnDoe');
    storage.set('isLoggedIn', true);
    storage.set('age', 30);
    setStatus('username、isLoggedIn、ageが保存されました');
  };

  const handleGetStringData = () => {
    const username = storage.getString('username');
    setStatus(`データから取得したユーザー名:${username || 'なし'}`);
  };

  const handleGetNumberData = () => {
    const age = storage.getNumber('age');
    setStatus(`データから取得した年齢:${age}`);
  };

  const handleGetBooleanData = () => {
    const isLoggedIn = storage.getBoolean('isLoggedIn');
    setStatus(`データから取得したログイン状態:${isLoggedIn}`);
  };

  const handleCheckKey = () => {
    const hasUsernameKey = storage.contains('username');
    setStatus(`ユーザー名キー(${hasUsernameKey})が存在します`);
  };

  const handleListKeys = () => {
    const allKeys = storage.getAllKeys();
    setStatus(`キー:${allKeys.join(', ')}`);
  };

  const handleDeleteKey = () => {
    storage.delete('username');
    setStatus('"username"キーを削除しました。');
  };

  const handleClearAll = () => {
    storage.clearAll();
    setStatus('すべてのデータがストレージから消去されました。');
  };

  const handleRecryptStorage = () => {
    storage.recrypt('newEncryptionKey');
    setStatus('保存されている値が新しいキーで再暗号化されました。');
  };

  const handleDisplaySize = () => {
    setStatus(`保存されているサイズ:${storage.size}バイト`);
  };

  const handleHookSetData = () => {
    setHookUsername('JaneDoe');
    setHookIsLoggedIn(false);
    setHookAge(25);
    setStatus('username、isLoggedIn、ageが保存されました');
  };

  const handleUseMMKVStringData = () => {
    setStatus(`フックで取得したユーザー名:${hookUsername || 'なし'}`);
  };

  const handleUseMMKVNumberData = () => {
    setStatus(`フックで取得した年齢:${hookAge}`);
  };

  const handleUseMMKVBooleanData = () => {
    setStatus(`フックで取得したログイン状態:${hookIsLoggedIn}`);
  };

  return (
    <View style={styles.container} testID="mmkv-app-container">
      <Text style={styles.title}>React Native MMKVの例</Text>
      <Text style={styles.title} testID="mmkv-status">ステータス{status}</Text>
      <Button title="データを設定" onPress={handleSetData} testID="mmkv-app-set-button" />
      <Button title="文字列を取得" onPress={handleGetStringData} testID="mmkv-app-get-string-button" />
      <Button title="数値を取得" onPress={handleGetNumberData} testID="mmkv-app-get-number-button" />
      <Button title="ブール値を取得" onPress={handleGetBooleanData} testID="mmkv-app-get-boolean-button"/>
      <Button title="キーの存在を確認" onPress={handleCheckKey} testID="mmkv-app-contains-button"/>
      <Button title="すべてのキーを一覧表示" onPress={handleListKeys} testID="mmkv-app-get-all-keys-button"/>
      <Button title="'Username'キーを削除" onPress={handleDeleteKey} testID="mmkv-app-delete-key-button"/>
      <Button title="すべてのデータを消去" onPress={handleClearAll} testID="mmkv-app-clear-all-button"/>
      <Button title="ストレージを再暗号化" onPress={handleRecryptStorage} testID="mmkv-app-recrypt-button"/>
      <Button title="ストレージサイズを表示" onPress={handleDisplaySize} testID="mmkv-app-size-button"/>
      <Button title="フックでデータを設定" onPress={handleHookSetData} testID="mmkv-app-hook-set-button"/>
      <Button title="フックで文字列データを取得" onPress={handleUseMMKVStringData} testID="mmkv-app-hook-get-string-button"/>
      <Button title="フックで数値データを取得" onPress={handleUseMMKVNumberData} testID="mmkv-app-hook-get-number-button"/>
      <Button title="フックでブール値データを取得" onPress={handleUseMMKVBooleanData} testID="mmkv-app-hook-get-boolean-button"/>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flexGrow: 1,
    justifyContent: 'center',
    alignItems: 'center',
    padding: 20,
    backgroundColor: '#fff',
  },
  title: {
    fontSize: 20,
    marginBottom: 20,
    textAlign: 'center',
  },
  button: {
    marginVertical: 10,
  },
});

APIリファレンス

VegaのMMKVライブラリは、以下のメソッドのサポートを追加するターボモジュールを提供します。

このライブラリの情報、APIリファレンス、その他の詳細については、専用のドキュメントページ(英語のみ)を参照してください。

ネイティブMMKV

メソッド 説明
MMKV MMKVのベースストレージクラス。
size ストレージの現在の合計サイズをバイト単位で取得します。
set 指定されたkeyに値を設定します。
getBoolean 指定されたkeyのブール値を取得します。存在しない場合はundefinedになります。
getString 指定されたkeyの文字列値を取得します。存在しない場合はundefinedになります。
getNumber 指定されたkeyの数値を取得します。存在しない場合はundefinedになります。
getBuffer 符号なし8ビット(0~255)データの生バッファを取得します。
contains 指定されたkeyがこのMMKVインスタンスに保存されているかどうかを確認します。
delete 指定されたkeyを削除します。
getAllKeys すべてのキーを取得します。
clearAll すべてのキーを削除します。
recrypt このMMKVインスタンスのすべてのデータを暗号化するための暗号化キーを設定(または更新)します。
trim ストレージスペースを整理し、メモリキャッシュを消去します。
toString MMKVの文字列表現を取得します。
toJSON MMKVのJSON表現を取得します。
addOnValueChangedListener 値の変更に対するリスナーを追加します。リスナーは、このストレージインスタンスの値が変更(設定または削除)されるたびに呼び出されます。

フック

メソッド 説明
useMMKV デフォルトの共有MMKVインスタンスを使用します。
useMMKVString 指定されたMMKVストレージインスタンスから、指定されたkeyの文字列値を使用します。
useMMKVNumber 指定されたMMKVストレージインスタンスから、指定されたkeyの数値を使用します。
useMMKVBoolean 指定されたMMKVストレージインスタンスから、指定されたkeyのブール値を使用します。
useMMKVObject 指定されたMMKVストレージインスタンスから、指定されたkeyのオブジェクト値を使用します。
useMMKVListener 指定されたMMKVストレージインスタンスの変更をリッスンします。

構成

メソッド 説明
id MMKVインスタンスのID。複数のインスタンスを使用する場合は、必ず異なるIDを使用してください。
path MMKVインスタンスのルートパス。
encryptionKey MMKVインスタンスの暗号化/復号化キー。
mode MMKVの処理モードを構成します。

モード

メソッド 説明
SINGLE_PROCESS MMKVインスタンスは、単一のプロセス(このアプリ)からのみ使用されます。
MULTI_PROCESS MMKVインスタンスは、アプリクリップ、共有拡張機能、バックグラウンドサービスなど、複数のプロセスから使用できます。

既知の問題

  • recryptメソッドはVega仮想デバイスではサポートされていません
  • useMMKVBufferフックはサポートされていません。

サポートされるreact-native-keplerのバージョン

パッケージのバージョン @amazon-devices/react-native-kepler version
1.0.x+3.0.2 2.0.x+rn0.72.0

関連リソース

その他のライブラリについては、サポート対象のサードパーティのライブラリとサービスを参照してください。


Last updated: 2025年9月30日