日報管理アプリ 1日目のゴール
1日目のテーマは 「日報(業務日報)を“記録・保存”できる最小のアプリを作りながら、変数・条件分岐・繰り返し・関数・ファイル操作・JSON の基礎を体験すること」 です。
日報管理は初心者にとって非常に学びやすい題材です。 理由はシンプルで、
- テキスト(文章)を扱うため、データ構造が理解しやすい
- JSON を使うことで「辞書のリスト」を自然に学べる
- 記録 → 保存 → 表示 の流れが明確
- 後日「検索」「編集」「削除」「集計」などに発展できる
というメリットがあります。
日報管理アプリ 1日目で作る機能
- 日付
- タイトル
- 本文(今日やったこと)
- 明日の予定
これらを入力し、 JSONファイルに保存して一覧表示できるアプリ を作ります。
この流れで、 変数・条件分岐・繰り返し・関数・ファイル操作・JSON をすべて体験できます。
JSONとは何か(初心者向けにかみ砕いて)
JSON は 「辞書やリストをそのまま保存できるファイル形式」 です。
日報データは次のような形になります。
{
"date": "2026-08-11",
"title": "新機能のテスト",
"body": "午前はテスト、午後は修正対応。",
"next": "明日はレビュー準備"
}
Python の辞書とほぼ同じ形なので、 読み込むとそのまま辞書として使える という大きなメリットがあります。
JSONファイルを扱うための基本関数
JSONを読み込む関数
import json
def load_report):
"""
日報データを JSON から読み込む
"""
try:
with open("reports.json", "r", encoding="utf-8") as f:
return json.load(f)
except FileNotFoundError:
return [] # 初回はファイルがないので空リスト
PythonJSONに保存する関数
def save_reports(reports):
"""
日報データ(辞書のリスト)を JSON に保存する
"""
with open("reports.json", "w", encoding="utf-8") as f:
json.dump(reports, f, ensure_ascii=False, indent=2)
Python深掘りポイント
- JSON は辞書のリストをそのまま保存できる
ensure_ascii=False→ 日本語をそのまま保存indent=2→ 読みやすい整形済みJSON
日報を登録する機能(最重要)
from datetime import datetime
def add_report():
"""
日報を登録する
"""
date_str = datetime.now().strftime("%Y-%m-%d")
title = input("今日のタイトル: ")
body = input("今日やったこと: ")
next_plan = input("明日の予定: ")
reports = load_reports()
new_report = {
"date": date_str,
"title": title,
"body": body,
"next": next_plan
}
reports.append(new_report)
save_reports(reports)
print("日報を登録しました。")
Python深掘りポイント
- 日付は自動で取得
- 辞書としてまとめることで扱いやすい
- JSON保存でデータが壊れにくい
日報一覧を表示する機能
def show_reports():
"""
日報一覧を表示する
"""
reports = load_reports()
if not reports:
print("まだ日報がありません。")
return
print("=== 日報一覧 ===")
for r in reports:
print(f"日付: {r['date']}")
print(f"タイトル: {r['title']}")
print(f"今日やったこと: {r['body']}")
print(f"明日の予定: {r['next']}")
print("------------------------------")
Python深掘りポイント
- 辞書のリストを繰り返し処理で表示
- JSON → Python辞書 → 表示 の流れが自然に理解できる
メニューを表示する関数
def show_menu():
print("------------------------------")
print("日報管理アプリ 1日目 メニュー")
print("1: 日報を登録する")
print("2: 日報一覧を表示する")
print("3: 終了する")
print("------------------------------")
Pythonmain(アプリ全体の流れ)
def main():
print("Python 日報管理アプリ 1日目")
print("JSON形式で日報を記録する最小のアプリを作ります。")
while True:
show_menu()
choice = input("番号を入力してください(1〜3): ")
if choice == "1":
add_report()
elif choice == "2":
show_reports()
elif choice == "3":
print("アプリを終了します。")
break
else:
print("1〜3 の番号を入力してください。")
Python1日目の完成コード(まとめ)
import json
from datetime import datetime
def load_reports():
try:
with open("reports.json", "r", encoding="utf-8") as f:
return json.load(f)
except FileNotFoundError:
return []
def save_reports(reports):
with open("reports.json", "w", encoding="utf-8") as f:
json.dump(reports, f, ensure_ascii=False, indent=2)
def add_report():
date_str = datetime.now().strftime("%Y-%m-%d")
title = input("今日のタイトル: ")
body = input("今日やったこと: ")
next_plan = input("明日の予定: ")
reports = load_reports()
new_report = {
"date": date_str,
"title": title,
"body": body,
"next": next_plan
}
reports.append(new_report)
save_reports(reports)
print("日報を登録しました。")
def show_reports():
reports = load_reports()
if not reports:
print("まだ日報がありません。")
return
print("=== 日報一覧 ===")
for r in reports:
print(f"日付: {r['date']}")
print(f"タイトル: {r['title']}")
print(f"今日やったこと: {r['body']}")
print(f"明日の予定: {r['next']}")
print("------------------------------")
def show_menu():
print("------------------------------")
print("日報管理アプリ 1日目 メニュー")
print("1: 日報を登録する")
print("2: 日報一覧を表示する")
print("3: 終了する")
print("------------------------------")
def main():
print("Python 日報管理アプリ 1日目")
print("JSON形式で日報を記録する最小のアプリを作ります。")
while True:
show_menu()
choice = input("番号を入力してください(1〜3): ")
if choice == "1":
add_report()
elif choice == "2":
show_reports()
elif choice == "3":
print("アプリを終了します。")
break
else:
print("1〜3 の番号を入力してください。")
if __name__ == "__main__":
main()
Python1日目で本当に掴んでほしいこと
● JSONは「辞書とリストをそのまま保存できる魔法の箱」
日報のような文章データでも扱いやすい。
● 関数を分けることでアプリが整理される
登録・表示・保存・読み込みが明確に分かれる。
● ファイル操作は「アプリに記憶を持たせる技術」
日報が残ることで、アプリが“道具”として使えるようになる。
次のステップ(2日目の予告)
2日目では日報管理アプリをさらに育てて、
- 日付検索
- タイトル検索
- 部分一致検索
- 日報の編集
という「日報管理の基本形」を完成させます。


