← AIバイブコーディングTips 一覧へ Automation / Run Conditions

毎朝9時の自動実行が4回動かなかった理由は、スクリプトではなかった

毎朝9時に記事を1本公開するタスクが、ある月に4日分だけ抜け落ちた。スクリプトは正しく、エラーも出ていない。そもそも起動していなかった。原因はPCがスリープしていたことと、電池駆動のときは動かない設定だったこと。個人のPCで自動化を回すときに点検すべき「実行の前提条件」をまとめる。

この記事で手に入るもの

スケジューラが「動かなかった日」を生む2つの設定と、コードを疑う前に確認する切り分けの順番。自分の自動化を点検する5つの問い。

01 — 何が起きたか

失敗したのではなく、始まらなかった

私の運用では、Windowsのタスクスケジューラが毎朝9時に予約投稿のスクリプトを呼び出している。ある月、公開されるはずの日に記事が出ていない日が4日あった。

調べてみると、スクリプトの中身に問題は無かった。ログにはエラーも残っていない。残っていないのは当然で、その日はスクリプトが一度も起動していなかったからだ。失敗ログが無い失敗は、気づくのがいちばん遅れる。


02 — 原因

9時にPCが眠っていたか、電池で動いていた

日付ごとにPCの状態を突き合わせると、4日のうち3日は9時にPCがスリープ中、残る1日はノートPCが電池駆動だったと推定できた。そしてタスクの設定は次の2つになっていた。

01

StartWhenAvailable が無効

この設定が無効だと、予定時刻にPCが起動していなかった場合、あとで起動しても取り戻さず、その回を飛ばす。9時にスリープしていた日は、起きた時点で実行されるべきだったのに、そのまま欠落した。

02

電池駆動のときは起動しない

「AC電源のときだけ実行する」が既定になっていることがある。充電器を外して使っていた日は、条件を満たさず静かに見送られる。画面には何も出ない。

ポイント。スクリプトのバグではなく、実行環境の条件で止まっていた。コードをいくら読み返しても原因には辿り着けない。


03 — 切り分けの順番

「動かなかった」ときは、コードより先に条件を見る

自動化が動かなかったとき、つい直近に触ったコードを疑ってしまう。しかし、ログに何も無い欠落は、次の順番で見るほうが早い。

1
起動した記録はあるかスクリプトの冒頭に開始時刻が残っているか。無ければ、中身ではなく起動前の問題。
2
その時刻にPCは起きていたか電源の履歴やイベントログで、スリープ・休止・シャットダウンの時刻を確認する。
3
電源の条件は満たしていたか電池駆動や省電力モードで起動が見送られる設定になっていないか。
4
取り戻す設定か、飛ばす設定か時刻を逃したとき、起動後に実行するか、その回を捨てるかを確認する。

04 — 直し方と、直せなかった点

設定は2つ。ただし権限の壁があった

対処は、StartWhenAvailableを有効にして「逃した回は起動後すぐ実行」にすること、電池駆動でも実行を許可することの2つ。ところが私の環境では、タスク設定を変える操作が権限の都合でブロックされ、自動では直せなかった。やることリストに「ユーザーが手動で変更する」と残す形になった。

ここは正直に書いておきたい。自動化を任せている相手にも、できないことは「できなかった」と残してもらうのが大事だ。直ったことにして閉じるより、未解決の項目として見える状態で残すほうが、次に気づく人が動ける。

# 呼び出し側の .bat に、起動の事実だけ残す最小の例
echo %date% %time% start >> run.log
powershell -File publish_next.ps1 >> run.log 2>&1
echo %date% %time% end >> run.log

このログがあれば、「起動していない日」は開始行が無い日として一目で分かる。欠落の検知は自動化は黙って死ぬ——AI同士に見張らせる番犬設計の発想とつながる。


05 — 自分の自動化を点検する

個人PCの自動化には、「PCが動いている」前提が隠れている

クラウドで動く処理と違い、手元のPCで回す自動化は、PCの電源状態を前提にしている。次の5つを一度確認しておくと、静かな欠落をかなり防げる。

1
実行時刻にPCは必ず起きているかスリープ・休止の設定と、実行時刻が重なっていないか。
2
電池駆動で動く設定かノートPCを持ち歩く日があるなら、電池でも実行できるようにしてあるか。
3
逃した回を取り戻す設定か起動後に実行するか、飛ばすかを自分で決めてあるか。
4
起動した事実が毎回残るか成功・失敗だけでなく、「そもそも始まった」を残す1行があるか。
5
欠落を誰が見つけるか数日単位の空白を、自動または定期的な目視で拾う仕組みがあるか。

本記事は筆者自身の運用記録に基づく。設定項目の名称や既定値はOSや環境によって異なる。