JavaScriptのlocalStorageの使い方【データを保存する方法・初心者向け】

JavaScriptのlocalStorageでブラウザにデータを保存する方法を初心者向けに解説。メモ帳アプリとダークモード切り替えの実践コードつき。

2026年5月9日

導入

JavaScriptでブラウザにデータを保存できることを知っていますか?

通常、Webページを閉じるとデータは消えます。でもlocalStorage(ローカルストレージ)を使えば、ページを閉じても、ブラウザを再起動しても、データが残ります。

たとえば、こんなことができます。

  • メモの内容を保存して、次に開いたとき復元する
  • ダークモードの設定を覚えておく
  • ゲームのスコアを保存する

この記事では、localStorageの基本的な使い方を解説します。実践コードとして「メモ帳アプリ」と「テーマ切り替え」を作ります。

JavaScript入門の基礎知識があれば、すぐに理解できます。

localStorageの基本:4つのメソッド

localStorageの操作は、たった4つのメソッド(命令)で行います。

setItem:データを保存する

// localStorage.setItem("キー", "値")
localStorage.setItem("name", "太郎");

「キー」は名前、「値」は保存したいデータです。引き出しにラベルを貼って、中身を入れるイメージです。

getItem:データを読み込む

// localStorage.getItem("キー")
const name = localStorage.getItem("name");
console.log(name); // "太郎"

キーを指定して、保存したデータを取り出します。存在しないキーを指定するとnullが返ります。

removeItem:データを1つ削除する

// localStorage.removeItem("キー")
localStorage.removeItem("name");

clear:すべてのデータを削除する

// localStorage.clear()
localStorage.clear();

実践1:メモ帳アプリ

テキストエリアに書いた内容を自動保存するメモ帳を作ります。ページを閉じて再度開いても、メモが残ります。

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>メモ帳</title>
  <style>
    body { font-family: sans-serif; max-width: 600px; margin: 40px auto; padding: 0 20px; }
    textarea { width: 100%; height: 300px; font-size: 16px; padding: 15px; border: 2px solid #ddd; border-radius: 8px; resize: vertical; }
    .status { margin-top: 10px; font-size: 14px; color: #888; }
  </style>
</head>
<body>
  <h1>📝 メモ帳</h1>
  <textarea id="memo" placeholder="ここにメモを書いてください..."></textarea>
  <p class="status" id="status"></p>
  <script src="memo.js"></script>
</body>
</html>

JavaScript(memo.js)

// HTML要素を取得
const memo = document.getElementById("memo");
const status = document.getElementById("status");

// ページを開いたとき、保存済みのメモを読み込む
const savedMemo = localStorage.getItem("memo-content");
if (savedMemo !== null) {
  memo.value = savedMemo;
  status.textContent = "保存済みのメモを読み込みました";
}

// テキストが変更されるたびに自動保存
memo.addEventListener("input", function() {
  localStorage.setItem("memo-content", memo.value);
  status.textContent = "自動保存しました ✓";
});

コード解説

  • ページを開いたとき、getItemで保存済みのメモを読み込みます
  • nullでなければ(保存データがあれば)テキストエリアに表示します
  • inputイベントで、文字が入力されるたびにsetItemで保存します

イベント処理の基本addEventListenerの使い方を復習できます。DOM操作の基本getElementByIdの詳細を学べます。

実践2:テーマ切り替え(ダークモード)

ダークモードとライトモードを切り替えて、設定をlocalStorageに保存します。次にページを開いたとき、前回の設定が反映されます。

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>テーマ切り替え</title>
  <style>
    body { font-family: sans-serif; text-align: center; padding: 60px 20px; transition: background-color 0.3s, color 0.3s; }
    body.light { background-color: #ffffff; color: #333333; }
    body.dark { background-color: #1a1a2e; color: #ffffff; }
    button { padding: 12px 24px; font-size: 16px; border: none; border-radius: 8px; cursor: pointer; margin-top: 20px; }
    body.light button { background-color: #333; color: #fff; }
    body.dark button { background-color: #fff; color: #333; }
  </style>
</head>
<body class="light">
  <h1>🌓 テーマ切り替え</h1>
  <p>ボタンを押すとテーマが変わります。設定は保存されます。</p>
  <button id="toggle-btn">ダークモードにする</button>
  <script src="theme.js"></script>
</body>
</html>

JavaScript(theme.js)

const body = document.body;
const toggleBtn = document.getElementById("toggle-btn");

// 保存済みのテーマを読み込む
const savedTheme = localStorage.getItem("theme");
if (savedTheme === "dark") {
  body.className = "dark";
  toggleBtn.textContent = "ライトモードにする";
}

// ボタンクリックでテーマを切り替え
toggleBtn.addEventListener("click", function() {
  if (body.className === "light") {
    body.className = "dark";
    toggleBtn.textContent = "ライトモードにする";
    localStorage.setItem("theme", "dark");
  } else {
    body.className = "light";
    toggleBtn.textContent = "ダークモードにする";
    localStorage.setItem("theme", "light");
  }
});

コード解説

  • ページ読み込み時にgetItem("theme")で保存済みの設定を確認
  • "dark"なら、bodyのクラスをdarkに変更
  • ボタンクリックでクラスを切り替え、同時にsetItemで設定を保存

オブジェクトを保存する:JSON.stringify / JSON.parse

localStorageは文字列しか保存できません。数値やオブジェクト(複数のデータをまとめたもの)を保存するには、変換が必要です。

解決:JSON.stringifyで変換して保存

JSON(ジェイソン)とは、データを文字列で表す形式です。

// 保存するとき:オブジェクト → 文字列
const scores = [85, 92, 78];
localStorage.setItem("scores", JSON.stringify(scores));
// 保存される値: "[85,92,78]"

読み込み:JSON.parseで元に戻す

// 読み込むとき:文字列 → オブジェクト
const saved = localStorage.getItem("scores");
const scores = JSON.parse(saved);
// scores = [85, 92, 78](配列として使える)

オブジェクトの例

// ユーザー設定を保存
const settings = {
  theme: "dark",
  fontSize: 16,
  notifications: true
};

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

// 読み込み
const saved = JSON.parse(localStorage.getItem("settings"));
console.log(saved.theme); // "dark"

JavaScriptのオブジェクトで、オブジェクトの基本を学べます。

注意点:知っておくべき3つのこと

注意1:容量制限がある

localStorageの容量は、ブラウザごとに約5MBです。テキストデータなら十分ですが、画像や動画は保存できません。

注意2:文字列しか保存できない

数値を保存しても、読み込むと文字列になります。

localStorage.setItem("count", 10);
const count = localStorage.getItem("count");
console.log(typeof count); // "string"(文字列!)
console.log(count + 1);    // "101"(文字列の結合になる)

// 正しくは数値に変換する
const num = Number(localStorage.getItem("count"));
console.log(num + 1); // 11

注意3:機密情報は保存しない

localStorageはブラウザの開発者ツールから誰でも見られます。パスワードや個人情報は絶対に保存しないでください。

localStorageの活用アイデア

基本を覚えたら、いろいろなアプリに応用できます。

  • ToDoリストの項目を保存する
  • ゲームのハイスコアを記録する
  • フォームの入力途中の内容を保存する
  • ポモドーロタイマーのセッション回数を保存する

まとめ

  • ✅ setItem(key, value)で保存、getItem(key)で読み込み
  • ✅ removeItem(key)で1つ削除、clear()で全削除
  • ✅ ページを閉じてもデータが残る
  • ✅ オブジェクトはJSON.stringifyで変換して保存
  • ✅ 容量は約5MB、機密情報は保存しない

localStorageを使えば、アプリの「使いやすさ」が格段に上がります。ぜひ自分のアプリに組み込んでみてください。

🎯 次のステップ

localStorageを使いこなして、もっと便利なアプリを作ろう!

目次

コースで実際に手を動かして学ぼう

レッスンではコードを書きながら基礎が身につきます

HTMLコースを始める →

この記事に出てくる用語

📣 この記事が役に立ったら

Xでシェア

💬 引用する場合はこちらをご利用ください:

JavaScriptのlocalStorageでブラウザにデータを保存する方法を初心者向けに解説。メモ帳アプリとダークモード切り替えの実践コードつき。

出典: https://start-web-programming.com/blog/javascript-local-storage-tutorial/