「1回きり」と書いた不具合が、25日ごとに戻ってくると分かった

自動で動かしている仕組みが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回きり」も、検証が返した「正常」も、見ている範囲の中では正しい。
範囲の外に出たものだけが落ちます。

目次