現在のタスク管理アプリでは、タスクを追加してもブラウザを更新すると全てのタスクが消えてしまいます。これは、データがコンピュータのメモリ上に一時的にしか保存されていないためです。
この問題を解決するために、ブラウザのlocalStorage
という機能を使って、データを永続的に保存する方法を学びます。
準備:ベースアプリの動作確認
まずは、演習用ベースコードが正しく動作することを確認しましょう。
演習用ベースコード
フォルダをVS Codeで開いてくださいindex.html
を右クリック → 「Open with Live Server」なぜデータが消えるのか? 現在のアプリは、データをJavaScriptの変数(メモリ)にのみ保存しています。 ブラウザを更新すると、メモリがリセットされるため、データが失われます。
setItem
, getItem
, removeItem
, clear
)が理解できるJSON.stringify()
とJSON.parse()
の基本的な使い方が分かるhttp://127.0.0.1:5500
)をクリックConsoleタブに移動して、以下のコードを順番に実行してみましょう:
指示: 以下の穴埋めを完成させて、コンソールで実行し、各操作後にApplicationタブでlocalStorageの内容を確認してください。
// 1. データを保存する - "userName"というキーで"山田太郎"という値を保存
localStorage._____(_____, _____);
// 2. データを取得する - "userName"キーの値を取得
const userName = localStorage._____(_____);
console.log("保存されたユーザー名:", userName);
// 3. データを削除する - "userName"キーのデータを削除
localStorage._____(_____);
// 4. 全てのデータを削除する - localStorage内の全データを削除
localStorage._____();
localStorageは文字列しか保存できません。オブジェクトや配列を保存するには、JSON形式に変換する必要があります。
指示: タスクオブジェクトをlocalStorageに保存・復元してみましょう
// タスクオブジェクトを作成
const task = {
id: 1,
text: "localStorage学習",
completed: false
};
// 1. オブジェクトをJSON文字列に変換し、"sampleTask"キーで保存
const taskJson = JSON._____(task);
localStorage.setItem("sampleTask", _____);
// 2. "sampleTask"キーでJSON文字列を取得し、オブジェクトに復元
const savedTaskJson = localStorage._____("sampleTask");
const restoredTask = JSON._____(savedTaskJson);
console.log("復元されたタスク:", restoredTask);
console.log("タスクのテキスト:", restoredTask._____);
console.log("完了状態:", restoredTask._____);
localStorage.method()
の形で使用します_____(キー, 値)
_____(キー)
_____(キー)
_____()
(引数なし)JSON._____(オブジェクト)
→ 文字列に変換JSON._____(文字列)
→ オブジェクトに復元オブジェクト.プロパティ名
基本操作の確認:
localStorage.setItem("testKey", "testValue")
を実行後、ApplicationタブのLocal Storageに testKey
と testValue
が表示される。localStorage.getItem("testKey")
を実行すると、"testValue"
が返される。localStorage.removeItem("testKey")
を実行後、ApplicationタブのLocal Storageから testKey
が削除される。localStorage.setItem("anotherKey", "anotherValue")
)を保存後、Consoleタブで localStorage.clear()
を実行すると、ApplicationタブのLocal Storageが空になる。JSON操作の確認:
const myObject = { name: "test", value: 123 };
localStorage.setItem("testObject", JSON.stringify(myObject));
const retrievedObject = JSON.parse(localStorage.getItem("testObject"));
console.log(retrievedObject.name); // "test" が表示される
console.log(retrievedObject.value); // 123 が表示される
// 1. データを保存する
localStorage.setItem("userName", "山田太郎");
// 2. データを取得する
const userName = localStorage.getItem("userName");
console.log("保存されたユーザー名:", userName);
// 3. データを削除する
localStorage.removeItem("userName");
// 4. 全てのデータを削除する
localStorage.clear();
// タスクオブジェクトを作成
const task = {
id: 1,
text: "localStorage学習",
completed: false
};
// 1. オブジェクトをJSON文字列に変換し、保存
const taskJson = JSON.stringify(task);
localStorage.setItem("sampleTask", taskJson);
// 2. JSON文字列を取得し、オブジェクトに復元
const savedTaskJson = localStorage.getItem("sampleTask");
const restoredTask = JSON.parse(savedTaskJson);
console.log("復元されたタスク:", restoredTask);
console.log("タスクのテキスト:", restoredTask.text);
console.log("完了状態:", restoredTask.completed);
http://localhost:5500
とhttps://example.com
は別々のストレージJSON.stringify()
で文字列化が必要JSON.parse()
でオブジェクトに復元ステップ1で学んだlocalStorage APIの基本操作を使って、実際のタスク管理アプリに自動保存機能を実装していきましょう!