定時実行の失敗は、画面に出ない。だから、動いた記録を残すか、自分で起動する形に変える

毎晩23時に走るスケジュールを作りましたが、2回作って、2回とも消えました。2回目を消したのは私自身で、理由は、更新されていなかったからです。

自動実行がうまくいかないときの答えは、だいたい決まっています。失敗したらメールを飛ばす設定を入れるか、実行履歴を開いて前回の結果を見るかです。どちらも正しくて、どちらも先に設定しておく必要があります。

この記事で見るのは、その手前です。定時実行が動いた日と動かなかった日を、翌朝に見分けられる形をつくり、そのうえで走らせる間隔を決め直します。

目次

毎晩23時に走らせるスケジュールは、2回とも消えた

その日に溜まった分を夜のうちにまとめて処理する作業が、毎日ありました。手でやると時間がかかるので、毎晩23時に自動で始まるスケジュールを作りました。

1回目は、いつのまにか無くなっていました。私が承認していない状態で登録されていたようで、そのまま残らず、気づいて作り直しました。

2回目を消したのは私自身で、23時を過ぎても翌朝になっても、何も増えていない日が続いていました。更新されていないなら置いておく意味が無いので、消しました。

ただ、あとから並べると、順番が妙です。動かなかったから消したのに、動かなかったことを、私はどこで知ったのでしょうか。

動かなかったことを知る道は、1本しかない

通知でもエラー画面でもなく、翌朝に、増えているはずのものが増えていなかった。それだけです。

自動実行が動かなかった日、手元には何も届きません。何も届かないのは、うまく動いた日も同じです。受け取る側から見ると、成功した朝と止まっていた朝は、同じ見え方をします。

だから、動かなかったことを知る道は、あるはずの成果物が無い、という1本しかありません。そしてその道は、その成果物を使おうとした瞬間まで開きません。

使う予定が無い日は、止まっていても気づきません。週明けにまとめて使う種類の作業なら、金曜に止まっても、気づくのは月曜になります。

失敗の通知は、失敗を検知できたときにしか飛ばない

ここで勧められるのが、失敗したら通知を飛ばす設定です。実行結果が異常ならメールを送り、履歴に結果を残す。設定できる環境なら、入れておいたほうがいいのは確かです。

ただ、通知には、失敗を検知した何かが通知を送っている、という前提が1つあります。つまり、その何かは動いていなければなりません。

すると、通知が来ない朝の意味が2つに割れます。1つはうまく動いたという意味で、もう1つは、登録ごと止まっていて通知を出す部分も動いていないという意味です。受信箱の上では、この2つは同じに見えます。

私が消したスケジュールは、後者でした。登録そのものが無くなっていたので、失敗すら起きていません。止まったことを教えてくれるのは、止まっていない仕組みだけです。

うまく動いた朝に1行残すと、走らなかった朝が見つかる

そこで、記録を残す向きを逆にします。失敗したときではなく、うまく動いたときに1行残す形にします。残すのは日付と処理した件数で、それだけで足ります。

朝に見るのは、その1行があるかどうかだけで、中身は読まなくてかまいません。無いものを探すのは難しくても、あるはずの1行が無いことなら見つかります。

毎日走らせる必要があったかを、1回分の量で数え直す

私が23時にした理由は、振り返ると1つしかなく、毎日やる作業だと思っていたからです。実際に毎日発生していたのは溜める側で、処理する側は毎日でなくてかまいませんでした。

数え方は、そう複雑ではなく、前回走ってから今回までに、実際に何件溜まったかを数えます。0件の回が続くなら間隔が短すぎますし、1回で処理しきれない量になっているなら間隔が長すぎます。

間隔を決めているのは、カレンダーではなく、1回分に溜まる件数です。毎日という間隔は、作業の性質から出てきたものではなく、こちらの思い込みから出てきていました。

自分で指示して回すと、動いたかどうかが返事で返ってくる

2回目のスケジュールを消したあと、形を変えました。溜めておいた分がある程度の量になったところで、自分で指示を出して回す形にして、自動化はやめました。

変わったのは、動かす瞬間に自分がいることです。指示を出せば、動いたかどうかが返事で返ってきます。途中で止まればそこで分かりますし、終われば終わったと分かります。23時に何が起きたのかを、翌朝に推測しなくてよくなりました。

思っていなかった効果も1つありました。溜めておいた分を回す前に一度開いたところ、すでに済ませたものと中身が同じものが混じっていました。自動で流していたら、同じものを二度作っていたはずです。人が一度目を通す工程が、結果として間に入っていました。

弱点も書いておくと、この形は、自分が指示を出さない日は何も進みません。自動実行なら忘れていても進みますが、この形では、忙しい時期が続けば溜まる一方になります。そして、間隔としてちょうどよいかどうかも、まだ分かりません。回したのはいまのところ1回だけで、1回では、溜まる速さも1回あたりの量も確かめたことにならないからです。

止まったことに気づける形を、先に1つ選ぶ

定時実行をやめる必要はなく、先に決めておくものが1つあるだけです。動いたことが、翌朝に1行で見えるようになっているかどうかです。

見えるようになっているなら、自動のままで問題ありません。なっていないなら、選べる形は2つで、うまく動いたときの1行を足すか、自分で起動する形へ寄せるかです。

どちらにするかは、1回分に溜まる件数で決まります。毎日走らせるだけの件数が本当に溜まっているなら、うまく動いたときの1行を足します。溜まっていないなら、溜めてから自分で指示するほうが、失敗が見えるぶん扱いやすくなります。

今晩23時に走る予定のものを、1つ思い浮かべてみてください。それが明日の朝、走っていなかったとして、あなたはどこでそれを知ることになるでしょうか。知る場所が「使おうとしたとき」しか無いなら、その手前に1行を足すところから始められます。

  • URLをコピーしました!
  • URLをコピーしました!
目次