1日目のゴールと全体像
この7日間の新しいテーマは「ストップウォッチアプリ」です。 時間を測る、誰もがイメージしやすい小さなアプリを題材にして、Pythonの文法をもう一度、別の角度から体に馴染ませていきます。
1日目のゴールは、次の5つを「ストップウォッチ」という具体的な流れの中でイメージできるようになることです。
- 変数:経過時間や状態(動作中か停止中か)を入れる“意味のある箱”
- 条件分岐:スタート・ストップ・リセットなどの動きを切り替える“頭脳”
- 繰り返し:時間を少しずつ進めて画面に表示し続ける“枠組み”
- 関数:スタート処理・ストップ処理・表示処理を部品として切り出す“再利用可能なパーツ”
- ファイル操作:計測結果を記録として残す“アプリの記憶”
ストップウォッチは「時間が進む」という感覚がはっきりしているので、 変数・条件分岐・繰り返しがどう組み合わさるかを理解するのに、とても良い題材です。
変数とは何か(時間と状態を入れる箱)
経過時間と“動いているかどうか”を変数で表す
ストップウォッチアプリで一番大事なのは、 「今どれくらい時間が経っているか」 と 「今ストップウォッチが動いているのか止まっているのか」 です。
これをPythonの変数で表現すると、例えば次のようになります。
elapsed_seconds = 0.0 # 経過時間(秒)
running = False # 動作中かどうか(True/False)
Pythonここで重要なのは、変数名が「何を表しているか」をそのまま伝えていることです。 e や r ではなく、elapsed_seconds や running のように意味のある名前にすることで、コードが「読める文章」に近づいていきます。
さらに、スタートした瞬間の時刻を覚えておく変数も登場します。
start_time = None
Pythonこの start_time は、「ストップウォッチをスタートした瞬間の時刻」を覚えておくための箱です。 後で「今の時刻 − スタートした時刻」で経過時間を計算するために使います。
1日目では、「変数はただの箱ではなく、ストップウォッチの世界を形作る“名前付きの意味”だ」という感覚を、 時間という身近な題材で掴んでください。
条件分岐とは何か(スタート・ストップ・リセットを切り替える頭脳)
ユーザーの操作に応じて動きを変える
ストップウォッチアプリでは、ユーザーが次のような操作をします。
- スタート
- ストップ
- リセット
これをPythonで表現するには、 「今どの操作が選ばれたか」に応じて動きを変える条件分岐 が必要です。
簡単な例は次のようになります。
command = input("操作を選んでください (s: start, t: stop, r: reset, q: quit): ")
if command == "s":
# スタート処理
elif command == "t":
# ストップ処理
elif command == "r":
# リセット処理
elif command == "q":
# 終了
else:
print("不正な入力です")
Pythonここで条件分岐は、 「ユーザーの入力に応じて、アプリの動きを切り替える司令塔」 として働いています。
さらに、「すでに動いているのにスタートしようとした」「止まっているのにストップしようとした」といったおかしな操作も防ぎたいですよね。
if command == "s":
if running:
print("すでに動作中です")
else:
running = True
start_time = time.time()
print("ストップウォッチをスタートしました")
Pythonこのように、条件分岐は
- 正しい動きを選ぶ
- おかしな操作を止める
という二つの役割を持つことができます。
1日目では、「条件分岐は単なる if ではなく、ストップウォッチの“頭脳”だ」という意識でコードを眺めてみてください。
繰り返しとは何か(時間を進め続ける枠組み)
少しずつ時間を進めて画面に表示する
ストップウォッチは、「スタートしたら時間が進み続ける」ものです。 これをPythonで表現するには、 「一定間隔で同じ処理を繰り返す」 という仕組みが必要になります。
簡単なテンプレートは次のようになります。
import time
elapsed_seconds = 0.0
running = False
while True:
command = input("操作を選んでください (s: start, t: stop, r: reset, q: quit): ")
if command == "s":
running = True
start_time = time.time()
elif command == "t":
running = False
elif command == "r":
running = False
elapsed_seconds = 0.0
elif command == "q":
print("終了します")
break
if running:
now = time.time()
elapsed_seconds = now - start_time
print(f"経過時間: {elapsed_seconds:.2f} 秒")
Pythonここで深掘りしたいのは、
while True:が「アプリを動かし続ける枠組み」になっていること- ループの中で「操作を受け取る」「状態を更新する」「時間を表示する」という流れが繰り返されていること
です。
繰り返しは、 ストップウォッチを「一度だけ時間を測るもの」ではなく、 “動き続けるアプリ” にするための仕組みです。
1日目では、「ループの一回分が一つのストーリーになっているか」を意識してコードを眺めてみてください。
関数とは何か(スタート・ストップ・表示を部品にする)
処理を“意味ごとにまとめて名前をつける”
関数は、「まとまった処理に名前をつけて、何度でも呼び出せるようにする」ための仕組みです。 ストップウォッチアプリでは、スタート処理・ストップ処理・リセット処理・表示処理を関数にすると、コードがぐっと読みやすくなります。
例えば、スタート処理を関数にします。
import time
def start_stopwatch():
print("ストップウォッチをスタートします")
return True, time.time()
Pythonストップ処理はこうです。
def stop_stopwatch():
print("ストップウォッチをストップします")
return False
Pythonリセット処理はこうです。
def reset_stopwatch():
print("ストップウォッチをリセットします")
return False, 0.0
Python表示処理はこう書けます。
def show_elapsed(elapsed_seconds):
print(f"経過時間: {elapsed_seconds:.2f} 秒")
Pythonこれらを使って、メインの流れは次のように書けます。
running = False
elapsed_seconds = 0.0
start_time = None
while True:
command = input("操作を選んでください (s: start, t: stop, r: reset, q: quit): ")
if command == "s":
running, start_time = start_stopwatch()
elif command == "t":
running = stop_stopwatch()
elif command == "r":
running, elapsed_seconds = reset_stopwatch()
elif command == "q":
print("終了します")
break
if running and start_time is not None:
now = time.time()
elapsed_seconds = now - start_time
show_elapsed(elapsed_seconds)
Pythonここで重要なのは、 関数を使うことで「何をしているか」が一目で分かるようになる ということです。
start_stopwatch と書いてあれば「スタート処理だな」と分かるし、 show_elapsed と書いてあれば「経過時間を表示しているんだな」と分かります。
1日目では、「関数はアプリの部品である」という感覚を、 ストップウォッチという具体的な処理を通して掴んでください。
ファイル操作とは何か(計測結果を“記録”として残す)
計測した時間をファイルに保存する
ストップウォッチアプリを少しだけ“実用的なツール”に近づけるなら、 「計測結果をファイルに残す」 機能をつけると面白くなります。
例えば、勉強時間や運動時間を測って、その結果を一覧として残しておきたい場合などです。
Pythonでは、open を使ってファイルに書き込むことができます。
def save_result(elapsed_seconds):
with open("stopwatch_history.txt", "a", encoding="utf-8") as f:
line = f"計測結果: {elapsed_seconds:.2f} 秒\n"
f.write(line)
Pythonこれをストップ処理のあとに呼び出します。
elif command == "t":
running = stop_stopwatch()
save_result(elapsed_seconds)
Pythonこれで、stopwatch_history.txt というファイルに、 計測した時間の履歴が一行ずつ残っていきます。
後からファイルを開けば、 「いつ何秒測ったか」を一覧で見ることができます。
ファイル操作は、「プログラムの外にデータを残す」ための基本的な技術です。 ストップウォッチの計測結果という具体的な形で、この技術に触れていきましょう。
1日目で本当に掴んでほしいこと
1日目のゴールは、「ストップウォッチ」という身近なテーマを通して、次の5つの柱を“意味付きで”理解することです。
- 経過時間や状態を変数として扱うことで、「値に名前をつける」感覚を掴む。
- スタート・ストップ・リセットを条件分岐で切り替え、「ユーザーの操作に応じて動きを変える」ロジックを体験する。
- 繰り返しで時間を進め続け、「アプリとしての枠組み」を感じる。
- 関数でスタート処理・ストップ処理・表示処理を部品にし、「意味ごとにコードを分ける」感覚を育てる。
- ファイル操作で計測結果を保存し、「プログラムの外にデータを残す」技術に触れる。
ストップウォッチという一つのアプリの中に、Pythonの基礎がぎゅっと詰まっています。 2日目以降は、このストップウォッチアプリを少しずつ拡張しながら、 ラップ機能や複数回の計測、履歴の表示など、「実際に使えるアプリ」に近づけていきます。


