junkerstock
 ローカルストレージについて

Webアプリでデータを保存する際、`localStorage`(ローカルストレージ)は最も手軽で便利な選択肢です。

ご質問の「保存容量」や「文字数」について、ポイントを整理して解説します。

---

## 1. ローカルストレージの保存容量

結論から言うと、一般的に **「1サイト(ドメイン)につき 5MB」** が目安です。

* **デバイスによる違い:** 基本的にパソコン(Windows/Mac)でもスマホ(iPhone/Android)でも、主要なブラウザであれば **5MB** で統一されていることが多いです。
* **日本語(2バイト文字)で何文字書けるか:** 多くのブラウザはデータを「UTF-16」という形式で保存します。この形式では、**1文字=2バイト**としてカウントされるため、**最大で約250万文字**保存できる計算になります。

> **計算式:** 5MB = 5,242,880バイト ÷ 2 = **2,621,440文字**
> ※実際には「キー(保存名)」の長さも容量に含まれるため、これより少し少なくなります。

---

## 2. 最も簡単なコード例(保存と取得)

プログラムは非常にシンプルです。ブラウザのコンソールなどで試すこともできます。

### 基本の3ステップ

```javascript
// 1. 保存する(setItem)
localStorage.setItem('user_name', '田中太郎');

// 2. 取り出す(getItem)
const name = localStorage.getItem('user_name');
console.log(name); // 「田中太郎」と表示される

// 3. 削除する(removeItem)
localStorage.removeItem('user_name');

```

### 配列やオブジェクトを保存する場合

ローカルストレージは「文字列」しか保存できないため、複数のデータをまとめて保存したいときは **JSON** という形式に変換して保存するのが一般的です。

```javascript
const user = { name: "田中", age: 25 };

// 保存:オブジェクトを文字列に変換(JSON.stringify)
localStorage.setItem('userData', JSON.stringify(user));

// 取得:文字列をオブジェクトに戻す(JSON.parse)
const data = JSON.parse(localStorage.getItem('userData'));
console.log(data.name); // 「田中」

```

---

## 3. 注意点と使い分け

| 特徴 | ローカルストレージ | クッキー (Cookie) | IndexedDB (大規模保存) |

| **容量** | **約 5MB** | 約 4KB (極小) | 数百MB以上 (端末に依存) |
| **期限** | **削除するまで永続** | 指定した期限まで | 削除するまで永続 |
| **使いやすさ** | **非常に簡単** | 少し複雑 | かなり複雑 |



ローカルストレージ vs IndexedDB 比較表

比較項目 ローカルストレージ (LocalStorage) IndexedDB
容量の目安 約 5MB (どの端末でもほぼ一定) 数百MB 〜 数GB (空き容量に依存)
データの形式 文字列のみ (JSON変換が必要) オブジェクト・画像・ファイルも可
検索・抽出 苦手 (全データを読み出す必要がある) 得意 (索引を使って高速に探せる)
動作の仕組み 同期処理 (保存中に画面が止まるリスク) 非同期処理 (裏で動くので画面がスムーズ)
実装の難易度 とても簡単 (1行で書ける) 難しい (専門知識が必要)


* **セキュリティ:** パスワードや個人情報などの機密データは保存しないようにしましょう(JavaScriptから簡単に中身が見えてしまうため)。
* **消えるタイミング:** ユーザーがブラウザのキャッシュを完全に削除したり、iPhoneのSafariなどで「プライベートブラウズ」モードを使っている場合は、保存されないことがあります。

---