Ionic Launch Event. September 28th 2021.

DocsプラグインCLI

Capacitor でのデータ保存

ほとんどのアプリケーションは、ローカルデータを保存したり読み出したりする必要があります。具体的なユースケースに応じて、いくつかのアプローチが考えられます。

なぜ LocalStorage や IndexedDB ではいけないのですか?

Capacitor のアプリケーションは主に Web ビューやブラウザで動作するため、ストレージ用の Web API は Capacitor の開発者が利用できます。ただし、これらの API には、いくつかの大きな注意点があります。

ローカルストレージは、ユーザー ID などの一時的なデータに使用できますが、一過性のものであることを考慮する必要があります。これは、デバイスの容量が不足している場合、OS がウェブビューからローカルストレージを再利用するためです。同じことが、少なくとも iOS の IndexedDB にも言えます(Android では、 persisted storage APIで IndexedDB を persisted としてマークすることができます)。詳しくは、 data storage eviction policies をご覧ください。

Capacitor のストレージ API

Capacitor には、ネイティブの Storage API が付属しており、上記の退避の問題を回避することができますが、少量のデータを対象としています。

Storage API は、高度なクエリをサポートしないシンプルなキー/バリュー API を提供します:

import { Plugins } from '@capacitor/core';

const { Storage } = Plugins;
// JSON "set" example
async setObject() {
  await Storage.set({
    key: 'user',
    value: JSON.stringify({
      id: 1,
      name: 'Max'
    })
  });
}

// JSON "get" example
async getObject() {
  const ret = await Storage.get({ key: 'user' });
  const user = JSON.parse(ret.value);
}

大容量データやハイパフォーマンスなストレージの選択肢

大規模なデータを保存し、ハイパフォーマンスな方法でアクセスするには、いくつかのオプションがあります。

最も広くサポートされているオプションは SQLite です。 capacitor-sqlitecordova-plugin-sqlite など、Capacitor で動作するはずのコミュニティで管理されている SQLite プラグインが多数あります。

また、Capacitor チームは、暗号化をサポートし、デバイス上の secure key management APIs と統合した enterprise SQLite storage solution を提供しています。

Previous
<- スプラッシュスクリーンとアイコン
Next
コミュニティガイド ->
Contribute ->