ブログの予約投稿と、X での告知を、それぞれ別の仕組みで自動化しています。
その2つの間で、告知だけが先に出て、記事が11時間開けない状態を作ってしまいました。
しかも、同じ形の事故を11日前に別の媒体でやったばかりでした。
2本の自動化は、お互いの成否を知らない
構成はこうなっています。
| 仕組み | 実行 | |
|---|---|---|
| ブログ記事 | WordPress の予約投稿 | 19:00 / 20:00 / 21:00 |
| X の告知 | 自作のキュー + サーバーの cron | 記事の公開時刻の少し後 |
記事が予定どおり公開されれば、告知は正しいリンクを流します。
ただ、告知の仕組みは「記事が本当に公開されたか」を見ていません。
日付と時刻が来たら出る。それだけです。
記事の側も同じで、告知が出たかは知りません。
記事は1本しか出ず、告知は3本とも出た
ある夜、3本の記事を予約していました。
- 記事: 3本中1本しか公開されなかった
- 告知: 3本とも出た(X のタイムラインに残っている)
結果、2本ぶんの告知がリンク切れの状態で、朝まで11時間そのままでした。
押した人には何も表示されません。
原因は、予約投稿の日時を前倒しで一括変更したときの操作ミスで、
WordPress が公開判定に使う内部の値がずれていたことでした。
技術的な中身は別の記事に譲るとして、ここで書きたいのは構造のほうです。
気づき方が、いちばんまずかった
朝の時点で、私は「昨日の発信は全部出ているみたいだ」と思っていました。
X を見ると告知が3本きれいに並んでいたからです。
管理画面を開いたときに「予約投稿の失敗」という赤字が目に入って、そこで初めて気づきました。
実は、朝の確認手順には「前夜の記事が公開されたか見る」と書いてありました。
書いてあったのに、その確認より先に「出ているようだ」で進めていました。
自動化を2本並べると、片方が落ちてももう片方は予定どおり動きます。
しかも動いたほうが外から見えるので、外向きには「出ている」ように見える。
だから気づくのが遅れる。
今回は11時間。
11日前に、Zenn でまったく同じ形をやっていた
正直に書くと、これが初めてではありません。
11日前に、Zenn で同じことを起こしていました。
- 記事の自動公開が1日飛んだ
- 告知だけが予定どおり出た
- リンク先が 404 のまま11時間
そのとき「独立した自動化2本の依存関係は、スケジュールでは守れない」と結論を出しました。
Zenn 側の仕組みには「出なかったことを検知する」手当てを入れました。
直したのは Zenn だけでした。
ブログには何も入れていません。
片方だけを直していた
同じ構造がブログ側にも残っていたのに、事故が起きた媒体だけを直して終わりにしていました。
仕組みとして解いたつもりが、1箇所にしか届いていなかったわけです。
原因は違います。Zenn は「公開が予測でしかない」、ブログは「予約が静かに失敗する」。
入口は違うのに、「片方が落ちてももう片方は予定どおり出る」という形は同じでした。
形が同じなら、原因が違っても同じだけ晒します。
どちらも11時間。
事故を直すときは、同じ構造が他にないかを先に数える
今回持ち帰ったのは2つです。
- 事故を直すときは、「この構造が他のどこにあるか」を先に数える。
媒体ごとに直すと、直していない媒体で同じことが起きる。今回がそれです
- 自動化は手間を減らしますが、確認する理由まで消してはいけない。
今回は確認手順が用意されていて、私がそれを飛ばしただけでした
2回目でようやく「媒体の問題」ではなく「構造の問題」だと分かりました。
1回目のときに数えておけば、2回目はなかったはずです。
