Python自動化の基礎として、一定間隔で処理を繰り返す考え方を理解する
Python自動化を学び始めると、ファイル操作、日付取得、時刻取得、ログ出力など、さまざまな基礎技術を順番に身につけていきます。その中でも、自動化らしさを強く感じやすいのが「一定間隔で処理を繰り返す」という考え方です。
たとえば、5秒ごとに状態を確認する、1分ごとにログを取る、10分ごとにフォルダを監視する、といった処理は非常によくあります。こうした仕組みがあると、毎回人が手で実行しなくても、プログラムが一定のリズムで動き続けてくれます。これこそ自動化の大きな価値の1つです。
ただし、初心者の方がここで注意したいのは、「繰り返すこと」と「安全に繰り返せること」は別だという点です。ただループさせるだけなら簡単に見えますが、実際には、どのくらいの間隔で動かすのか、いつ止めるのか、途中でエラーが起きたらどうするのか、同じ処理を何度も実行して問題ないのか、といった設計が重要になります。
この記事では、Python自動化の基礎として、一定間隔で処理を繰り返す方法を、初心者向けにステップバイステップでわかりやすく解説します。単なるコードの書き方だけではなく、実際にどう考えれば安全で実用的な自動化になるのかを重視して説明します。例題、コード例、テンプレート、注意点まで、順番にしっかり整理していきます。
まず理解したい、なぜ一定間隔の繰り返し処理が重要なのか
自動化は「一度だけ動く」より「必要なタイミングで繰り返し動く」ほうが便利です
自動化というと、1回だけ何かを処理するプログラムを想像する方も多いですが、実際には一定間隔で何度も動く処理がとても多いです。たとえば、監視、定期確認、バックアップ、データ収集、定期記録などは、むしろ繰り返し実行されることが前提になっています。
もし、1分ごとにファイルの有無を確認したいのに、そのたびに自分でPythonを実行しなければならないとしたら、自動化の意味は薄くなります。プログラム自身が決まった間隔で動いてくれるからこそ、人の手間が減り、確認漏れも減ります。
繰り返し処理は監視や定期確認の土台になります
一定間隔で処理を繰り返す仕組みは、次のような用途の土台になります。
- フォルダ内に新しいファイルが来たか確認する
- 一定時間ごとにログを記録する
- Web上の情報を定期的に取得する
- サーバーやサービスの状態を監視する
- 一定周期でバックアップや集計を実行する
つまり、この考え方を理解すると、単発のスクリプトから、一歩進んだ自動化へ広げやすくなります。
一定間隔で繰り返す基本の仕組み
while 文で繰り返す
一定間隔で処理を繰り返すには、まず「同じ処理を何度も実行する」仕組みが必要です。その基本になるのが while 文です。while は、条件が真である間、処理を繰り返します。
# 3回だけ繰り返す基本例です
count = 0
# countが3より小さい間、繰り返します
while count < 3:
# 現在の回数を表示します
print(f"{count + 1}回目の処理です")
# 回数を1増やします
count += 1Pythonこの例では回数指定ですが、一定間隔の処理でも、まずはこの「繰り返しそのもの」の考え方が基本になります。初心者の方は、最初に while の流れをきちんと理解しておくと、その後の自動化がかなり分かりやすくなります。
time.sleep() で待機する
繰り返すだけでは、処理が一瞬で連続実行されてしまいます。そこで必要になるのが「少し待つ」仕組みです。Pythonでは time モジュールの sleep() を使うと、指定した秒数だけ処理を止められます。
import time
# 1回メッセージを表示します
print("処理を実行します")
# 5秒待機します
time.sleep(5)
# 待機後に再び表示します
print("5秒経過しました")Pythonこの sleep() を繰り返し処理の中に入れることで、「一定間隔で処理する」仕組みを作れます。
最初に理解したい、一定間隔処理の最小形
繰り返しと待機を組み合わせる
一定間隔で処理する最も基本的な形は、次の2つを組み合わせることです。
- 繰り返し処理で同じ処理を何度も実行する
- 各回の間に
sleep()で待機時間を入れる
この考え方をそのままコードにすると、次のようになります。
import time
# 3回、5秒おきに処理を繰り返す例です
count = 0
# countが3より小さい間、繰り返します
while count < 3:
# 何回目の処理かを表示します
print(f"{count + 1}回目の処理を実行します")
# ここに本来の自動処理を書く想定です
print("データ確認を行いました")
# 回数を1増やします
count += 1
# 最後の回でなければ5秒待機します
if count < 3:
print("5秒待機します")
time.sleep(5)Pythonこのコードはとても重要な基本形です。初心者の方はまず、この形を自分で書いて動かせるようになると良いです。ここに実際の自動処理を差し替えることで、さまざまな定期処理に応用できるようになります。
例題1 一定間隔で現在時刻を表示する
最初に試しやすい題材
一定間隔処理の練習として分かりやすいのが、現在時刻を繰り返し表示する例です。処理内容がシンプルで、繰り返しの結果がすぐ見えるため、初心者の方に向いています。
import time
from datetime import datetime
# 3回、2秒おきに現在時刻を表示する関数です
def show_time_repeatedly():
# 繰り返し回数を指定します
count = 0
# 3回繰り返します
while count < 3:
# 現在の日時を取得します
now = datetime.now()
# 見やすい形に整形して表示します
print(f"現在時刻: {now.strftime('%H:%M:%S')}")
# 回数を1増やします
count += 1
# 最後の回でなければ2秒待機します
if count < 3:
time.sleep(2)
# メイン処理です
def main():
show_time_repeatedly()
if __name__ == "__main__":
main()Pythonこの例で重要なのは、繰り返しのたびに時刻を取り直していることです。最初に1回だけ取得した値を表示し続けるのではなく、その都度取得することで「今その瞬間の時刻」を確認できます。これは監視や定期確認の基本感覚にもつながります。
例題2 一定間隔でログを書き込む
自動化らしさが強まる例
次に、一定間隔でログを書き込む例を見てみます。これは実務でもよく使う考え方です。たとえば、システムが生きていることを定期的に記録したい場合に役立ちます。
import time
from datetime import datetime
# 一定間隔でログを書き込む関数です
def write_log_repeatedly():
# ログファイル名を固定で指定します
log_file_name = "heartbeat.log"
# 3回繰り返します
count = 0
while count < 3:
# 現在の日時を取得します
now = datetime.now()
# ログ1行分の文字列を作成します
log_line = f"{now.strftime('%Y-%m-%d %H:%M:%S')} 定期確認を実行しました\n"
# ログファイルへ追記します
with open(log_file_name, mode="a", encoding="utf-8") as file:
file.write(log_line)
# 画面にも表示します
print("ログを書き込みました")
# 回数を増やします
count += 1
# 最後の回でなければ3秒待機します
if count < 3:
time.sleep(3)
# メイン処理です
def main():
write_log_repeatedly()
if __name__ == "__main__":
main()Pythonこの例では、同じログファイルに3回追記しています。一定間隔処理では、「毎回別ファイルにする」のか「同じファイルへ追記する」のかを使い分けることが大切です。どちらが正しいというより、運用目的に合わせて選ぶ必要があります。
ここで深く理解したいこと
繰り返し処理では、1回ごとの処理が小さく見えても、回数が増えると影響が大きくなります。ログ書き込み程度なら安全に見えますが、もし削除や移動処理を繰り返すなら、間違った条件で何度も実行される危険があります。そのため、一定間隔で回す処理ほど、1回分の処理を慎重に設計する必要があります。
例題3 一定間隔でフォルダ内のファイル数を確認する
監視の考え方を学ぶ入門例
一定間隔で処理する自動化は、監視と相性が良いです。そこで、指定フォルダ内のファイル数を一定間隔で表示する例を見てみます。
import os
import time
# フォルダ内のファイル数を確認する関数です
def check_file_count(folder_path):
# フォルダ内の一覧を取得します
items = os.listdir(folder_path)
# ファイル数を数えます
count = 0
for item in items:
# フルパスを作成します
full_path = os.path.join(folder_path, item)
# ファイルなら件数を増やします
if os.path.isfile(full_path):
count += 1
# 件数を返します
return count
# 一定間隔で確認する関数です
def monitor_folder(folder_path):
# 3回だけ確認します
repeat_count = 0
while repeat_count < 3:
# 現在のファイル数を取得します
file_count = check_file_count(folder_path)
# 結果を表示します
print(f"現在のファイル数は {file_count} 件です")
# 回数を増やします
repeat_count += 1
# 最後の回でなければ5秒待機します
if repeat_count < 3:
time.sleep(5)
# メイン処理です
def main():
# 現在のフォルダを監視対象にします
folder_path = "."
# フォルダ監視を開始します
monitor_folder(folder_path)
if __name__ == "__main__":
main()Pythonこの例は、監視処理のとても基本的な形です。最初は件数確認だけですが、考え方としては、新しいファイルが増えたかどうか、特定の拡張子が現れたかどうか、といったチェックにも応用できます。
無限ループと回数制限の違いを理解する
無限ループは便利ですが慎重に使う必要があります
一定間隔の処理は、本格的には終了回数を決めずにずっと動かしたいことがあります。その場合、while True: を使うと無限ループにできます。
import time
# 無限に繰り返す基本形です
while True:
print("定期処理を実行します")
time.sleep(5)Pythonこれはとても強力ですが、初心者の方は最初から多用しないほうが安全です。なぜなら、止め忘れたり、誤った処理を延々と繰り返してしまったりする危険があるからです。学習段階では、まず回数制限付きで練習し、その後で必要に応じて無限ループへ進むほうが安全です。
まずは有限回で動作確認するべきです
一定間隔処理を作るときは、いきなり永続実行するのではなく、次の順番で進めるのがおすすめです。
- まず1回だけ動かして正しい処理か確認する
- 次に3回程度の有限回で試す
- 待機時間を短くして動き方を確認する
- その後に必要なら無限ループへ進む
この順番を守るだけで、多くの事故を防げます。自動化では、便利さより先に安全な確認手順を持つことが大切です。
初心者が特に注意したい重要ポイント
処理時間そのものも間隔に影響します
初心者の方が見落としやすいのが、「5秒ごとに実行したい」と思って time.sleep(5) を入れても、実際には処理時間がその前にかかるという点です。たとえば、処理に2秒かかってから5秒待つなら、次の実行まで合計7秒近くかかります。
つまり、sleep() は「前の処理が終わってから待つ時間」です。厳密に何秒ごとに動かしたいかによって、考え方が変わることを知っておくと良いです。初心者の段階ではまずこの仕組みを理解すれば十分ですが、将来はより正確なスケジュール制御も必要になることがあります。
同じ処理を何度実行しても問題ないか確認する
一定間隔で処理を繰り返すときに最も大切な考え方の1つが、「同じ処理を何度も実行して大丈夫か」です。たとえば、単なる状態確認なら何度実行しても問題ないことが多いです。しかし、ファイル削除、メール送信、データ登録などは、同じ処理を繰り返すと重複や事故の原因になることがあります。
この視点は非常に重要です。自動化では、1回だけなら安全でも、繰り返すことで危険になる処理があるからです。初心者の方は、一定間隔処理を作るとき、まず「これは繰り返しても安全な処理か」を自分に問いかける習慣を持つと良いです。
止め方を意識して作る
繰り返し処理では、「どう始めるか」だけでなく「どう止めるか」も大切です。回数制限なら自然に終わりますが、無限ループでは明示的に停止操作が必要です。初心者のうちは、止め方が分からないまま実行して焦ることがあります。
そのため、最初は回数制限付きで作り、慣れてから無限ループへ進むのが安全です。また、停止条件を設ける設計も将来的には重要になります。
セキュリティと安全性の観点からの注意
外部サービスやファイル操作を短い間隔で回しすぎない
一定間隔処理は便利ですが、短すぎる間隔で実行すると問題になることがあります。たとえば、Webアクセスを何秒おきにも繰り返すと相手サーバーに負荷をかけることがありますし、ファイル操作を頻繁に繰り返すとディスク負荷や競合の原因になることがあります。
初心者の方は、動いたからといって極端に短い間隔にしないことが大切です。自動化では、自分の環境だけでなく、相手や周囲のシステムへの影響も考える必要があります。
エラーが出たときに即終了するか、記録して続行するかを考える
繰り返し処理では、途中で1回失敗したときの扱いが重要です。毎回エラーで止まってしまう設計もあれば、エラーをログに残して次回へ進む設計もあります。どちらがよいかは処理内容次第ですが、少なくとも「エラー時にどうなるか」を意識せずに作るのは危険です。
初心者のうちは、まずはエラーが起きたら分かるように表示やログを入れておくと安心です。
初心者向けの実用テンプレート
ここまでの内容を踏まえると、一定間隔で処理を繰り返す基本テンプレートは次のようになります。開始、繰り返し、待機、終了が分かりやすく整理された形です。
import time
from datetime import datetime
# 1回分の処理を行う関数です
def do_task():
# 現在時刻を取得します
now = datetime.now()
# 何をしたか分かるように表示します
print(f"{now.strftime('%H:%M:%S')} に処理を実行しました")
# 一定間隔で処理を繰り返す関数です
def repeat_task(interval_seconds, repeat_times):
# 処理開始を表示します
print("繰り返し処理を開始します")
# 指定回数だけ繰り返します
count = 0
while count < repeat_times:
# 1回分の処理を実行します
do_task()
# 回数を増やします
count += 1
# 最後の回でなければ待機します
if count < repeat_times:
print(f"{interval_seconds}秒待機します")
time.sleep(interval_seconds)
# 処理終了を表示します
print("繰り返し処理を終了します")
# メイン処理です
def main():
# 3秒おきに3回実行します
repeat_task(interval_seconds=3, repeat_times=3)
if __name__ == "__main__":
main()Pythonこのテンプレートは非常に基本的ですが、一定間隔処理の大事な骨組みがまとまっています。1回分の処理を関数として分けているため、将来的に中身を差し替えやすいのもポイントです。自動化では、このように「繰り返しの仕組み」と「1回分の処理」を分ける設計がとても役立ちます。
学習を進めるときのおすすめの順番
一定間隔で処理を繰り返す技術を身につけるには、次の順番で学ぶと理解しやすいです。
- まずは
while文だけで繰り返しに慣れる - 次に
time.sleep()で待機を入れてみる - その次に回数制限付きの一定間隔処理を作る
- 現在時刻表示やログ記録など簡単な処理を繰り返してみる
- 1回分の処理を関数へ分ける形に整理する
- 最後に無限ループやエラー対策を考える
この順番なら、仕組みそのものを理解しながら、実用的な形へ無理なく発展させられます。
まとめ
Python自動化の基礎として、一定間隔で処理を繰り返す考え方は非常に重要です。これを使えるようになると、状態確認、監視、ログ記録、データ収集、バックアップなど、多くの自動化へ応用できるようになります。
基本は、while 文で繰り返し、time.sleep() で待機時間を入れることです。ただし、本当に大切なのは、単に動かすことではなく、何度繰り返しても安全な処理か、どのくらいの間隔が適切か、どう止めるか、エラー時にどうするかまで考えることです。
初心者の方はまず、有限回で現在時刻表示やログ書き込みのような小さな処理を繰り返すところから始めると良いです。そこから少しずつ関数化、監視処理、無限ループへと発展させることで、一定間隔処理の基礎がしっかり身につきます。
一定間隔で処理を繰り返す技術は、自動化を「一度動くスクリプト」から「継続的に役立つ仕組み」へ引き上げる大切な土台です。だからこそ、早い段階で丁寧に理解しておく価値があります。
