Python | 1 日 60 分 × 7 日アプリ学習:Python文法を学ぶアプリ 日記アプリ編

Web APP Python
スポンサーリンク
スポンサーリンク

1日目のゴールと全体像

日記アプリ 1日目のテーマは 「とてもシンプルな“テキスト日記アプリ”を作りながら、変数・条件分岐・繰り返し・関数・ファイル操作の入口を体験すること」 です。

ここで作るのは、次のようなアプリです。

  • 今日の日記を入力する
  • 日記をテキストファイルに保存する
  • 終了するか、もう一度書くかを選べる

画面はシンプルな「コンソール(黒い画面)」だけですが、 この中に Python の基本がぎゅっと詰まっています。

日記アプリの最小イメージ

まず、完成イメージを言葉で描いてみます。

  1. 「今日の日付を入力してください」
  2. 「今日の気分を一言で教えてください」
  3. 「今日の出来事や感じたことを書いてください」
  4. 「保存しました」と表示
  5. 「続けて書きますか?(y/n)」と聞く
  6. 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("本文: ")
Python
  • input() は「ユーザーから文字列を受け取る」関数
  • 受け取った文字列を変数に入れておくことで、あとでファイルに書き込める
  • 変数名は「何が入っているか」がわかる名前にするのが大事

条件分岐の使い方

if answer == "y":
    print("もう1件、日記を書きます。")
elif answer == "n":
    print("日記アプリを終了します。おつかれさまでした。")
    break
else:
    print("y か n を入力してください。")
Python
  • if → 最初の条件
  • 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 を入力してください。")
Python
  • while True: は「ずっと繰り返す」
  • break が出てきたところでループを抜ける
  • 「続けるかどうか」をユーザーに決めてもらう形になっている

このパターンは、 「ユーザーがやめると言うまで続けるアプリ」 の基本形です。

関数の使い方

def write_diary():
    # 日記を書く&保存する処理
    ...
Python
  • def 関数名(): で関数を定義
  • 関数の中に「ひとつの仕事」をまとめる
  • 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")
Python
  • open("diary.txt", "a", encoding="utf-8")
    • "a" → 追記モード(既存の内容を消さずに後ろに追加)
    • encoding="utf-8" → 日本語を安全に扱うための指定
  • with を使うと、
    • ブロックを抜けたときに自動で f.close() してくれる
    • ファイルを閉じ忘れる心配がなくなる

ファイル操作は「外の世界にデータを残す」ための大事な技術です。 日記アプリのような「記録系アプリ」と相性が抜群です。

1日目で本当に掴んでほしいこと

1. 変数は「意味のある名前をつける」

date_str, mood, content のように、 「何が入っているか」がわかる名前 をつけると、 コードがぐっと読みやすくなります。

2. 条件分岐は「ユーザーの選択に応じて動きを変える」

y なら続ける、n なら終わる、その他は注意する。 このように「状況に応じて分岐する」ことで、 アプリが「ただの一回きりの処理」から「対話的なもの」に変わります。

3. 繰り返しは「アプリを継続的に使えるようにする」

while Truebreak のパターンは、 多くのコンソールアプリで使われる基本形です。

4. 関数は「コードを整理するための武器」

write_diary()main() を分けることで、 「日記を書く処理」と「アプリ全体の流れ」が きれいに分離されます。

5. ファイル操作は「アプリに記憶を持たせる」

diary.txt に書き込むことで、 アプリを終了しても日記が残ります。

これは、 「プログラムが一瞬で終わるもの」から 「継続的に使える道具」へ変わる瞬間 でもあります。

次のステップ(2日目の予告)

2日目では、この日記アプリをさらに育てて、

  • 過去の日記を読み出して表示する
  • 日付ごとに区切って見やすくする
  • 簡単なメニュー(1: 書く / 2: 読む / 3: 終了)を作る

といった機能を追加しながら、 繰り返し・条件分岐・関数・ファイル操作 をもう一段深く理解していきます。

「コードを書いて終わり」ではなく、 「自分の生活の一部になる小さなツール」 を作る感覚を、 ぜひ楽しんでみてください。

タイトルとURLをコピーしました