2日目のゴール
2日目のテーマは
「JSON を“アプリのデータ保存”として使うための基礎を固める」
これです。
1日目では
「JSONとは何か」「Pythonで読み書きできる」
という“道具の理解”が中心でした。
2日目は一歩進んで、
- JSON に 複数データを保存する
- アプリ起動時に JSON を読み込んで前回の状態を復元する
- データを更新して 再度 JSON に書き戻す
という「アプリとしてのデータ保存」の基本パターンを学びます。
ここを理解すると、
“設定ファイル”“ユーザー情報”“メモアプリ”“Todoアプリ”など
あらゆるアプリの「保存機能」が作れるようになります。
JSON保存アプリの基本構造を理解する
JSONは「アプリの外に置くデータベース」
アプリを閉じてもデータが残っていて、
次に起動したときに前回の状態が復元される。
これを実現するのが JSON ファイルです。
アプリの流れはこうなります。
- 起動時に JSON ファイルを読み込む
- Python のデータ(list/dict)として扱う
- データを追加・更新する
- 終了時(または更新時)に JSON に書き戻す
この「読み込む → 使う → 保存する」の流れは
どんなアプリでも共通です。
JSONに「複数データ」を保存する
1日目のデータは「1件」だった
今日は「複数件」を扱う
1日目では、こんな1件のデータを保存しました。
{
"name": "Taro",
"age": 25
}
2日目では、複数のユーザーを保存します。
[
{
"name": "Taro",
"age": 25
},
{
"name": "Hanako",
"age": 30
}
]
JSON では、
複数データは「リスト(配列)」で持つ
これが鉄則です。
Python ではこうなります。
users = [
{"name": "Taro", "age": 25},
{"name": "Hanako", "age": 30}
]
Pythonこの構造を JSON に保存し、
読み込んだら同じ構造で戻ってきます。
JSONファイルを読み込む関数を作る
「ファイルがないときは空のリストを返す」が重要
アプリを作るとき、
最初の起動では JSON ファイルが存在しない
という状況が必ず起きます。
そのため、読み込み関数はこう書くのが定番です。
import json
import os
def load_users(filename):
if not os.path.exists(filename):
return [] # ファイルがなければ空リスト
with open(filename, "r", encoding="utf-8") as f:
return json.load(f)
Pythonここでの重要ポイントは、
- ファイルがないときにエラーにしない
- 空のリストを返してアプリを動かせるようにする
という「アプリとしての優しさ」です。
JSONファイルに保存する関数を作る
「Pythonのデータ → JSONファイル」に書き出す
保存関数はこう書きます。
def save_users(filename, users):
with open(filename, "w", encoding="utf-8") as f:
json.dump(users, f, ensure_ascii=False, indent=2)
Pythonここでのポイントは、
usersは list(複数データ)- JSON に書き出すときは
dump - 日本語対応のため
ensure_ascii=False - 見やすくするため
indent=2
という“お約束”を守ることです。
2日目のミニアプリ:ユーザー管理アプリ
「追加 → 保存 → 読み込み → 表示」の流れを作る
今日のミニアプリは、
ユーザーを追加して JSON に保存し、
次回起動時に復元するアプリです。
アプリの全体像
import json
import os
FILENAME = "users.json"
def load_users(filename):
if not os.path.exists(filename):
return []
with open(filename, "r", encoding="utf-8") as f:
return json.load(f)
def save_users(filename, users):
with open(filename, "w", encoding="utf-8") as f:
json.dump(users, f, ensure_ascii=False, indent=2)
def add_user(users):
name = input("名前を入力してください: ")
age_text = input("年齢を入力してください: ")
try:
age = int(age_text)
except ValueError:
print("年齢は数字で入力してください。0 として保存します。")
age = 0
user = {"name": name, "age": age}
users.append(user)
print("ユーザーを追加しました。")
def show_users(users):
if not users:
print("ユーザーはまだいません。")
return
print("=== ユーザー一覧 ===")
for u in users:
print(f"{u['name']} ({u['age']}歳)")
def main():
users = load_users(FILENAME)
print("JSONファイルから読み込みました。")
while True:
print("\n1: ユーザー追加")
print("2: ユーザー一覧表示")
print("0: 終了")
choice = input("番号を選んでください: ")
if choice == "1":
add_user(users)
save_users(FILENAME, users)
elif choice == "2":
show_users(users)
elif choice == "0":
save_users(FILENAME, users)
print("終了します。")
break
else:
print("正しい番号を入力してください。")
main()
Pythonコードの重要ポイントを深掘りする
起動時に JSON を読み込む
users = load_users(FILENAME)
Pythonこれにより、
前回保存したユーザーが復元されます。
アプリが「前回の続き」から始まるのは
JSON 保存の最大のメリットです。
データを更新したらすぐ保存する
add_user(users)
save_users(FILENAME, users)
Pythonデータを変更したら、
その場で JSON に書き戻すのが安全です。
アプリが落ちてもデータが残るからです。
JSONは「アプリの外にあるデータベース」
今日のアプリでは、
JSON が「ユーザー一覧データベース」として機能しています。
Python の list/dict を
そのまま JSON に保存できるので、
- 設定ファイル
- Todoリスト
- メモアプリ
- 家計簿
- 学習記録
など、あらゆるアプリに応用できます。
2日目で絶対に押さえておきたいこと
JSON保存アプリの基本パターン
今日の本質はこれです。
起動時:JSON → Python(load)
アプリ中:Pythonのデータを操作
保存時:Python → JSON(dump)
この流れを理解すれば、
どんなアプリでも「保存機能」が作れます。
次の日へのつながり
3日目では、
「データの検索・更新・削除」
を JSON 保存アプリに追加します。
つまり、
- 特定のユーザーを探す
- 年齢を変更する
- ユーザーを削除する
といった「データ操作」を学びます。
ここまで来ると、
あなたはもう“本物のアプリ開発”の入り口に立っています。

