ブログ記事を作って、その記事を紹介する画像をSNSへ予約投稿する。そういう流れを自分で組んでます。
それが先日、途中で止まりました。しかも一回やなくて、走らせるたび毎回おんなじ場所で。犯人はバグやなかった。別々の日に別々の理由で足した、3つのルールでした。
前に正しいガードが2つあったのに、その隙間をすり抜けた話を書きました。今回は逆です。隙間やなくて、3つとも正しいまま、同時には成り立たん形になっとった。
どれも正しいのに、揃った瞬間に進めんくなった

止まった処理がやろうとしとったのは、紹介画像の一覧表を作ることです。画像・説明文・リンク先・公開日を並べただけの、地味な表。
そこに効いとったルールが3つありました。
- 記事は翌日の朝に公開する(今日書いた記事は、明日にならんと世に出ん)
- 紹介画像の公開日は、記事の公開日と同じにする(前の日に出したら、リンク先がまだ無い)
- 表を作る前に、リンクがほんまに開くか実際に叩いて確かめる
1つ目は運用の都合。2つ目は読者が「ページが見つかりません」を踏まんため。3つ目は、リンクを打ち間違えたまま出さんため。
どれも、単体では文句のつけようがない。
で、3つ並べて読むと分かります。表を作る時点で、記事はまだ明日のもの。リンクは必ず開かん。だから毎回止まる。
3つ目を足した、その次の日に詰まりました。
いちばんあかん直し方を、最初に思いついた
最初に浮かんだのは「確認をやめる」でした。次に浮かんだのが「開かんかったら警告だけ出して、そのまま通す」。
どっちもあかんやつです。
この確認は、リンクの打ち間違いを見つけるために置いたもの。鳴らんようにしたら、本物の間違いも一緒に黙ります。そして黙ったまま出た時に困るのは、僕やなくて読者。開いた先が「ページが見つかりません」。
エラーが邪魔やから消す、は直したことにならん。うるさい火災報知器の電池を抜くのと、やっとることが同じなので。
直したのはルールやなくて「何を確かめるか」
結局こう変えました。確かめる先を「今このページが開くか」から「そのページが、画像の出る日までに出る予定として実在するか」へ。
ブログの管理側には、まだ公開してへん記事も含めて問い合わせできる口があります。そこへ聞いて、3つ揃った時だけ通す。
- その記事が、ちゃんと実在する
- 予約済みか、もう公開済みになっとる
- 記事が出る日が、画像の出る日と同じか、それより前
ルールは1つも削ってません。粗かった判定を細かくしただけ。打ち間違いは今もちゃんと鳴ります。そんな記事は存在せんから、問い合わせが「無い」と返してくるので。
ついでに、やってみて初めて分かったことが1個。予約中の記事は、正式なURLがまだ決まってません。公開の瞬間に確定する作りでした。URL同士を見比べる方式のままやったら、予約中の記事が全部「URLが違う」と判定されるとこやった。比べる先を記事の名札に替えて解決。
ルールは、足した日やなくて揃った日に牙をむく
今回いちばん怖いなと思ったのは、足した本人には見えんことです。
3つ目を足した日、僕は他の2つのことなんか考えてません。1つ目はその2日前、2つ目は前の日に、それぞれ別の理由で決めたもの。それぞれの日の自分は、それぞれ正しかった。正しさが3つ揃って、動かんくなっただけで。
ルールが増えるほど、この「揃う日」も増えていきます。やから新しく1個足す時に見なあかんのは、足すルールが正しいかどうかやなくて、今あるルールと同時に成り立つかのほう。
あと、詰まった時にまず消したくなるのが「いちばん最近足したやつ」なんですけど。今回それを消してたら、リンクの打ち間違いを一生見つけられん仕組みが残ってました。
消すのはルールやなくて、判定の粗さ。次もたぶん間違えるので、書いて残しときます。