HTML5 Local StorageとSession Storageを使いこなしてブラウザでデータを保存しよう

2024-04-02

HTML5 Local StorageとSession Storageは、ブラウザ上でデータを保存するためのAPIです。どちらもJavaScriptからアクセスできますが、保存期間とデータの共有範囲が異なります。

Local Storage

  • データはブラウザが閉じられるまで永続的に保存されます。
  • 同じドメイン内のすべてのページからアクセスできます。
  • データ容量は5MB程度です。

Session Storage

  • データ容量はLocal Storageと同じです。

使い分け

  • ユーザー設定やログイン情報など、永続的に保存したいデータにはLocal Storageを使用します。
  • 買い物かごや一時的なメッセージなど、セッション間で保持したいデータにはSession Storageを使用します。

  • 買い物かごの中身はSession Storageを使用します。

コード例

// Local Storageにデータを設定
localStorage.setItem('username', 'John Doe');

// Local Storageからデータを取得
const username = localStorage.getItem('username');

// Session Storageにデータを設定
sessionStorage.setItem('cart', JSON.stringify([
  {
    id: 1,
    name: '商品1',
    price: 1000
  },
  {
    id: 2,
    name: '商品2',
    price: 2000
  }
]));

// Session Storageからデータを取得
const cart = JSON.parse(sessionStorage.getItem('cart'));

注意

  • Local StorageとSession Storageは、ブラウザごとに実装が異なる場合があります。
  • データの安全性には注意が必要です。



以下のコードは、ユーザー名とパスワードをLocal Storageに保存し、ログイン状態を維持する例です。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Local Storageサンプル</title>
</head>
<body>
  <h1>ログイン</h1>
  <form onsubmit="login(event)">
    <label for="username">ユーザー名:</label>
    <input type="text" id="username" name="username">
    <label for="password">パスワード:</label>
    <input type="password" id="password" name="password">
    <button type="submit">ログイン</button>
  </form>

  <script>
  function login(event) {
    event.preventDefault();

    const username = document.getElementById('username').value;
    const password = document.getElementById('password').value;

    // ユーザー名とパスワードをLocal Storageに保存
    localStorage.setItem('username', username);
    localStorage.setItem('password', password);

    // ログイン後の処理
    // ...
  }

  // Local Storageからユーザー名とパスワードを取得
  const storedUsername = localStorage.getItem('username');
  const storedPassword = localStorage.getItem('password');

  // 既にログイン済みの場合は、ログイン後の処理を実行
  if (storedUsername && storedPassword) {
    // ログイン後の処理
    // ...
  }
  </script>
</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Session Storageサンプル</title>
</head>
<body>
  <h1>買い物かご</h1>
  <ul id="cart-items"></ul>

  <script>
  // 商品データ
  const products = [
    {
      id: 1,
      name: '商品1',
      price: 1000
    },
    {
      id: 2,
      name: '商品2',
      price: 2000
    }
  ];

  // 商品を追加
  function addCartItem(productId) {
    const product = products.find(product => product.id === productId);

    // 商品をSession Storageに追加
    const cartItems = JSON.parse(sessionStorage.getItem('cart-items')) || [];
    cartItems.push(product);
    sessionStorage.setItem('cart-items', JSON.stringify(cartItems));

    // 買い物かごの更新
    updateCartItems();
  }

  // 買い物かごの表示を更新
  function updateCartItems() {
    const cartItems = JSON.parse(sessionStorage.getItem('cart-items')) || [];

    const cartItemsElement = document.getElementById('cart-items');
    cartItemsElement.innerHTML = '';

    for (const cartItem of cartItems) {
      const cartItemElement = document.createElement('li');
      cartItemElement.textContent = `${cartItem.name} (${cartItem.price}円)`;

      cartItemsElement.appendChild(cartItemElement);
    }
  }

  // 最初の表示
  updateCartItems();
  </script>
</body>
</html>

上記はあくまでサンプルコードであり、実際の利用シーンに合わせて改変する必要があります。




主な代替方法

  • Cookie
  • IndexedDB
  • Web SQL Database
  • Service Worker

各方法の特徴

  • 昔からあるデータ保存方法
  • 比較的シンプル
  • 容量は4KB程度と小さい
  • セキュリティ面で脆弱な場合がある
  • 大容量のデータを保存できる
  • オブジェクトストアと呼ばれる構造化されたデータ形式で保存できる
  • 複雑なデータ構造を保存するのに適している
  • SQLを使ってデータ操作ができる
  • 現在は非推奨
  • プッシュ通知やオフラインアクセスなどの機能を提供できる
  • データ保存も可能
  • 少量のデータを保存する場合はCookie
  • 大容量のデータを保存する場合はIndexedDB
  • 複雑なデータ構造を保存する場合はIndexedDBまたはWeb SQL Database
  • プッシュ通知やオフラインアクセスなどの機能も必要場合はService Worker
  • 各方法にはそれぞれメリットとデメリットがあります。
  • 使用する前に各方法の特徴をよく理解しておく必要があります。

javascript html local-storage


jQueryでケースインセンシティブな:containsセレクタを使う

jQueryの:containsセレクタは、要素内のテキスト内容を検索し、一致する要素を選択します。デフォルトでは大文字と小文字を区別しますが、ケースインセンシティブな検索を行う方法もあります。ケースインセンシティブな:containsセレクタの必要性...


【徹底解説】JavaScriptでHTMLを取得:document、documentElement、outerHTMLを使いこなす

document. documentElement. outerHTML プロパティを使用するこの方法は、最も簡潔でわかりやすい方法です。document. documentElement は、HTML ドキュメントのルート要素を表すオブジェクトであり、outerHTML プロパティは、その要素とすべての子要素を含む HTML コードを文字列として返します。...


Node.jsでCPU集約型リクエストを高速化!ワーカープロセス、非同期処理、ネイティブモジュールを使いこなす

Node. jsは、JavaScriptを使用してサーバーサイドアプリケーションを開発するためのオープンソースランタイム環境です。非同期入出力モデルを採用しているため、大量の同時接続を効率的に処理し、スケーラブルなアプリケーションを構築することができます。しかし、CPU集約型のリクエストを処理する場合は、パフォーマンスを向上させるためにいくつかの考慮事項があります。...


HTMLフォームでファイルアップロードを行う際の必須要素!multipart/form-data の境界文字列

境界文字列 は、ランダムに生成された文字列で、データパートの区切りを示す役割を果たします。受信側は、この境界文字列を元に、各データパートを分離して処理することができます。例:上記の例では、2つのデータパートが存在します。1つ目は、名前 "name" と値 "John Doe" を持つテキストデータです。...


迷ったらコレ!Djangoフォームでラジオボタンを1つだけ選択するベストプラクティス

Djangoフォームでラジオボタングループから1つだけ選択できるようにするには、いくつかの方法があります。方法1:choice_attributesを使う各ラジオボタンにchoice_attributes属性を設定することで、個別に属性を指定できます。...


SQL SQL SQL SQL Amazon で見る



HTML5 localStorage/sessionStorage にオブジェクトを保存する方法

HTML5 localStorage と sessionStorage は、ブラウザのローカルストレージにデータを保存するための API です。これらの API を使用すると、ユーザーのブラウザにデータを保存し、次回ユーザーがサイトを訪れたときにそのデータを読み取ることができます。


【徹底解説】JavaScript、HTML、Local Storageの最大保存容量と制限を超えた場合の対処法

この解説では、以下の内容について説明します。Local Storageの概要保存容量に影響を与える要素容量制限を超えた場合の対処法Local Storageは、ブラウザが提供するキーバリューペア形式のデータ保存機能です。JavaScriptを使用して、データを保存したり、読み込んだり、削除したりすることができます。


HTML、クッキー、ローカルストレージにおける「localStorage」、「sessionStorage」、「セッション」、「クッキー」の違いを徹底解説!

Webサイトは、ユーザーの情報を保存するために様々な技術を使用します。代表的なものは、「localStorage」、「sessionStorage」、「セッション」、「クッキー」です。 これらの技術はそれぞれ異なる機能を持ち、使い分けることが重要です。