毎晩決まった時刻に走る自作ツールが、4日連続でエラーを返しとりました。気づいてはいたんです。見た上で、流してました。
「今日は対象のデータが無い日やから、そら落ちるわな」と自分で理由をつけて、納得して閉じとった。それが4日。実際は本物の未処理で、しかも真犯人は7日前の自分が打ったコマンドでした。
エラーを見逃した話やありません。見た上で握りつぶした話です。
僕は元・工場勤務で、いまは会社の外でAIと一緒にツールを作ったり、その延長で仕事を受けたりしてます。プログラムを書くのは今も得意やないので、動かんかった時の対処はだいたい泥くさいです。同じことをやってる人がわりとおると思うので、どう気づいて、どう直したかを書いておきます。
エラーは出とった。読んでもおった。
自作ツールは毎晩、その日のデータを取り込んで記録する仕組みです。処理が終わると成否のコードを返します。正常なら0、異常なら0以外。
4日間、そこがずっと3でした。
で、僕はその3を見るたびに、頭の中でこう処理しとったんです。「この日は取り込む対象が無い日や。データが無いんやから3が返って当たり前」。筋は通ってます。実際そういう日はある。だから毎回、納得して終わっとった。
ここが一番タチ悪いところで、説明が思いついた時点で調査が終わるんですよね。分からんまま放置したなら気持ち悪さが残るけど、理由がついてしまうと気持ち悪さごと消える。だから4日も続いた。
犯人は7日前の自分やった
5日目にやっと中身を見ました。取り込み対象は普通にありました。「データが無い日」は僕の想像でした。
追いかけていくと、ツールが管理に使っとるファイルが、なぜか古い内容に戻っとりました。日付を見たら7日前。その日に何をしたか思い出したら、作業をやり直すつもりで変更を巻き戻すコマンドを打っとった。狙ったファイルだけやなく、まだ保存しきってへんかった分まで一緒に持っていかれとったわけです。
つまり、実害はコマンドを打った瞬間に発生しとって、そこから7日間、誰にも気づかれんかった。その間ずっとエラーは律儀に出続けとったのに、僕が毎晩それに理由をつけて黙らせとった、という形です。
復旧コマンドを、すぐには打たんかった

原因が分かった時、エラーメッセージが親切に復旧用のコマンドを教えてくれとりました。打てば直ります。
打つ前に、中身を確認しました。そしたらデータ自体はもう入っとった。壊れとったのは管理ファイルのほうだけで、本体は無事やったんです。
正直に書いておくと、この処理は何回打っても結果が同じになる作り(エレベーターのボタンを何回押しても、来るのは1台なのと一緒です)やったので、打っとっても害はありませんでした。危機一髪ではない。ただ「エラーが勧めてくるから打つ」を癖にしてたら、いつか害があるほうを引きます。原因を掴む前に復旧を打つと、直ったのか、上書きで見えんくなっただけなのかが区別できんのが怖いところで。
直したあと、その判定が生きとるか確かめた

再発防止として、こういう状態を自動で検出する判定を足しました。ここで手を止めたら、たぶん半分しか終わってません。
足した判定を、壊れとった時の状態に当ててみたんです。ちゃんと検出しました。次に、直したあとの状態に当てた。何も出ませんでした。
これをやらんと、何も出ないのが正常やからなのか、判定そのものが動いてへんからなのかを区別できません。異常なしの表示は、判定が仕事しとる証拠にはならんのです。壊れた状態でちゃんと鳴るのを見て、はじめて静かさに意味が出る。
結局、何を変えたか
技術的な話やなくて、自分のほうのルールを1本足しました。
- エラーに理由をつけて納得したら、その理由が当たっとるか1回だけ実物で確かめる(今回で言えば「対象データが無い日」やと思った時点で、対象が本当に無いかを見る)
- それが面倒でやらんのなら、理由をつけずに「未確認」のまま置いとく(納得せんほうがマシ)
- 同じエラーが2日続いたら、理由の当たり外れに関係なく中身を見る
AIに実装を任せる場面が増えてから、この癖はより効くようになりました。自分で書いてへんコードは中身が分からんぶん、出てきたエラーにそれっぽい説明を当てはめる誘惑が強いんですよね。説明が上手いほど、確認から遠ざかる。
で、これはコードの話に限らんと思ってます。送った見積の返事が来んのを「先方も忙しいやろし」で3日流す。応募した案件の音沙汰が無いのを「まだ選考中なんやろ」で1週間置く。どっちも、確かめる手が実はあるのに、納得できる理由のほうが先に出てくるせいで手が止まる形です。僕が4日エラーを流したのと、構造は同じでした。
よくある質問
毎回エラーの中身を見とったら時間が足りません
全部は見んでいいと思います。僕が決めたのは「理由をつけて納得した時だけ確かめる」です。理由が思いつかんかったエラーは、どのみち放置できんので勝手に調べます。危ないのは、納得できてしまうほうです。
通知を増やせば解決しませんか
今回のケースでは効きません。通知はちゃんと4日間届いとりました。届いてへんかったんやなく、届いた上で僕が処理してしまっとった。増やすと逆に慣れて、もっと早く流すようになると思います。
巻き戻すコマンドはもう使わないんですか
使います。便利なので。ただし打つ前に、保存しきってへん変更が無いかを見るようにしました。今回の実害は、コマンドそのものやなく打つ前の確認を飛ばしたことで出とるので。
あわせて読みたい
- Claude Code 使い方入門|副業未経験が最初の1週間でやったこと(プログラミング未経験からツールを作り始めた時の話です)
- Windows自動化で黙って壊れる罠3つ|エラーが出ない(今回と逆で、そもそもエラーが出んまま壊れる型の話です)
- GitHub Actionsのcron遅延|落ちたと決める前に(「遅れとる」のか「落ちた」のかを見分ける話です)