Pythonのscheduleライブラリ一つで毎日やっていた繰り返し作業を完全自動化しました
Photo by Ferenc Almasi on Unsplash
正直に話しますね。私も最初は毎朝手動でスクリプトを実行して、うっかり忘れると一日を無駄にして、そのまま疲れて諦めるというパターンを繰り返していました。クローリングにしても、レポート生成にしても、ファイルのバックアップにしても――「自動で動いてくれたらどれだけ楽だろう」と思うだけでした。でもPythonのscheduleライブラリIを一つ知ってから、その悩みが完全になくなりました。この記事を読み終えたら、今日中にあなたのパソコンで自動実行の設定を完了できますよ。本当に。
Photo by Markus Winkler on Unsplash
1. scheduleライブラリとは何か、たった1分で理解しましょう
scheduleは、Pythonで特定の関数を「いつ、どのくらいの頻度で」実行するかを指定するライブラリです。複雑なcron構文を知らなくてもよく、サーバーも不要で、ただあなたのノートパソコンで動かせます。簡単に言うとこういうことです:
- 毎日午前9時にニュースのクローリングを実行
- 1時間ごとに特定のフォルダをバックアップ
- 毎週月曜日の午前に週次レポートを自動生成
こういったことをコード10行以内で設定できます。インストールも簡単です。ターミナルを開いてこの一行を入力するだけ:
pip install schedule
以上です。インストールに30秒もかかりません。すでにPython環境があれば、すぐに次のステップへ進めます。
Photo by Peaky Frames on Unsplash
2. 基本構造はこうなっています――コピペしてすぐ使いましょう
最初に見たとき、構造が見慣れなくて詰まってしまう方が多いです。なのでそのままテンプレート全体をお渡しします。これをコピペして、実行したい関数だけ差し替えれば大丈夫です:
import schedule
import time
def 自動化したい作業():
print("今実行されました!")
# ここに実際にやりたいコードを書く
# 実行間隔の設定
schedule.every().day.at("09:00").do(自動化したい作業)
# 動き続けるためのループ
while True:
schedule.run_pending()
time.sleep(1)
たった3つの部分だけ覚えてください:
- 関数の定義:自動実行したい内容を関数にする
- スケジュールの設定:
schedule.every()...の部分でいつ実行するかを指定 - whileループ:プログラムが起動したままスケジュールを監視し続けるためのコード
この3つで全部です。最初はwhileループが少し不安に見えますが、「プログラムが終了せずに待機しながら、タイミングが来たら実行する」と理解すれば大丈夫です。time.sleep(1)は、CPUが無駄に100%稼働しないよう1秒ごとに休ませるためのものです。必ず入れておきましょう。
Photo by Ilija Boshkov on Unsplash
3. こうすれば時間設定が自由自在になります――よく使うパターン集
scheduleライブラリの本当の強みは、時間設定が英語の文章のように直感的だという点です。暗記する必要もなく、見ればすぐに理解できます。よく使うパターンをまとめてご紹介します:
- 10秒ごと:
schedule.every(10).seconds.do(関数名) - 5分ごと:
schedule.every(5).minutes.do(関数名) - 1時間ごと:
schedule.every().hour.do(関数名) - 毎日特定の時間:
schedule.every().day.at("08:30").do(関数名) - 毎週月曜日:
schedule.every().monday.at("09:00").do(関数名) - 毎週金曜日の夕方:
schedule.every().friday.at("18:00").do(関数名)
実際にこれをどう使うかというと――例えば、ショッピングサイトの最安値を毎朝7時にクローリングしてExcelに保存するスクリプトがあるとします。その場合はこうすればいいです:
schedule.every().day.at("07:00").do(クローリング及び保存)
たったこの一行です。そうすれば毎朝7時に自動で動いてくれます。あなたが寝ている間もです。複数のスケジュールを同時に登録することもできます。例えば午前にクローリング、午後にレポート生成、というようにschedule.every()...を複数行書けば、すべて動作します。
Photo by Markus Spiske on Unsplash
4. パソコンを閉じても動かし続けるにはこうしましょう――本当の自動化の最後のステップ
ここで多くの方がつまずくポイントがあります。「Pythonファイルを実行しても、ターミナルを閉じたら止まるじゃないですか」――その通りです。パソコンを再起動したらまた手動で起動しなければなりません。これが解決できていなければ、本当の自動化とは言えません。2つの方法をご紹介します:
方法1――Windows:タスクスケジューラを活用する
- Windowsの検索欄に「タスクスケジューラ」と入力して起動
- 「基本タスクの作成」をクリック
- トリガー:コンピューターの起動時 / または任意の時間
- 操作:プログラムの開始 →
pythonw.exeを選択(ターミナルウィンドウなしで実行される) - 引数の追加にPythonファイルのパスを入力
pythonw.exeを使うのがポイントです。python.exeを使うと黒いウィンドウが表示されますが、pythonwはバックグラウンドで静かに実行されます。
方法2――Mac/Linux:crontabで起動時に自動実行する
ターミナルでcrontab -eと入力し、以下のように追記します:
@reboot /usr/bin/python3 /Users/自分の名前/scripts/my_schedule.py &
末尾に&をつけるのを忘れずに。バックグラウンド実行のコマンドです。
この2つのどちらかを設定しておけば、パソコンが起動するたびにスクリプトが自動的に始まります。これでもう本当に気にしなくても動き続ける仕組みの完成です。
今すぐこれだけやってみてください
長い説明を読んでいただきありがとうございます。でも、どれだけしっかり読んでも、やってみなければ自分のものにはなりません。だからたった一つだけお願いがあります。
今すぐターミナルを開いてpip install scheduleと入力してください。そして上でお渡しした基本構造のコードをコピペして、print("こんにちは、自動で実行されたよ!")の一行だけ関数の中に入れて動かしてみてください。10秒ごとに出力されるよう設定すれば、すぐ目で確認できます。
それができた瞬間、「あ、これ本当に動くんだ」という感覚が生まれて、そこからアイデアが次々と湧いてきます。クローリング、Telegram通知、ファイル整理、メール送信――すべてこの構造の上に乗せていくだけです。最初の実行がすべてです。今日ぜひやってみてください。
댓글
댓글 쓰기