miyoshitan’s blog

岐阜発。自動車サービス現場とPython・Flask・Raspberry Pi・M5Stackの実践記録。

AI・IoT・個人開発の実験ログと考察をまとめる技術ブログ

Pythonでスケジュール管理!ラズパイ5でタスク自動実行

 

ラズパイ5でスケジュール管理を始めよう

ラズパイ5でできる自動化とは

ラズパイ5は常時起動しておける小型PCとして、自動化用途に非常に向いています。例えば、毎日決まった時間にバックアップを取る、定期的にWebから情報を取得する、センサーの値を記録するといった処理を放置で実行できます。一度仕組みを作ってしまえば、人が操作しなくても動き続けるのが大きなメリットです。まずはシンプルなタスクから始めて、「自動で動く便利さ」を体験するのがおすすめです。

なぜPythonでタスク管理を行うのか

Pythonはシンプルな文法で扱いやすく、ファイル操作やネットワーク処理など自動化に必要な機能が豊富に揃っています。ラズパイOSにも標準で入っているため、すぐに使い始められる点も魅力です。また、スケジュール実行用のライブラリやcronとの相性も良く、初心者でも段階的にレベルアップできます。まずは短いスクリプトを書いて、実際に動かしてみることが理解への近道です。


スケジュール管理の仕組みを理解しよう

タスク自動実行の基本(定期実行とは)

タスクの自動実行とは、「指定した時間や間隔で処理を繰り返す」ことです。例えば「毎日朝9時に実行」や「10分ごとに実行」といった形です。この仕組みを理解することで、様々な自動化が可能になります。基本は「いつ」「何をするか」を決めるだけです。シンプルに見えますが、これだけで日々の作業を大きく効率化できます。

cronとPythonスクリプトの関係

cronはLinux系OSで使われる定期実行の仕組みです。ラズパイOSにも標準搭載されています。cron自体はスケジュール管理を担当し、実際の処理はPythonスクリプトで書きます。つまり「cronが時間を管理し、Pythonが処理を実行する」という役割分担になります。この組み合わせを理解すれば、かなり自由度の高い自動化が実現できます。


開発環境を準備しよう

必要なもの(ラズパイ5・周辺機器)

ラズパイ5本体に加えて、電源、microSDカード、ディスプレイ、キーボードがあれば基本的な環境は整います。自動化用途では常時稼働することが多いため、冷却ファンや安定した電源も重要です。ネット接続も必須になるケースが多いので、Wi-Fiまたは有線LANを準備しておきましょう。開発のしやすさが作業効率に直結するため、最初の環境構築は丁寧に行うのがポイントです。

Pythonの動作確認とVSCodeの準備

ターミナルで以下を実行し、Pythonが使えるか確認します。
python3 --version
問題なければ、VSCodeをインストールして拡張機能「Python」を追加します。インタープリタを選択すれば、コード補完やデバッグが使えるようになります。初心者ほどエディタのサポートは重要なので、ここはしっかり設定しておきましょう。

必要なライブラリのインストール

今回使用するscheduleライブラリは以下で導入できます。
pip3 install schedule
インストール後は、簡単なスクリプトで動作確認しておくと安心です。ライブラリを使うことで、cronを使わずにPython単体でもスケジュール処理が書けるようになります。


Pythonでタスク自動化を作ってみよう

シンプルなスクリプトを書いてみる

まずは基本となるスクリプトを作成します。
def task():
print("タスク実行中")

task()

これを実行するとメッセージが表示されます。まずは「処理を関数としてまとめる」ことが重要です。この形にしておくと、後からスケジュールに組み込みやすくなります。

実行時間を指定する方法(scheduleライブラリ)

scheduleを使うと簡単に時間指定ができます。
import schedule
import time

def task():
print("実行!")

schedule.every(10).seconds.do(task)

while True:
schedule.run_pending()
time.sleep(1)

これで10秒ごとに処理が実行されます。シンプルですが非常に便利です。

定期実行の処理を作る

時間指定も可能です。
schedule.every().day.at("09:00").do(task)
これで毎朝9時に実行されます。用途に応じて柔軟に設定できます。まずは短い間隔で試し、動作を確認してから実用に移行するのがおすすめです。


cronを使って自動実行する

cronとは何か

cronはバックグラウンドで動作し、指定した時間にコマンドを実行する仕組みです。scheduleと違い、プログラムを常時起動しておく必要がないのが特徴です。システムレベルで管理されるため、安定した自動実行が可能になります。

cronの設定方法(crontabの使い方)

以下のコマンドで設定画面を開きます。
crontab -e
例えば毎日9時に実行する場合は、
0 9 * * * python3 /home/pi/task.py
と記述します。最初は難しく感じますが、慣れると非常に強力です。

Pythonスクリプトを登録して動かす

作成したスクリプトのパスを指定するだけで実行できます。パスは絶対パスで書くのがポイントです。相対パスだと動かないことがあるため注意しましょう。一度設定すれば、自動で実行され続けます。


実用的な活用例

定期バックアップを自動化する

重要なファイルを定期的にコピーするスクリプトを作れば、万が一のトラブルにも対応できます。Pythonのshutilを使えば簡単に実装可能です。手動でやると忘れがちな作業ほど、自動化の効果が大きくなります。

天気やニュースを定期取得する

APIを使って情報を取得し、ログに保存することもできます。例えば朝に天気を取得して表示するだけでも便利です。requestsライブラリを使えば簡単に実装できます。

IoT機器やGPIOと連携する

ラズパイの強みはGPIOです。一定時間ごとにセンサーを読み取ったり、LEDを制御したりできます。ソフトとハードを組み合わせた自動化は、ラズパイならではの楽しさです。


トラブルシューティング

スクリプトが実行されないときの確認ポイント

まずは手動でスクリプトを実行して動作確認を行います。その上でcron設定を見直します。特にパスの指定ミスが多いので注意しましょう。ログを出すようにすると原因が分かりやすくなります。

パスや権限に関する注意点

cronでは環境が異なるため、相対パスや環境変数に依存したコードは動かないことがあります。ファイルパスは絶対パスで記述し、必要に応じて実行権限も付与します。

ログを出力して原因を探る

printだけでなく、ログファイルに書き出すのも有効です。
with open("log.txt", "a") as f:
f.write("実行\n")
これで実行状況を後から確認できます。


便利に使うための工夫

実行結果を通知する(メール・LINEなど)

タスクの結果を通知すれば、実行状況をリアルタイムで把握できます。LINE Notifyやメール送信を組み合わせると便利です。異常時だけ通知する仕組みにすると、運用しやすくなります。

エラー時のリトライ処理

ネットワーク処理などは失敗することもあります。try-exceptを使ってリトライ処理を入れると安定性が向上します。実用では重要なポイントです。

長時間運用のポイント

長時間動かす場合は、メモリ使用量やログの肥大化に注意が必要です。不要なデータは定期的に削除するなど、メンテナンスも考慮して設計しましょう。


まとめ:自動化で生活を楽にしよう

小さな自動化から始めるコツ

最初から難しいことをやろうとせず、「1日1回動く簡単なスクリプト」から始めるのがコツです。成功体験を積み重ねることで、徐々に複雑な自動化にも挑戦できます。

次に挑戦したいラズパイ活用アイデア

Webサーバー化やスマートホーム連携など、ラズパイの活用は無限に広がります。今回のスケジュール実行をベースに、さらに便利な仕組みを作ってみてください。