Kon's DX Lab - Case Study

Day 96|VPSでスケジューラを動かしてみよう

Published on 2025-07-06

🔬 Case Study Summary
Problem

(ここに課題を記述)

Result

(ここに具体的な成果を記述)


Tech & Process

(ここに採用技術とプロセスを記述) コードを詳しく見る »

こんにちは、こんです🦊

「毎朝7時に自動でレポートを作りたい!」
「Slackに通知を飛ばしたいけど、手動でやるのは面倒くさい!」
そんな小さな「めんどくさい」を消してくれるのが、VPS × cron のスケジューラです。

自分のPCだと電源切ったら止まっちゃいますが、
VPSなら24時間365日、ずっと動いてくれる相棒

だからこそ、ちょっとしたPythonスクリプトでも
スケジューラに登録するだけで“自動化ツール”に早変わりするんです。

この記事では、

✅ cron でスケジュールを作る
✅ Pythonでログを残す
✅ トラブルなく動くコツを知る

をやっていきます!

これができると、
「レポート作成」「バックアップ」「API自動取得」…
全部 人間の手放し で動きます。

「自分の代わりに動いてくれる相棒」を作っていきます🦊

1. 導入:この記事でできるようになること

今回は、VPSに cron を設定して 「決まった時間にPythonスクリプトを自動実行する」 方法に挑戦します。

具体例として:

  • 毎朝7時にレポートを自動生成して保存する

  • 必要に応じてその結果をメールやSlackへ通知する

  • 実行ログを残して、失敗を把握できる

VPSは常時稼働するため、スケジューラと非常に相性が良く、定期処理・バッチ処理を自動化する基本スキルです。


2. 背景・基礎知識

📌 cronとは?

cron は Linuxで最も広く使われているジョブスケジューラです。
cronを設定すると、決まったスケジュールでコマンドやスクリプトを自動で実行できます。

  • 「毎日」

  • 「毎週月曜」

  • 「毎月1日」
    など柔軟に設定できます。

📌 なぜVPSでcronを使うのか

ローカルPCだと電源を切ればスケジュールは止まりますが、
VPSなら 24時間365日、自動処理が途切れず動き続けます。

  • 例:夜間の自動バックアップ

  • 例:毎朝の売上集計レポート

  • 例:APIからの自動データ取得

📌 cronの基本構文

分 時 日 月 曜日 コマンド

例:

0 7 * * * コマンド

これは「毎日7時0分に実行する」という意味です。


3. 実践パート

ここでは「Pythonスクリプトをcronで動かし、実行結果をログに残す」ステップを具体的にやっていきます。

✅ ステップ1|Pythonスクリプトを作成する

例えば、毎朝7時に「今日の日付をレポートに追記」する daily_report.py を作ります。

# daily_report.py

from datetime import datetime

with open("/home/ubuntu/daily_report.log", "a") as f:
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    f.write(f"[{now}] Daily report executed.\n")
  • 絶対パス /home/ubuntu/ は自分の環境に合わせて修正してください。

✅ ステップ2|スクリプトをテスト実行する

念のため手動で動作確認します。

python3 /home/ubuntu/daily_report.py

正常に daily_report.log に追記されていればOKです。


✅ ステップ3|crontab に登録する

  1. crontab を編集します。

crontab -e
  1. 以下の1行を追加します。

0 7 * * * /usr/bin/python3 /home/ubuntu/daily_report.py >> /home/ubuntu/cron_output.log 2>&1

ポイント:

  • which python3 で正確なPythonパスを確認して書きます。

  • >> ... で cron専用の出力ログを残しておくとトラブル時に便利です。

✅ 設定が反映されたら、次の7:00に自動で動きます。


4. よくあるつまずき・FAQ


5. まとめと次回予告

今回学んだこと:

  • VPSでcronを使えば、いつでも止まらないスケジュール実行ができる

  • Pythonスクリプトを自動化する基本の流れ

  • ログを残して実行結果を確認する方法

#cron #vps #python