自動更新にしたブログが、1ヶ月まるごと止まっていた話
自動でブログが更新される仕組みを作って、満足していました。あとは記事を書き溜めておけば、決まった曜日に勝手に公開される。手を離しても回る——そう思っていたんです。
ところが先日ふと確認したら、最終公開日が1ヶ月以上前で止まっていました。在庫の記事は残っているのに、一本も出ていない。自動化したつもりが、静かに死んでいた。
何が起きていたか
原因は、拍子抜けするほど地味なものでした。
自動実行のために置いていた小さな起動ファイル(バッチファイル)の改行コードが、Windowsの想定と違っていたんです。その結果、ファイル内の設定行が正しく読まれず、実行しようとしたコマンドが空っぽになっていました。
ログにはこう残っていました。
'""' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
"" ——空文字を実行しようとして失敗している。設定を読み込む行が、その手前の行とくっついてしまい、まるごと無視されていたわけです。
さらに悪いことに、定期実行の登録そのものも消えていました。仮にファイルが正しくても、そもそも呼び出されない状態だった。二重に止まっていたことになります。
一番の問題は「気づけなかった」こと
技術的な原因は5分で直りました。修正して実行したら、あっさり記事が公開された。
でも本当に痛かったのはそこじゃない。1ヶ月も気づかなかったことです。
自動化には、静かに壊れるという性質があります。手作業なら「今日はやっていないな」と自分で分かる。でも自動化は、動いているつもりで止まっていても、何も言ってくれません。エラーはログファイルの中で誰にも読まれないまま溜まっていく。
しかも厄介なのは、自動化した直後ほど確認しないことです。作った直後は動作確認するけれど、うまくいくと安心して見なくなる。その油断の期間に静かに壊れる。
学んだこと
「動いた」と「動き続ける」は別物
一度動いたから完成、ではありませんでした。自動化で本当に必要なのは、動き始めた後に止まったことに気づける仕組みのほうです。
今回の場合、パネルを開けば最終公開日が見えるようになっていました。それでも1ヶ月見なかった。見える化されていても、見なければ意味がない。
環境の細かい違いが牙をむく
改行コードなんて、普段は気にも留めません。でもWindowsのバッチファイルという文脈では、それが致命傷になった。「たぶん動くだろう」で置いたものは、たいてい後で刺さります。
失敗をどう扱うか
正直、これを書くかどうかは少し迷いました。自動化の記事を書いている本人が自動化に失敗している、というのは格好悪い。
でも、うまくいった話しか出てこない情報のほうが、読む側としては役に立たないと思っています。同じ穴に落ちる人が一人でも減るなら、恥ずかしい話も残しておく価値がある。
これからどうするか
対処としては、壊れていたファイルを正しい形式で作り直し、定期実行を登録し直しました。動作も確認済みです。
ただ、また同じことが起きない保証はありません。だから当面は「月に一度、最終公開日を見る」だけは自分のルールにしました。仕組みで解決できるならそれがベストですが、まずは確認する習慣のほうが確実です。
自動化は魔法ではなく、放っておけば劣化する機械に近い。そう思っておくくらいが、ちょうどいいのかもしれません。
このブログ自体をどう作ったかは 自動更新ブログを作った全記録 に、仕組み化して運用した話は ブログの自動公開を仕組み化して運用してみた記録 に書いています。今読み返すと、当時の自分はずいぶん楽観的でした。