10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

ちょっとしたChrome拡張機能を作成している中で、chrome.storageを使用する機会があったのでそれについて調べた内容を書きます。

chrome.storageとは

拡張機能の中で、タブ遷移や削除などをしても状態を保持したい時に使用するAPIです。

Chrome拡張機能作成用に機能が色々足されたlocalStorageという理解でいいのかなと。

Refarenceでは以下のように書かれています。

拡張機能の Service Worker やコンテンツ スクリプトを含むすべての拡張機能のコンテキストは、Storage API にアクセスできます。

JSON のシリアル化可能な値は、オブジェクトのプロパティとして格納されます。

Storage API は、一括読み取り / 書き込みオペレーションに対して非同期です。

ユーザーがキャッシュや閲覧履歴を削除しても、データは保持されます。

逆に、拡張機能を作成する上でlocalStorageを使用するのは推奨されないようです。
考えたら当たり前か...

ストレージの種類

以下4つのストレージの種類があります。

storage.local

ローカルにデータを保存します。

拡張機能が削除されると削除されます。容量は10MBまでですが、"unlimitedStorage"権限で増やせます。

storage.managed

システム管理者が設定する読み取り専用ストレージです。
ポリシーで構成され、組織の全ユーザーに適用されます。

これはあんまり使わなそうですね。

storage.session

セッション中のみメモリにデータを保持します。容量は10MB。

chrome.storage.session.setAccessLevel() でアクセス可能範囲を変更できます。Service Worker に適しています。

storage.sync

データを同期されたChrome間で同期できます。
普段使っている拡張機能の設定値などはこれで同期されていたんですね。

容量は約100KB、アイテムごとに8KB。オフライン時はローカル保存され、復帰後に同期されます。
非常に便利ですね!

当たり前ですが、機密データの保存はstorage.sessionを推奨しているようです。

さいごに

最後までお読みいただきありがとうございました!
なにかブラウザ間で同期する、便利な拡張機能を作ってみたいですね🤔

10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?