ローカルストレージとは?JavaScriptでブラウザにデータを保存する方法を解説

学習ロードマップ

ローカルストレージとは、ブラウザにデータを保存できる仕組みです。

JavaScriptから使うことができ、入力内容、設定、表示状態などをブラウザ側に保存できます。

たとえば、ToDoリストの内容、ダークモードの設定、フォームに入力した名前、前回選んだカテゴリーなどを保存できます。

この記事では、ローカルストレージとは何か、どのような場面で使うのか、JavaScriptで保存・取得・削除する方法を解説します。

ローカルストレージとは

ローカルストレージは、Web Storage APIの一つです。

ブラウザの中に、文字列データを保存できます。

ページを閉じたり、ブラウザを再起動したりしても、保存したデータは残ります。

たとえば、次のようなデータを保存できます。

  • ユーザーが入力した名前
  • 画面の表示設定
  • ToDoリストの内容
  • 選択したテーマ
  • 前回開いていたタブの状態

ローカルストレージは、サーバーではなくユーザーのブラウザ側に保存されます。

そのため、同じサイトでも、別のブラウザや別の端末では保存内容が共有されません。

ローカルストレージでできること

ローカルストレージを使うと、ブラウザを閉じたあともデータを残せます。

たとえば、JavaScriptでToDoリストを作る場合、通常はページを再読み込みすると追加した項目が消えます。

しかし、ローカルストレージに保存しておけば、再読み込み後もToDoリストを復元できます。

ほかにも、次のような使い方があります。

  • ダークモードの設定を保存する
  • 検索条件を保存する
  • 入力途中の内容を一時保存する
  • 前回選択した表示形式を保存する
  • ブラウザだけで動く簡単なメモアプリを作る

簡単なWebアプリの練習では、ローカルストレージを使うと「保存できるアプリ」を作りやすくなります。

ローカルストレージとセッションストレージの違い

ブラウザにデータを保存する仕組みには、ローカルストレージのほかにセッションストレージがあります。

どちらもJavaScriptから使えますが、保存される期間が違います。

種類保存期間特徴
localStorage明示的に削除するまで残るブラウザを閉じても残る
sessionStorageタブやウィンドウを閉じるまで一時的な保存に使う

ローカルストレージは、長く残したい設定やデータに向いています。

セッションストレージは、タブを開いている間だけ残したいデータに向いています。

ローカルストレージの基本メソッド

ローカルストレージでは、主に次のメソッドを使います。

メソッド内容
localStorage.setItem()データを保存する
localStorage.getItem()データを取得する
localStorage.removeItem()指定したデータを削除する
localStorage.clear()保存されているデータをすべて削除する

まずは、保存、取得、削除の3つを覚えると使いやすいです。

データを保存する

ローカルストレージにデータを保存するには、setItemを使います。

localStorage.setItem("username", "山田太郎");

第1引数にはキーを書きます。

第2引数には保存したい値を書きます。

キーは、データを取り出すときの名前です。

localStorage.setItem("キー", "保存する値");

たとえば、テーマ設定を保存するなら、次のように書けます。

localStorage.setItem("theme", "dark");

これで、themeという名前でdarkという値が保存されます。

データを取得する

保存したデータを取得するには、getItemを使います。

const username = localStorage.getItem("username");

console.log(username);

getItemには、保存するときに使ったキーを指定します。

データが存在すれば、その値が返ります。

データが存在しない場合は、nullが返ります。

const theme = localStorage.getItem("theme");

if (theme === "dark") {
  console.log("ダークモードです");
}

ローカルストレージの値は、ページを再読み込みしたあとでも取得できます。

データを削除する

指定したデータを削除するには、removeItemを使います。

localStorage.removeItem("username");

このコードを実行すると、usernameというキーで保存していたデータが削除されます。

すべてのデータを削除する場合は、clearを使います。

localStorage.clear();

clearは、そのサイトで保存しているローカルストレージのデータをまとめて削除します。

特定のデータだけを削除したい場合は、removeItemを使います。

ローカルストレージに保存できるのは文字列

ローカルストレージに保存できる値は、基本的に文字列です。

数値を保存しても、取得すると文字列として返ってきます。

localStorage.setItem("count", 10);

const count = localStorage.getItem("count");

console.log(count);
console.log(typeof count);

この場合、countは数値ではなく文字列として取得されます。

数値として使いたい場合は、Numberで変換します。

const count = Number(localStorage.getItem("count"));

console.log(count + 1);

オブジェクトや配列を保存したい場合は、JSON.stringifyを使って文字列に変換します。

配列を保存する

配列をそのままローカルストレージに保存するのではなく、JSON文字列に変換して保存します。

const todos = ["HTMLを学ぶ", "CSSを学ぶ", "JavaScriptを学ぶ"];

localStorage.setItem("todos", JSON.stringify(todos));

保存した配列を取り出すときは、JSON.parseを使います。

const savedTodos = localStorage.getItem("todos");
const todos = JSON.parse(savedTodos);

console.log(todos);

JSON.stringifyは、配列やオブジェクトを文字列に変換します。

JSON.parseは、JSON文字列をJavaScriptの値に戻します。

オブジェクトを保存する

オブジェクトも、配列と同じようにJSON.stringifyで文字列に変換して保存します。

const user = {
  name: "山田太郎",
  email: "taro@example.com"
};

localStorage.setItem("user", JSON.stringify(user));

取り出すときは、JSON.parseで元のオブジェクトに戻します。

const savedUser = localStorage.getItem("user");
const user = JSON.parse(savedUser);

console.log(user.name);
console.log(user.email);

ローカルストレージを使うときは、文字列、配列、オブジェクトの扱いの違いを意識します。

実際にローカルストレージを使ってみる

ここからは、入力した名前をローカルストレージに保存し、再読み込み後も表示できる簡単なサンプルを作ります。

作業用フォルダを作ります。

local-storage-practice

フォルダの中に、次の3つのファイルを作ります。

index.html
style.css
script.js

index.html全体を次のコードに書き換えます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ローカルストレージの練習</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>

  <main class="container">
    <h1>ローカルストレージの練習</h1>

    <div class="form-area">
      <label for="nameInput">名前</label>
      <input type="text" id="nameInput" placeholder="名前を入力してください">
      <button id="saveButton">保存する</button>
      <button id="deleteButton">削除する</button>
    </div>

    <p id="result">保存された名前はありません。</p>
  </main>

  <script src="script.js"></script>
</body>
</html>

style.css全体を次のコードに書き換えます。

body {
  font-family: sans-serif;
  background-color: #f5f5f5;
  margin: 0;
  padding: 40px;
}

.container {
  max-width: 600px;
  margin: 0 auto;
  background-color: #ffffff;
  padding: 30px;
  border-radius: 8px;
}

.form-area {
  margin-bottom: 20px;
}

label {
  display: block;
  margin-bottom: 8px;
  font-weight: bold;
}

input {
  width: 100%;
  box-sizing: border-box;
  padding: 10px;
  margin-bottom: 12px;
  font-size: 16px;
}

button {
  padding: 10px 16px;
  margin-right: 8px;
  cursor: pointer;
}

#result {
  font-weight: bold;
}

script.js全体を次のコードに書き換えます。

const nameInput = document.querySelector("#nameInput");
const saveButton = document.querySelector("#saveButton");
const deleteButton = document.querySelector("#deleteButton");
const result = document.querySelector("#result");

const savedName = localStorage.getItem("username");

if (savedName !== null) {
  result.textContent = "保存された名前:" + savedName;
  nameInput.value = savedName;
}

saveButton.addEventListener("click", function () {
  const name = nameInput.value;

  localStorage.setItem("username", name);

  result.textContent = "保存された名前:" + name;
});

deleteButton.addEventListener("click", function () {
  localStorage.removeItem("username");

  nameInput.value = "";
  result.textContent = "保存された名前はありません。";
});

画面で確認する

index.htmlをブラウザで開きます。

名前を入力して「保存する」ボタンを押します。

画面に「保存された名前:〇〇」と表示されればOKです。

そのあと、ブラウザを再読み込みします。

再読み込み後も名前が表示されていれば、ローカルストレージに保存できています。

「削除する」ボタンを押すと、保存した名前が削除されます。

ToDoリストで使う場合の考え方

ローカルストレージは、ToDoリストのような練習アプリでもよく使います。

ToDoリストでは、複数の項目を配列として管理します。

const todos = [
  "HTMLを学ぶ",
  "CSSを学ぶ",
  "JavaScriptを学ぶ"
];

この配列をローカルストレージに保存する場合は、JSON.stringifyを使います。

localStorage.setItem("todos", JSON.stringify(todos));

ページを開いたときに復元する場合は、JSON.parseを使います。

const savedTodos = localStorage.getItem("todos");

if (savedTodos !== null) {
  const todos = JSON.parse(savedTodos);
  console.log(todos);
}

この流れを使うと、ページを再読み込みしてもToDoリストを残せます。

ローカルストレージに保存しない方がよいもの

ローカルストレージは便利ですが、何でも保存してよいわけではありません。

特に、次のような情報は保存しないようにします。

  • パスワード
  • クレジットカード情報
  • 個人番号のような重要情報
  • 公開されると困るAPIキー
  • ログイン状態を管理する重要なトークン

ローカルストレージの内容は、ブラウザの開発者ツールから確認できます。

そのため、見られると困る情報を保存する場所としては向いていません。

ログインや認証に関わる情報は、サーバー側の設計やCookieの設定も含めて考える必要があります。

ローカルストレージを確認する方法

Chromeでローカルストレージの中身を確認するには、開発者ツールを使います。

  1. ブラウザでページを開く
  2. 右クリックして「検証」をクリックする
  3. 「Application」タブを開く
  4. 左側の「Local storage」を開く
  5. 確認したいサイトのURLをクリックする

保存されているキーと値を確認できます。

先ほどのサンプルでは、usernameというキーで名前が保存されます。

開発者ツール上で値を削除することもできます。

ローカルストレージでよくあるミス

ローカルストレージでよくあるミスは、オブジェクトや配列をそのまま保存しようとすることです。

const user = {
  name: "山田太郎"
};

localStorage.setItem("user", user);

このように書くと、期待した形では保存されません。

オブジェクトを保存する場合は、JSON.stringifyを使います。

const user = {
  name: "山田太郎"
};

localStorage.setItem("user", JSON.stringify(user));

取り出すときは、JSON.parseを使います。

const savedUser = localStorage.getItem("user");
const user = JSON.parse(savedUser);

console.log(user.name);

もう一つ多いのは、存在しないデータをJSON.parseしようとすることです。

const savedTodos = localStorage.getItem("todos");
const todos = JSON.parse(savedTodos);

todosが保存されていない場合、savedTodosnullになります。

そのまま扱うとエラーになることがあるため、先に存在確認をします。

const savedTodos = localStorage.getItem("todos");

if (savedTodos !== null) {
  const todos = JSON.parse(savedTodos);
  console.log(todos);
}

ローカルストレージとCookieの違い

ブラウザにデータを保存する仕組みとして、Cookieもあります。

ローカルストレージとCookieは似ていますが、使い方が違います。

種類主な使い方特徴
ローカルストレージ画面設定や簡単な保存データJavaScriptから扱いやすい
Cookieログイン状態やサーバーとのやり取りリクエスト時にサーバーへ送られる

ローカルストレージは、ブラウザ側だけで使う設定や簡単なデータ保存に向いています。

Cookieは、サーバーと連携してログイン状態などを扱う場合に使われます。

どちらを使うかは、保存したいデータの内容と目的によって変わります。

まとめ

ローカルストレージは、ブラウザにデータを保存するための仕組みです。

JavaScriptからlocalStorageを使って、データの保存、取得、削除ができます。

基本のメソッドは次の通りです。

メソッド内容
localStorage.setItem()データを保存する
localStorage.getItem()データを取得する
localStorage.removeItem()指定したデータを削除する
localStorage.clear()すべてのデータを削除する

ローカルストレージに保存できる値は、基本的に文字列です。

配列やオブジェクトを保存する場合は、JSON.stringifyで文字列に変換し、取り出すときにJSON.parseで戻します。

localStorage.setItem("todos", JSON.stringify(todos));

const savedTodos = localStorage.getItem("todos");
const todos = JSON.parse(savedTodos);

ローカルストレージを使うと、ToDoリスト、設定保存、入力内容の一時保存など、ブラウザだけで動く簡単なアプリを作りやすくなります。

パスワードや重要な個人情報、公開されると困るAPIキーなどは保存しないようにします。

タイトルとURLをコピーしました