Python自動化の基礎として、自動処理の終了時刻を記録する意味を理解する
Python自動化を学び始めると、ファイル操作、日時取得、ログ出力、条件分岐、繰り返し処理、関数化、設定管理など、少しずつ実用的な技術へ進んでいきます。その中で、自動処理を運用しやすくするためにとても重要なのが「自動処理の終了時刻を記録する」という考え方です。
初心者の方は、処理が正しく終わればそれで十分だと感じるかもしれません。しかし、自動化は一度だけ動かすものではなく、何度も繰り返し実行したり、あとから結果を確認したりすることが多いです。そのため、「いつ終わったのか」を記録しておくことには大きな意味があります。
たとえば、処理が最後まで完了したか確認したいとき、予想より長くかかっていないか調べたいとき、開始時刻と組み合わせて所要時間を見積もりたいときなどに、終了時刻の記録が役立ちます。つまり、終了時刻の記録は、単なる飾りではなく、自動化の成功確認、運用確認、改善のための大切な情報です。
この記事では、Python自動化の基礎として、自動処理の終了時刻を記録する方法を、プログラミング初心者向けにステップバイステップで詳しく解説します。なぜ必要なのか、どう取得するのか、画面表示やログにどう残すのか、開始時刻との関係はどう考えるのか、どんな注意が必要なのかまで、例題やテンプレートを交えながらわかりやすく説明します。
まず理解したい、なぜ終了時刻を記録するのか
処理が「終わったこと」を確認しやすくするためです
自動化では、開始したことだけでなく、最後まで完了したことも重要です。特に、定期実行や長めの処理では、途中で止まってしまうこともあり得ます。そのため、終了時刻を記録しておくと、「この処理はここまで進んで正常に終わった」という手がかりになります。
たとえば、開始時刻だけが記録されていて終了時刻がなければ、途中で止まった可能性も考えられます。一方で、終了時刻まで残っていれば、少なくとも終了地点までは到達したことが分かります。これは運用上とても価値があります。
処理にかかった時間を把握しやすくなるからです
終了時刻を記録するもう1つの大きな意味は、開始時刻と組み合わせることで処理時間を把握しやすくなることです。初心者のうちはまず終了時刻だけを記録するところから始めれば十分ですが、将来的には「何秒かかったか」「いつもより遅くなっていないか」といった確認にもつながります。
つまり、終了時刻の記録は、成功確認だけでなく、自動化の性能や安定性を見ていく第一歩でもあります。
Pythonで現在日時を取得する基本
datetime.now() を使う
終了時刻を記録するためにも、まずは現在の日時を取得する必要があります。Pythonでは、datetime モジュールの datetime.now() を使うのが基本です。
from datetime import datetime
# 現在の日時を取得します
now = datetime.now()
# 取得した日時を表示します
print(now)Pythonこの書き方は、開始時刻の記録でも使いますし、終了時刻の記録でも同じように使います。違うのは「どのタイミングで取得するか」です。終了時刻として使うなら、処理が終わる直前または直後に取得する必要があります。
strftime() で見やすい形式に整える
取得した日時は、そのままでも扱えますが、画面表示やログ記録では見やすい形へ整えることが多いです。
from datetime import datetime
# 現在の日時を取得します
now = datetime.now()
# 見やすい文字列へ整形します
end_time_text = now.strftime("%Y-%m-%d %H:%M:%S")
# 結果を表示します
print(end_time_text)Pythonこのように、2026-10-23 18:45:30 のような形で残しておくと、あとから見返しやすくなります。
ステップバイステップで考える、終了時刻記録の流れ
まず、どこを「終了」とみなすか決める
終了時刻を記録するときに最も大切なのは、「どの地点を終了と考えるか」をはっきりさせることです。たとえば、メイン処理が終わった瞬間を終了とするのか、結果の保存まで含めて終了とするのか、ログ出力まで含めて終了とするのかで意味が変わります。
初心者の方は、何となく最後に日時を取ればよいと思いがちですが、本当は「何の終了なのか」を意識することが大切です。たとえば、本体処理だけの終了を知りたいのか、プログラム全体の完全終了を知りたいのかで、取得位置が変わります。
次に、そのタイミングで現在時刻を取得する
終了地点が決まったら、その直前または直後で datetime.now() を呼び出します。これによって、終了時刻として意味のある値を取得できます。
最後に、画面やログへ残す
取得した終了時刻は、あとから確認できるように、画面表示やログファイルへ記録します。単に取得するだけでは後から分からないため、「残すこと」が重要です。
例題1 終了時刻を画面へ表示する
最初に作るべき基本例
まずは、処理終了時刻を画面へ表示するもっともシンプルな例を見てみます。
from datetime import datetime
import time
# 自動処理の終了時刻を表示する関数です
def show_end_time():
# サンプルとして2秒待機します
time.sleep(2)
# 現在の日時を取得します
end_time = datetime.now()
# 見やすい文字列へ整形します
end_time_text = end_time.strftime("%Y-%m-%d %H:%M:%S")
# 終了時刻を表示します
print(f"処理終了時刻: {end_time_text}")
# メイン処理です
def main():
# サンプル処理開始を表示します
print("自動処理を開始します")
# 終了時刻を表示します
show_end_time()
if __name__ == "__main__":
main()Pythonこの例では、サンプルとして待機処理のあとに終了時刻を取得しています。重要なのは、「終了とみなしたい地点のあとで取得している」ことです。初心者の方はまず、この位置関係を意識できるようになると理解が深まります。
例題2 終了時刻をログファイルへ記録する
あとから見返せる形にする
画面表示だけでは、その場でしか確認できません。自動化ではあとから見返せるように、終了時刻をログへ残すことがよくあります。
from datetime import datetime
import time
# 終了時刻をログファイルへ記録する関数です
def write_end_time_log(log_file_name):
# サンプルとして2秒待機します
time.sleep(2)
# 現在の日時を取得します
end_time = datetime.now()
# ログ用に見やすく整形します
end_time_text = end_time.strftime("%Y-%m-%d %H:%M:%S")
# ログファイルへ追記します
with open(log_file_name, mode="a", encoding="utf-8") as file:
# 終了時刻を書き込みます
file.write(f"処理終了時刻: {end_time_text}\n")
# 画面にも表示します
print(f"処理終了時刻: {end_time_text}")
# メイン処理です
def main():
# ログファイル名を指定します
log_file_name = "process.log"
# サンプル処理開始を表示します
print("自動処理を開始します")
# 終了時刻を記録します
write_end_time_log(log_file_name)
if __name__ == "__main__":
main()Pythonこのようにしておけば、ログファイルを見て「いつ終わったか」を確認できます。開始時刻と終了時刻の両方を記録しておけば、実行の流れがかなり見えやすくなります。
追記モードで残す意味を理解する
ここでも mode="a" を使っているのは、過去の記録を消さずに追加していくためです。終了時刻の履歴を残したいなら、毎回上書きするより追記のほうが向いています。自動化では、履歴を残す設計があとから非常に役立ちます。
例題3 開始時刻と終了時刻を両方記録する
終了時刻の意味がもっと分かりやすくなる
終了時刻は、開始時刻とセットで考えるとより理解しやすくなります。ここでは、処理の開始と終了の両方を記録する例を見てみます。
from datetime import datetime
import time
# メイン処理です
def main():
# 開始時刻を取得します
start_time = datetime.now()
# 開始時刻を表示します
print(f"処理開始時刻: {start_time.strftime('%Y-%m-%d %H:%M:%S')}")
# サンプルとして3秒待機します
time.sleep(3)
# 終了時刻を取得します
end_time = datetime.now()
# 終了時刻を表示します
print(f"処理終了時刻: {end_time.strftime('%Y-%m-%d %H:%M:%S')}")
if __name__ == "__main__":
main()Pythonこの例を見ると、終了時刻は単独でも意味がありますが、開始時刻と並べることでより状況が分かりやすくなることが分かります。初心者の方はまず終了時刻だけでも良いですが、次の発展として開始時刻との組み合わせも意識すると理解が深まります。
終了時刻を記録するときに深く理解したい重要ポイント
終了時刻は「最後の大事な処理のあと」で取る
終了時刻を記録するとき、初心者の方が見落としやすいのは「まだ終わっていないのに早めに取ってしまう」ことです。たとえば、結果保存の前に終了時刻を取ってしまうと、本当の意味での終了とは少しずれてしまいます。
そのため、終了時刻は「どこまで終わったら完了とみなすか」を決め、その地点のあとで取得することが大切です。特に、自動化では保存や後片付けのような処理も重要なので、それらを含めるかどうかを意識する必要があります。
開始時刻と違って、途中失敗時には記録されないことがある
終了時刻は、処理が最後まで進んだときに記録されることが多いです。そのため、途中でエラーが起きて止まった場合には、終了時刻が残らないことがあります。これは欠点というより、むしろ「最後まで終わらなかった」ことを示す手がかりにもなります。
つまり、開始時刻だけがあり終了時刻がない場合は、途中停止の可能性を疑うきっかけになります。この視点は運用上とても重要です。
終了時刻の記録とログ設計の関係
終了時刻があると、ログの区切りがはっきりします
ログに開始時刻だけがあると、「どこから始まったか」は分かっても、「どこで終わったか」が曖昧になりやすいです。一方、終了時刻まで残しておけば、その実行の範囲が分かりやすくなります。これはあとからログを読むときに非常に助かります。
将来的には処理結果や所要時間と組み合わせられます
終了時刻を記録できるようになると、次は成功・失敗、処理件数、所要時間なども一緒に記録したくなります。つまり、終了時刻の記録は、ログをより実用的にしていくための大切な土台です。
初心者がよくつまずくポイント
終了時刻を取る位置が早すぎる
これは非常によくあるミスです。メイン処理が終わったと思っても、そのあとにファイル保存やログ書き込みが残っているなら、まだ完全には終わっていません。どこを終了とみなすかを考えることが重要です。
開始時刻と終了時刻で別々に考えすぎる
終了時刻は単独でも使えますが、開始時刻と組み合わせることで価値が大きくなります。初心者のうちは片方ずつ学ぶのが自然ですが、少し慣れたら「1つの実行の始まりと終わり」としてまとめて考えると理解しやすいです。
記録形式がバラバラになる
開始時刻と終了時刻で違う形式を使ってしまうと、あとから見にくくなります。たとえば、開始は %Y-%m-%d %H:%M:%S なのに、終了は別の形式だと並べて読みづらくなります。基本的には同じ形式でそろえるほうが分かりやすいです。
セキュリティと安全性の観点からの注意
終了時刻だけでなく、何の処理が終わったかも残す
終了時刻だけを書いても、何の処理なのか分からないとあとで混乱することがあります。そのため、ログへ残すときは「どの処理の終了時刻か」が分かるメッセージにするとよいです。これは運用の見やすさにもつながります。
ログに不要な機密情報を混ぜない
終了時刻そのものは安全性の高い情報であることが多いですが、ログを書く流れで、つい設定値や入力データをそのまま出したくなることがあります。その中に機密情報が含まれていないか注意が必要です。ログは便利ですが、見られる可能性がある場所でもあります。
初心者向けの実用テンプレート
ここまでの内容を踏まえると、自動処理の終了時刻を記録する基本テンプレートは次のようになります。終了時刻の取得、表示、ログ記録を整理した形です。
from datetime import datetime
# 終了時刻を記録する関数です
def record_end_time(log_file_name):
# 現在の日時を取得します
end_time = datetime.now()
# 表示用の文字列へ整形します
end_time_text = end_time.strftime("%Y-%m-%d %H:%M:%S")
# 画面へ表示します
print(f"処理終了時刻: {end_time_text}")
# ログファイルへ追記します
with open(log_file_name, mode="a", encoding="utf-8") as file:
file.write(f"処理終了時刻: {end_time_text}\n")
# あとで使えるように終了時刻を返します
return end_time
# メイン処理です
def main():
# ログファイル名を指定します
log_file_name = "process.log"
# ここに本来の自動処理を書く想定です
print("自動処理を実行します")
# 終了時刻を記録します
end_time = record_end_time(log_file_name)
if __name__ == "__main__":
main()Pythonこのテンプレートは、初心者が実際の自動化へ発展させやすい基本形です。ここに開始時刻の記録や、処理時間の計算を少しずつ加えていくと、より実用的な運用記録へ発展できます。
学習を進めるときのおすすめの順番
自動処理の終了時刻を記録する技術をしっかり身につけるには、次の順番で進めると理解しやすいです。
- まずは
datetime.now()で現在日時を取得して表示する - 次に
strftime()で見やすい形式へ整える - その次に処理の最後で取得するようにする
- 画面表示だけでなくログファイルへも残す
- 開始時刻と並べて記録してみる
- 最後に所要時間の把握へ発展させる
この順番で進めると、単なる日時取得ではなく、自動化の成功確認や運用確認のための記録として理解しやすくなります。
まとめ
Python自動化の基礎として、自動処理の終了時刻を記録する考え方は非常に重要です。終了時刻を残しておくことで、処理が最後まで完了したかを確認しやすくなり、開始時刻と組み合わせれば処理時間の把握や運用改善にもつながります。これは自動化の信頼性を高める大切な土台です。
基本は、datetime.now() で現在日時を取得し、strftime() で見やすく整えて、画面表示やログへ記録することです。ただし、本当に大切なのは、どこを終了とみなすかを意識し、その地点で時刻を取ることです。
初心者の方はまず、画面へ終了時刻を表示するところから始めると良いです。そこからログファイルへの記録、開始時刻との組み合わせ、所要時間の確認へと少しずつ広げていくことで、自動化の記録設計がしっかり身についていきます。
自動処理の終了時刻を記録することは、一見小さな工夫に見えて、実際には自動化の完了確認と運用の見える化を支える大切な技術です。だからこそ、早い段階で丁寧に理解しておく価値があります。
