1日目のゴールと全体像
日記アプリ 1日目のテーマは 「とてもシンプルな“テキスト日記アプリ”を作りながら、変数・条件分岐・繰り返し・関数・ファイル操作の入口を体験すること」 です。
ここで作るのは、次のようなアプリです。
- 今日の日記を入力する
- 日記をテキストファイルに保存する
- 終了するか、もう一度書くかを選べる
画面はシンプルな「コンソール(黒い画面)」だけですが、 この中に Python の基本がぎゅっと詰まっています。
日記アプリの最小イメージ
まず、完成イメージを言葉で描いてみます。
- 「今日の日付を入力してください」
- 「今日の気分を一言で教えてください」
- 「今日の出来事や感じたことを書いてください」
- 「保存しました」と表示
- 「続けて書きますか?(y/n)」と聞く
yならもう一度、nなら終了
これを Python で作るのが 1日目のゴールです。
変数とは何かを日記アプリで感じる
Python の変数は「値に名前をつけて覚えておくメモ」です。
日記アプリでは、たとえば次のような情報を変数に入れます。
- 日付 →
date_str - 気分 →
mood - 本文 →
content
こうしておくことで、あとでファイルに書き込むときに 「どの値がどれか」を迷わず扱えます。
条件分岐とは「状況によって動きを変えること」
日記アプリでの条件分岐の代表例はこれです。
- ユーザーが
yと入力したら → もう一度日記を書く - ユーザーが
nと入力したら → アプリを終了する - それ以外 → 「y か n を入力してください」と注意する
Python では if / elif / else を使って書きます。
繰り返しとは「同じ流れを何度も回すこと」
日記アプリでは、 「日記を書く → 保存する → 続けるか聞く」 という流れを何度も繰り返せるようにします。
ここでは while 文 を使います。
while True:と書くと「ずっと繰り返す」- 中で
breakを使うと「そこでループを抜ける」
これが「繰り返し+条件分岐」の基本パターンです。
関数とは「処理に名前をつけてまとめること」
日記アプリでは、 「1回分の日記を書く&保存する」処理を関数にまとめます。
例えば write_diary() という関数を作っておくと、
- メインの流れが読みやすくなる
- 日記を書く処理をあとで拡張しやすくなる
関数は「ひとつの仕事に名前をつける」イメージで捉えるとわかりやすいです。
ファイル操作とは「外の世界にデータを残すこと」
Python では open() を使ってファイルを扱います。
日記アプリでは、
diary.txtというファイルに日記を追記する- 1行ずつではなく「1件分のまとまり」を書き込む
という形で使います。
ポイントは次の3つです。
open("diary.txt", "a", encoding="utf-8")"a"は「追記モード」- 既存の内容を消さずに、後ろに追加していく
withを使うことで「書き終わったら自動で閉じる」write()で文字列を書き込む
日記アプリ 1日目の完成コード
ここから、実際のコードを見ていきます。 1ファイル(diary_app.py など)に書いて動かせる形です。
# 日記アプリ 1日目
# 目的:
# - 今日の日記を入力して、テキストファイルに保存する
# - 変数・条件分岐・繰り返し・関数・ファイル操作を体験する
def write_diary():
"""
1回分の日記を入力して、ファイルに保存する関数
"""
# 日付を入力してもらう
date_str = input("今日の日付を入力してください(例:2026-08-07): ")
# 今日の気分を一言で入力してもらう
mood = input("今日の気分を一言で教えてください: ")
# 今日の出来事や感じたことを入力してもらう
print("今日の出来事や感じたことを書いてください。")
print("書き終わったら Enter を押してください。")
content = input("本文: ")
# ファイルに書き込む(追記モードで開く)
# encoding="utf-8" を指定することで、日本語も安全に扱える
with open("diary.txt", "a", encoding="utf-8") as f:
f.write("==== 日記 ====\n")
f.write(f"日付: {date_str}\n")
f.write(f"気分: {mood}\n")
f.write("本文:\n")
f.write(content + "\n")
f.write("\n") # 空行を入れて区切りをわかりやすくする
print("日記を保存しました。diary.txt を確認してみてください。")
def main():
"""
アプリ全体の流れを管理する関数
"""
print("Python 日記アプリ 1日目")
print("日記を書いて、ファイルに保存してみましょう。")
print("------------------------------")
while True:
# 1回分の日記を書く
write_diary()
# 続けて書くかどうかを聞く
answer = input("続けて日記を書きますか? (y/n): ")
# 条件分岐で動きを変える
if answer == "y":
# y の場合はループを続ける(何もしないで次の周へ)
print("もう1件、日記を書きます。")
print("------------------------------")
elif answer == "n":
# n の場合はループを抜けて終了
print("日記アプリを終了します。おつかれさまでした。")
break
else:
# それ以外の入力の場合は注意して、もう一度聞く
print("y か n を入力してください。")
# ここでは「終了せずにもう一度ループに戻る」
# このファイルを直接実行したときだけ main() を動かすおまじない
if __name__ == "__main__":
main()
Pythonコードの重要ポイントをかみ砕いて解説
変数の使い方
date_str = input("今日の日付を入力してください(例:2026-08-07): ")
mood = input("今日の気分を一言で教えてください: ")
content = input("本文: ")
Pythoninput()は「ユーザーから文字列を受け取る」関数- 受け取った文字列を変数に入れておくことで、あとでファイルに書き込める
- 変数名は「何が入っているか」がわかる名前にするのが大事
条件分岐の使い方
if answer == "y":
print("もう1件、日記を書きます。")
elif answer == "n":
print("日記アプリを終了します。おつかれさまでした。")
break
else:
print("y か n を入力してください。")
Pythonif→ 最初の条件elif→ 「それ以外の別の条件」else→ どれにも当てはまらないとき
ここでは「ユーザーの入力」に応じて アプリの動きを変えています。
繰り返し(while)の使い方
while True:
write_diary()
answer = input("続けて日記を書きますか? (y/n): ")
if answer == "y":
print("もう1件、日記を書きます。")
print("------------------------------")
elif answer == "n":
print("日記アプリを終了します。おつかれさまでした。")
break
else:
print("y か n を入力してください。")
Pythonwhile True:は「ずっと繰り返す」breakが出てきたところでループを抜ける- 「続けるかどうか」をユーザーに決めてもらう形になっている
このパターンは、 「ユーザーがやめると言うまで続けるアプリ」 の基本形です。
関数の使い方
def write_diary():
# 日記を書く&保存する処理
...
Pythondef 関数名():で関数を定義- 関数の中に「ひとつの仕事」をまとめる
main()からwrite_diary()を呼び出すことで、 「アプリの流れ」と「日記を書く処理」を分けて考えられる
関数を使うと、 コードが「上から下まで一枚の長い文章」ではなく、 「章立てされた本」のように整理されていきます。
ファイル操作の使い方
with open("diary.txt", "a", encoding="utf-8") as f:
f.write("==== 日記 ====\n")
f.write(f"日付: {date_str}\n")
f.write(f"気分: {mood}\n")
f.write("本文:\n")
f.write(content + "\n")
f.write("\n")
Pythonopen("diary.txt", "a", encoding="utf-8")"a"→ 追記モード(既存の内容を消さずに後ろに追加)encoding="utf-8"→ 日本語を安全に扱うための指定
withを使うと、- ブロックを抜けたときに自動で
f.close()してくれる - ファイルを閉じ忘れる心配がなくなる
- ブロックを抜けたときに自動で
ファイル操作は「外の世界にデータを残す」ための大事な技術です。 日記アプリのような「記録系アプリ」と相性が抜群です。
1日目で本当に掴んでほしいこと
1. 変数は「意味のある名前をつける」
date_str, mood, content のように、 「何が入っているか」がわかる名前 をつけると、 コードがぐっと読みやすくなります。
2. 条件分岐は「ユーザーの選択に応じて動きを変える」
y なら続ける、n なら終わる、その他は注意する。 このように「状況に応じて分岐する」ことで、 アプリが「ただの一回きりの処理」から「対話的なもの」に変わります。
3. 繰り返しは「アプリを継続的に使えるようにする」
while True+break のパターンは、 多くのコンソールアプリで使われる基本形です。
4. 関数は「コードを整理するための武器」
write_diary() と main() を分けることで、 「日記を書く処理」と「アプリ全体の流れ」が きれいに分離されます。
5. ファイル操作は「アプリに記憶を持たせる」
diary.txt に書き込むことで、 アプリを終了しても日記が残ります。
これは、 「プログラムが一瞬で終わるもの」から 「継続的に使える道具」へ変わる瞬間 でもあります。
次のステップ(2日目の予告)
2日目では、この日記アプリをさらに育てて、
- 過去の日記を読み出して表示する
- 日付ごとに区切って見やすくする
- 簡単なメニュー(1: 書く / 2: 読む / 3: 終了)を作る
といった機能を追加しながら、 繰り返し・条件分岐・関数・ファイル操作 をもう一段深く理解していきます。
「コードを書いて終わり」ではなく、 「自分の生活の一部になる小さなツール」 を作る感覚を、 ぜひ楽しんでみてください。


