Python | 1 日 60 分 × 7 日アプリ学習:Python文法を学ぶアプリ タイマー編

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

1日目のゴールと全体像

この7日間の新しいテーマは「タイマーアプリ」です。 ストップウォッチが「時間がどれだけ経ったか」を測るものだとしたら、 タイマーは「指定した時間までカウントダウンする」タイプの時間アプリです。

1日目のゴールは、次の5つを タイマーという具体的な動きの中でイメージできるようになること です。

  • 変数:残り時間や設定時間、状態(動作中か停止中か)を入れる“意味のある箱”
  • 条件分岐:時間がゼロになったら終了する、キャンセルされたら止めるなどの“頭脳”
  • 繰り返し:1秒ずつ減らしながら画面に表示し続ける“枠組み”
  • 関数:時間入力・カウントダウン・終了メッセージなどを部品として切り出す“再利用可能なパーツ”
  • ファイル操作:タイマーの履歴(何分をセットしたか、いつ終わったか)を記録する“アプリの記憶”

タイマーは「ゼロに向かって減っていく」という分かりやすい動きがあるので、 変数・条件分岐・繰り返しがどう組み合わさるかを理解するのに、とても良い題材です。

変数とは何か(設定時間と残り時間を入れる箱)

設定時間と残り時間を変数で表す

タイマーアプリで一番大事なのは、 「何秒(何分)タイマーをセットしたか」「今どれくらい残っているか」 です。

これをPythonの変数で表現すると、例えば次のようになります。

set_seconds = 60      # ユーザーが設定したタイマー時間(秒)
remaining_seconds = 60  # 現在の残り時間(秒)
running = False       # タイマーが動作中かどうか(True/False)
Python

ここで重要なのは、変数名が「何を表しているか」をそのまま伝えていることです。 set_seconds は「最初に設定した秒数」、remaining_seconds は「今残っている秒数」、running は「タイマーが動いているかどうか」です。

さらに、ユーザーから入力を受け取るときは、こういう形になります。

user_input = input("タイマーの秒数を入力してください: ")
set_seconds = int(user_input)
remaining_seconds = set_seconds
running = True
Python

1日目では、「変数はただの箱ではなく、タイマーの世界を形作る“名前付きの意味”だ」という感覚を、 時間という身近な題材で掴んでください。

条件分岐とは何か(ゼロになったら止める頭脳)

残り時間がゼロかどうかを判定する

タイマーの本質は、 「残り時間がゼロになったら終了する」 というルールです。

これをPythonで表現するには、 残り時間を減らしながら、ゼロになったかどうかを条件分岐で判定します。

if remaining_seconds <= 0:
    print("タイマーが終了しました!")
    running = False
Python

この if が、タイマーの「頭脳」です。 残り時間がゼロ以下になった瞬間に、タイマーを止めてメッセージを出します。

さらに、ユーザーが「キャンセルしたい」と言った場合も条件分岐で対応できます。

command = input("c を入力するとキャンセルします(Enterで続行): ")

if command == "c":
    print("タイマーをキャンセルしました。")
    running = False
Python

ここで深掘りしたいのは、 条件分岐は「時間の状態に応じて、次に何をするかを決める頭脳」 だということです。

  • 残り時間がゼロ → 終了メッセージ
  • ユーザーがキャンセル → 停止
  • それ以外 → カウントダウンを続行

このように、タイマーの動きは条件分岐でコントロールされます。

繰り返しとは何か(1秒ずつ減らし続ける枠組み)

1秒ごとに残り時間を減らす

タイマーは、「スタートしたら時間が減り続ける」ものです。 これをPythonで表現するには、 「一定間隔で同じ処理を繰り返す」 という仕組みが必要になります。

簡単なテンプレートは次のようになります。

import time

remaining_seconds = set_seconds
running = True

while running:
    print(f"残り時間: {remaining_seconds} 秒")
    time.sleep(1)              # 1秒待つ
    remaining_seconds -= 1     # 残り時間を1秒減らす

    if remaining_seconds <= 0:
        print("タイマーが終了しました!")
        running = False
Python

ここで深掘りしたいのは、

  • while running: が「タイマーが動いている間だけ繰り返す枠組み」になっていること
  • ループの一回分が「表示 → 待つ → 減らす → 終了判定」という一つのストーリーになっていること

です。

繰り返しは、 タイマーを「一度だけ時間を減らすもの」ではなく、 “動き続けるアプリ” にするための仕組みです。

1日目では、「ループの一回分が一つのストーリーになっているか」を意識してコードを眺めてみてください。

関数とは何か(時間入力・カウントダウン・終了処理を部品にする)

処理を“意味ごとにまとめて名前をつける”

関数は、「まとまった処理に名前をつけて、何度でも呼び出せるようにする」ための仕組みです。 タイマーアプリでは、時間入力・カウントダウン・終了メッセージを関数にすると、コードがぐっと読みやすくなります。

時間入力の関数

def input_timer_seconds():
    while True:
        user_input = input("タイマーの秒数を入力してください: ")
        try:
            value = int(user_input)
            if value > 0:
                return value
            else:
                print("1以上の整数を入力してください。")
        except ValueError:
            print("整数で入力してください。")
Python

カウントダウンの関数

import time

def countdown(seconds):
    remaining = seconds
    while remaining > 0:
        print(f"残り時間: {remaining} 秒")
        time.sleep(1)
        remaining -= 1
    print("タイマーが終了しました!")
Python

メインの流れ

def main():
    set_seconds = input_timer_seconds()
    countdown(set_seconds)
Python

ここで重要なのは、 関数を使うことで「何をしているか」が一目で分かるようになる ということです。

input_timer_seconds と書いてあれば「時間入力だな」と分かるし、 countdown と書いてあれば「カウントダウンしているんだな」と分かります。

1日目では、「関数はアプリの部品である」という感覚を、 タイマーという具体的な処理を通して掴んでください。

ファイル操作とは何か(タイマーの履歴を“記録”として残す)

設定した時間と終了したタイミングを保存する

タイマーアプリを少しだけ“実用的なツール”に近づけるなら、 「どれくらいの時間をセットして、何回使ったか」をファイルに残す 機能をつけると面白くなります。

例えば、勉強時間のポモドーロタイマーとして使う場合、 「25分タイマーを何回回したか」を記録しておきたい、というイメージです。

Pythonでは、open を使ってファイルに書き込むことができます。

def save_timer_history(set_seconds):
    with open("timer_history.txt", "a", encoding="utf-8") as f:
        line = f"タイマー設定: {set_seconds}\n"
        f.write(line)
Python

これをタイマー終了後に呼び出します。

def countdown(seconds):
    remaining = seconds
    while remaining > 0:
        print(f"残り時間: {remaining} 秒")
        time.sleep(1)
        remaining -= 1
    print("タイマーが終了しました!")
    save_timer_history(seconds)
Python

これで、timer_history.txt というファイルに、 設定したタイマー時間の履歴が一行ずつ残っていきます。

後からファイルを開けば、 「自分がどんなタイマーをどれくらい使ってきたか」を一覧で見ることができます。

ファイル操作は、「プログラムの外にデータを残す」ための基本的な技術です。 タイマーの設定履歴という具体的な形で、この技術に触れていきましょう。

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

1日目のゴールは、「タイマー」という身近なテーマを通して、次の5つの柱を“意味付きで”理解することです。

  • 設定時間・残り時間・状態を変数として扱うことで、「値に名前をつける」感覚を掴む。
  • 残り時間がゼロになったときやキャンセルされたときに条件分岐で動きを変え、「時間の状態に応じて判断する」ロジックを体験する。
  • 繰り返しで1秒ずつ減らし続け、「アプリとしての枠組み」を感じる。
  • 関数で時間入力・カウントダウン・終了処理を部品にし、「意味ごとにコードを分ける」感覚を育てる。
  • ファイル操作でタイマー設定の履歴を保存し、「プログラムの外にデータを残す」技術に触れる。

タイマーという一つのアプリの中に、Pythonの基礎がぎゅっと詰まっています。 2日目以降は、このタイマーアプリを少しずつ拡張しながら、 「分・秒で設定できるタイマー」「複数回のタイマー」「履歴を活用するタイマー」など、 より実用的な形へ育てていきます。

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