3日目のゴール
3日目のテーマは
「JSON に保存されたデータを“検索・更新・削除”できるようにする」
つまり、アプリとして必要な“データ操作の基礎(CRUD)”を身につけることです。
1日目:JSON の基本
2日目:複数データを JSON に保存し、起動時に復元
3日目:保存されたデータを自由に操作できるようにする
ここまで来ると、JSON は単なるファイルではなく
「あなた専用の小さなデータベース」 として扱えるようになります。
CRUDという考え方を理解する
データ操作の4つの柱
アプリでデータを扱うとき、必ず次の4つが必要になります。
Create(作成)
Read(読み取り)
Update(更新)
Delete(削除)
2日目までで Create と Read はできました。
3日目では Update と Delete を追加して、
アプリとしての完成度を一気に高めます。
今日扱うデータの形を確認する
JSON と Python の対応を頭に置く
例として「ユーザー情報」を扱います。
Python のデータはこうです。
users = [
{"name": "Taro", "age": 25},
{"name": "Hanako", "age": 30}
]
PythonJSON にするとこうなります。
[
{"name": "Taro", "age": 25},
{"name": "Hanako", "age": 30}
]
3日目では、この users に対して
- 名前で検索する
- 年齢を更新する
- ユーザーを削除する
という操作を追加します。
検索:特定のデータを見つける
find_user 関数を作る
まずは「検索」から始めます。
def find_user(users, name):
for user in users:
if user["name"] == name:
return user
return None
Pythonここでの重要ポイントは、
- 見つかったらそのユーザー(dict)を返す
- 見つからなければ None を返す
という「検索関数の基本形」を作っていることです。
この関数があるだけで、
更新も削除も一気に書きやすくなります。
更新:データの一部を書き換える
update_user_age 関数を作る
検索を使って、年齢を更新する関数を作ります。
def update_user_age(users, name, new_age):
user = find_user(users, name)
if user is None:
print("ユーザーが見つかりません。")
return False
user["age"] = new_age
print("年齢を更新しました。")
return True
Pythonここで深掘りしたいのは、
「更新は検索してから値を変えるだけ」
というシンプルな構造です。
更新処理は複雑に見えますが、
実は「検索 → 値を変更」の2ステップだけで成立します。
削除:データを取り除く
delete_user 関数を作る
削除は「リストから要素を取り除く」だけです。
def delete_user(users, name):
for i, user in enumerate(users):
if user["name"] == name:
del users[i]
print("ユーザーを削除しました。")
return True
print("ユーザーが見つかりません。")
return False
Pythonここでの重要ポイントは、
- enumerate で「インデックス+データ」を取り出す
- インデックスを使って削除する
という「削除の基本形」を覚えることです。
更新・削除したら JSON に保存し直す
データ操作 → 保存 の流れを徹底する
更新や削除をしたら、
必ず JSON に書き戻します。
if update_user_age(users, name, new_age):
save_users("users.json", users)
Pythonif delete_user(users, name):
save_users("users.json", users)
Pythonこの「変更したらすぐ保存する」習慣が
アプリの信頼性を高めます。
3日目のミニアプリ:検索・更新・削除つきユーザー管理アプリ
全体コード(理解しやすいように整理済み)
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
users.append({"name": name, "age": age})
print("ユーザーを追加しました。")
def find_user(users, name):
for user in users:
if user["name"] == name:
return user
return None
def update_user_age(users, name, new_age):
user = find_user(users, name)
if user is None:
print("ユーザーが見つかりません。")
return False
user["age"] = new_age
return True
def delete_user(users, name):
for i, user in enumerate(users):
if user["name"] == name:
del users[i]
return True
return False
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("3: 年齢更新")
print("4: 削除")
print("0: 終了")
choice = input("番号を選んでください: ")
if choice == "1":
add_user(users)
save_users(FILENAME, users)
elif choice == "2":
show_users(users)
elif choice == "3":
name = input("更新するユーザー名: ")
age = int(input("新しい年齢: "))
if update_user_age(users, name, age):
save_users(FILENAME, users)
print("更新しました。")
else:
print("ユーザーが見つかりません。")
elif choice == "4":
name = input("削除するユーザー名: ")
if delete_user(users, name):
save_users(FILENAME, users)
print("削除しました。")
else:
print("ユーザーが見つかりません。")
elif choice == "0":
save_users(FILENAME, users)
print("終了します。")
break
else:
print("正しい番号を入力してください。")
main()
Python3日目で絶対に押さえておきたいこと
JSON保存アプリの「データ操作の基本パターン」
今日の本質はこれです。
検索 → 更新 or 削除 → 保存
この流れを理解すれば、
どんな JSON 保存アプリでも応用できます。
特に重要なのは次の3つ。
検索関数を作ると、他の処理が劇的に楽になる
更新は「検索してから値を変える」だけ
削除は enumerate でインデックスを使うと安全
この3つは、
Python でデータ操作をするうえでの“基本技術”です。
次の日へのつながり
4日目では、
「アプリ全体の構造を整理して、読みやすく・壊れにくくする」
という、アプリ開発で最も重要なスキルに進みます。
ここまで来れば、
あなたはもう JSON を使った“本格的なアプリ開発者”の仲間入りです。
あなたはもう“JSONを使ったアプリ開発者”の仲間入りです。

