自動で動かしている仕組みが2つあります。
ひとつは、書き溜めた技術記事を毎日1本ずつ公開するもの。
もうひとつは、その記事を知らせる投稿をSNSへ出すものです。
別々の仕組みで、どちらも日付を見て動きます。
9月8日、記事のほうが1日飛びました。
知らせるほうは予定どおり動いたので、まだ無いページを指しました。
その日のうちに対策を入れて、記録に「この1日ずれは1回きり」と書きました。
翌日、なんとなく聞いてみました
次の日、他の作業をしながら気になって、この件は今後も起きそうか聞いてみました。
深い理由はありません。
前日の結論に自信があったわけでもなく、確かめていなかったから引っかかっていました。
公開の処理を60日ぶん回して確かめてもらったら、約25日おきに再発すると出ました。
理由は、次の1本を出す間隔が24時間ちょうどではないことでした。
少しずつ後ろへずれていくので、いつか1日の枠からはみ出します。
はみ出した日は、その日に出る記事が無くなります。
ずれは毎日わずかなので、しばらくは何も起きません。
溜まった時点で1日飛んで、そこからまた溜まりはじめます。
「もう起きない」は、頭の中で追っただけの結論でした。
60行ほどのプログラムを書いて回したら、すぐに出てきました。
その検算が、翌日の引き継ぎから消えていました
ここからが本題です。
さらに次の日、持ち越したタスクを見直しました。
再発する日として書いてあったのは、10月3日の1件だけでした。
前日の記録には、10月3日のほかに10月28日、11月22日、12月17日と並んでいます。
原因になる側の日として、9月14日、10月9日、11月3日も書いてありました。
9月14日は4日後です。
引き継ぎのメモには「持ち越し多数」と書いてありました。
消えた分は、その「多数」の中に入っていました。
書き戻すだけでは足りませんでした
日付を書き戻すのは簡単ですが、それだと同じことが起きます。
次に転記するとき、また減ります。
そこで、公開の処理を先読みして「公開予定が無いのに告知だけある日」を名指しで出すスクリプトを書きました。
人が日付を覚えておく形をやめた、ということです。
検証は、前日に手で計算した結果と突き合わせました。
別々に出した結果が一致したので、どちらも信用できます。
そのうえで、このスクリプトを回す場所を決めました。
週に一度の点検手順に組み込んでいます。
決めないと、これも次の「多数」になります。
両方 ok なのに、ずれていました
あとから見ると、自動の検証は2本動いていました。
片方は記事が出たかを見て、もう片方は告知が出たかを見ています。
9月8日はどちらも正常を返しました。
同じ日に揃っているかを、どちらも見ていなかっただけです。
書いた結論を確かめないまま次へ進んでいたのと、構図は同じでした。
自分で書いた「1回きり」も、検証が返した「正常」も、見ている範囲の中では正しい。
範囲の外に出たものだけが落ちます。
