ステップ1ではlocalStorageの基本操作を学びましたが、まだ実際のタスク管理アプリにはその機能が組み込まれていません。そのため、タスクを追加してもブラウザを更新すると消えてしまいます。
現在のアプリの問題を体験
現在のベースコードを使って以下を確認してください:
なぜこの問題が起きるのか? 現在のアプリは、タスクをJavaScriptの配列(メモリ)にのみ保存しています。 ブラウザを更新すると、メモリの内容がリセットされるため、データが失われます。
このステップを終えると、タスク管理アプリに以下の機能が実装され、動作するようになります。
JSON.stringify()
を使ってオブジェクト配列をlocalStorageに保存できるtry-catch
文でlocalStorage操作のエラーハンドリングができる期待する動作:
ベースコードのscript.js
に以下の機能を追加しましょう。
// タスクデータ(配列形式) - まだlocalStorageからの読み込みなし
let tasks = [];
// ★ 追加: localStorageのキー名を定数として定義
const STORAGE_KEY = "______";
指示: localStorageで使用するキー名を"taskList"として定義してください。
// タスクを追加する関数(まだlocalStorage保存なし)
function addTask() {
// ... 既存のコード ...
// ★ この位置に保存機能を追加します(手順3で実装)
// 画面に表示
renderTasks();
updateProgress();
}
// ★ 追加: タスクをlocalStorageに保存する関数
function saveTasksToStorage() {
______ {
// 配列をJSON文字列に変換してlocalStorageに保存
const tasksJson = JSON.______(tasks);
localStorage.______(STORAGE_KEY, tasksJson);
console.log("💾 localStorage保存完了:", tasksJson);
} ______ (error) {
console.error("❌ localStorage保存エラー:", error);
alert("データの保存に失敗しました");
}
}
指示:
______
:エラーハンドリングの開始キーワード(3文字)を入力してくださいJSON.______
:オブジェクトをJSON文字列に変換するメソッド名(9文字)を入力してくださいlocalStorage.______
:localStorageにデータを保存するメソッド名(7文字)を入力してください______
:エラーが発生した時の処理を記述するキーワード(5文字)を入力してくださいfunction addTask() {
const taskText = taskInput.value.trim();
if (taskText === "") {
alert("タスクを入力してください");
return;
}
// 新しいタスクオブジェクトを作成
const newTask = {
id: Date.now(),
text: taskText,
completed: false
};
// タスク配列に追加
tasks.push(newTask);
// 入力フィールドをクリア
taskInput.value = "";
// ★ 追加: localStorageに自動保存
______();
// 画面に表示
renderTasks();
updateProgress();
console.log("✅ タスクを追加し、localStorageに保存しました:", newTask.text);
}
指示: ______
にlocalStorageへの保存を実行する関数名(18文字)を入力してください。
try-catch文について:
JSON.stringify()について:
定数STORAGE_KEYについて:
実装が完了したら、以下の手順で動作確認をしてください:
💾 localStorage保存完了: [...]
のようなメッセージが表示されていること。http://127.0.0.1:5500
(または同様のローカルサーバーアドレス) の下に、STORAGE_KEY
で定義したキー(例: taskList
)が存在すること。❌ localStorage保存エラー:
というメッセージとエラー詳細がConsoleに表示されること。データの保存に失敗しました
というアラートが表示されること。const STORAGE_KEY = "taskList"; // または "todoTasks" など、プロジェクトで一貫した名前
function saveTasksToStorage() {
try {
const tasksJson = JSON.stringify(tasks);
localStorage.setItem(STORAGE_KEY, tasksJson);
console.log("💾 localStorage保存完了:", tasksJson);
} catch (error) {
console.error("❌ localStorage保存エラー:", error);
alert("データの保存に失敗しました");
}
}
// addTask関数内に追加
saveTasksToStorage();
{id: 1, text: "学習"}
→ '{"id":1,"text":"学習"}'
ステップ2でタスクの保存機能を実装しました。次のステップ3では、ページ読み込み時にlocalStorageからタスクを復元する機能を実装し、完全な永続化を実現します!