Chromeアプリで無制限のファイルストレージを実現する方法(HTML編)
Chromeアプリにおける無制限ストレージの概要
Chromeアプリ(パッケージ化されたバンドルアプリ)で無制限のファイルストレージを利用したい場合、chrome.fileSystem.chooseEntry を使って FileEntry を取得する必要があります。この方法を使えば、データはユーザーがアクセスできるコンピューターの実際のファイルシステムに書き込まれるため、容量の制約を受けずに大量のデータを保存できます。
chrome.fileSystem.chooseEntry を使った保存方法
chrome.fileSystem.chooseEntry を呼び出すと、ユーザーにファイルやディレクトリを選択させ、その結果として FileEntry オブジェクトを受け取ることができます。このエントリ経由で書き込まれたデータは、サンドボックス内の仮想的な領域ではなく、ユーザーが直接参照・管理できる実ファイルシステム上に保存されます。
この方法を採用した場合、外部ファイルシステムへの書き込みには容量制限が存在しません。そのため、後述する unlimitedStorage 権限をマニフェストに宣言しておく必要もありません。
File APIだけでも利用は可能
なお、chrome.fileSystem.chooseEntry を呼び出さなくても、標準の File API 自体を使用することは可能です。ただし、この場合の書き込み先はアプリ専用のサンドボックス領域となるため、保存できるサイズに上限が設けられる点に注意が必要です。
unlimitedStorage 権限の役割
unlimitedStorage オブジェクトは、その名の通り無制限のストレージを許可するための権限です。manifest.json の permissions フィールドに "unlimitedStorage" を追加することで、サンドボックス内ストレージの容量制限を解除できます。
{
"permissions": [
"unlimitedStorage"
]
}使い分けのポイント
- ユーザーがアクセスできる場所に大容量データを保存したい場合:
chrome.fileSystem.chooseEntryで FileEntry を取得して書き込む(容量制限なし・unlimitedStorage 不要) - アプリ内部のサンドボックスに保存する場合:File API を使用し、大容量が必要なら unlimitedStorage 権限を宣言する
用途に応じてこれらの方法を使い分けることで、Chromeアプリでも柔軟かつ効率的なファイル保存を実現できます。
-
Androidで「Chromeにストレージアクセスが必要」エラーが発生したときの対処法
Google Chromeは、登場以来多くのAndroidユーザーにとって標準的なブラウザアプリとなっており、スマートフォンにプリインストールされた純正ブラウザがどれほど進化しても、その地位は揺るがないでしょう。長年純正ブラウザを使い続けているユーザーを除けば、その傾向は今後も変わらないと考えられます。Chromeはウェブサイトからのファイルやソフトウェアのダウンロードなど、さまざまな用途で幅広く活用されています。サードパーティ製のアプリやドキュメントをChromeからダウンロードするのは非常に簡単で、目的のサイトにアクセスしてファイルを保存するだけです。しかし最近、「chrome needs
-
Androidストレージ入門:内部ストレージと外部ストレージの違いと使い分け
ストレージは誰もが知っている存在でありながら、ついその重要性を見過ごしてしまいがちなものです。かつてはストレージ容量のわずかな増加さえも大きな飛躍であり、実現不可能に思えることさえありました。しかし今では、デバイスにどれだけの容量があるかを気にする人はほとんどいません(その違いに関心を持つ人はさらに少ないでしょう)。 より重要なのは、ストレージに保存されるデータの変遷に目を向けることです。スマートフォン以前の時代、私たちが保存していたのはたまに撮影した写真数枚、いくつかのゲーム、そして大量のテキストメッセージ程度でした。しかし現在、標準的なスマートフォンには、アプリケーション、ドキュメント、写