ミニ家計簿アプリ 1日目のゴール
1日目のテーマは 「配列とオブジェクトを使って“1件の支出”と“支出の一覧”を表現できるようになること」 です。
ミニ家計簿は、
- 日付
- 項目(食費・交通費など)
- 金額
- メモ
といった情報を扱います。 これを オブジェクト として表現し、 それらを 配列 にためていくことで、 「家計簿の1行」と「家計簿全体」をコードで表現していきます。
家計簿で扱う1件分のデータを言葉で整理する
まず、「家計簿の1行」に何が必要かを整理します。
- 日付:いつ使ったお金か
- カテゴリ:何に使ったか(食費・交通費など)
- 金額:いくら使ったか
- メモ:ひとことメモ(例:ランチ、電車代など)
これを ひとつのまとまり として扱いたいので、 JavaScriptでは オブジェクト を使います。
家計簿1件分をオブジェクトで表現する
オブジェクトは「名前付きの値の集まり」です。 家計簿1件分をオブジェクトで書くと、次のようになります。
// 家計簿の1件分を表すオブジェクト
const record = {
date: "2026-08-14", // 日付
category: "食費", // カテゴリ(何に使ったか)
amount: 800, // 金額(数値)
memo: "コンビニでおにぎり" // メモ
};
JavaScript深掘りポイント
date,category,amount,memoは「プロパティ名」"2026-08-14"や800は「プロパティの値」record.dateのようにして、あとから値を取り出せる
オブジェクトは、 「意味のあるひとまとまりのデータ」 を表現するのに向いています。
複数の家計簿データを配列で管理する
家計簿は、1件だけではなく、 日々の支出がたくさんたまっていくもの です。
そこで、複数のオブジェクトを 配列 に入れて管理します。
// 家計簿の一覧を表す配列
const records = [
{
date: "2026-08-14",
category: "食費",
amount: 800,
memo: "コンビニでおにぎり"
},
{
date: "2026-08-14",
category: "交通費",
amount: 320,
memo: "電車代"
},
{
date: "2026-08-13",
category: "日用品",
amount: 1200,
memo: "ドラッグストアで洗剤"
}
];
JavaScript深掘りポイント
recordsは「家計簿の行の一覧」- 中身は オブジェクトの配列
records[0].categoryのようにして、 「1件目のカテゴリ」を取り出せる
ここで、 「オブジェクト × 配列」 の組み合わせが とても強力だということを感じてほしいです。
ミニ家計簿 1日目の小さなアプリを作る
1日目のゴールとして、 「あらかじめ用意した家計簿データを画面に一覧表示するミニアプリ」 を作ってみます。
HTMLの骨組み
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ミニ家計簿 1日目</title>
</head>
<body>
<h1>ミニ家計簿(1日目)</h1>
<!-- 家計簿一覧を表示する場所 -->
<ul id="recordList"></ul>
<script>
// ここに JavaScript を書いていく
</script>
</body>
</html>
<ul> は「箇条書きリスト」です。 ここに、家計簿の1件ずつを <li> として追加していきます。
JavaScriptで家計簿データを定義する
HTMLの <script> の中に、 家計簿の配列を定義します。
// 家計簿の一覧を表す配列(サンプルデータ)
const records = [
{
date: "2026-08-14",
category: "食費",
amount: 800,
memo: "コンビニでおにぎり"
},
{
date: "2026-08-14",
category: "交通費",
amount: 320,
memo: "電車代"
},
{
date: "2026-08-13",
category: "日用品",
amount: 1200,
memo: "ドラッグストアで洗剤"
}
];
JavaScriptこの時点で、 「家計簿の中身」をコードで表現できている 状態です。
配列を画面に表示する関数を作る
次に、 records 配列の中身を画面に表示する関数を作ります。
// 家計簿の配列を画面に表示する関数
function renderRecords(recordsArray, listElement) {
// いったん表示を空にする
listElement.innerHTML = "";
// 配列の各要素(1件分の家計簿)を順番に処理
recordsArray.forEach(function(record) {
// li 要素を作成
const li = document.createElement("li");
// 表示用のテキストを組み立てる
const text =
record.date + " / " +
record.category + " / " +
record.amount + "円 / " +
record.memo;
// li にテキストをセット
li.textContent = text;
// ul に li を追加
listElement.appendChild(li);
});
}
JavaScript深掘りポイント
recordsArray.forEach(...)- 配列の各要素(家計簿1件)を順番に処理するためのメソッド
record.dateやrecord.amount- オブジェクトのプロパティを使って、 「意味のある情報」を取り出している
createElement("li")+appendChild(li)- JavaScriptでHTML要素を作り、画面に追加している
この関数は 「家計簿配列 → 画面表示」 という役割を持っています。
ミニ家計簿 1日目の完成コード
ここまでの内容をひとつにまとめた 1日目の完成版です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ミニ家計簿 1日目</title>
</head>
<body>
<h1>ミニ家計簿(1日目)</h1>
<!-- 家計簿一覧を表示する場所 -->
<ul id="recordList"></ul>
<script>
// 家計簿の一覧を表す配列(サンプルデータ)
const records = [
{
date: "2026-08-14",
category: "食費",
amount: 800,
memo: "コンビニでおにぎり"
},
{
date: "2026-08-14",
category: "交通費",
amount: 320,
memo: "電車代"
},
{
date: "2026-08-13",
category: "日用品",
amount: 1200,
memo: "ドラッグストアで洗剤"
}
];
// 家計簿の配列を画面に表示する関数
function renderRecords(recordsArray, listElement) {
// いったん表示を空にする
listElement.innerHTML = "";
// 配列の各要素(1件分の家計簿)を順番に処理
recordsArray.forEach(function(record) {
// li 要素を作成
const li = document.createElement("li");
// 表示用のテキストを組み立てる
const text =
record.date + " / " +
record.category + " / " +
record.amount + "円 / " +
record.memo;
// li にテキストをセット
li.textContent = text;
// ul に li を追加
listElement.appendChild(li);
});
}
// DOM要素の取得
const recordList = document.getElementById("recordList");
// ページ読み込み時に家計簿を表示
renderRecords(records, recordList);
</script>
</body>
</html>
配列・オブジェクトの「感覚」をもう一段深く理解する
● オブジェクトは「意味のある1件分」を表す
家計簿の1行は、
- 日付
- カテゴリ
- 金額
- メモ
という複数の情報から成り立っています。 これをオブジェクトにすると、 「1件分の意味」がコードにそのまま乗る ようになります。
● 配列は「たくさんの1件分」をまとめる箱
家計簿は、日々の記録が増えていくものです。 配列は 「順番を持ったデータの集まり」 なので、
- 新しい記録を末尾に追加
- 古い記録は先頭側に残る
forEachで順番に処理
といった形で、 「家計簿の一覧」を自然に表現できます。
● 関数で「表示の責任」をまとめる
renderRecords() は、
- 配列を受け取る
- HTML要素を受け取る
- 画面に表示する
という ひとつの責任 を持った関数です。 このように役割を分けることで、 コードが読みやすくなり、 後から機能を増やすときにも迷いにくくなります。
1日目で本当に掴んでほしいこと
- オブジェクトは「1件分の意味のあるデータ」を表す道具
- 配列は「その1件分をたくさん集めた一覧」を表す道具
- 関数で「配列 → 画面表示」をまとめるとコードが整理される
ミニ家計簿は、 とてもシンプルな題材ですが、
- 配列
- オブジェクト
- 関数
- DOM操作
という、JavaScriptの基礎を 自然な形で組み合わせて体験できるアプリです。
次のステップでは、
- 新しい支出をフォームから追加する
- 合計金額を計算する など、家計簿らしい機能を少しずつ育てていくことができます。


