『黄色い顔(シャーロック・ホームズの思い出)』の象徴的な言葉。
「ワトソン」ホームズは言った。「もし僕がちょっと自分の能力に自信過剰になっていると気付いたり、事件に対して必要なだけの努力をしていないようだったら、僕の耳元で『ノーベリ』とささやいてもらえないだろうか。そうすれば僕は大いに君に感謝するだろう」
これ、
- 探偵とは言え失敗する
- キャラクター造形の中でのウィークポイントを晒すことで更なる魅力を生む(ギャップ萌え)
だと思っていましたが:まさに、これと同じような状況が起きたので自戒3割、言い訳7割でこのテキストを残します。
起きたこと
私が過去に初期設定を案内してアカウントまで譲渡したWordpressサイトに話は遡ります。
そのサイトの持ち主から「急にWebサイトに繋がらなくなった」というヘルプ要請。「アプリには入れるが更新はできない」ということ。
取り急ぎ「情報を集めるだけ集めて伺う」と返して状況確認です。
初動
- Webブラウザでの挙動
そのサイトのURLを入力。403エラーが出ます。
- curlでの挙動
curl -I https://hoge.example.com
HTTP/2 403
server: nginx
date: Fri, 19 Jun 2026 05:28:52 GMT
間違いなく403エラーです。
更に
- index.php
- /wp-login.php
- /wp-admin
も同様に403エラーになりました。
考えられる可能性と却下していった理由
料金未払い
これはないと考えていました。なぜなら、クレジットカードの自動更新です。洗い替えなどもあるだろうと真っ先に却下。
それ以上に、そのドメインでWHOIS検索したところ2027年まで有効。しかも、そのネームサーバは仮想サーバを向いています。
ドキュメントルートが読めない。
- ディレクトリのパーミッション
- 所有者
- ドキュメントルートの設定
例えばpublic_htmlが何らかの操作で700になってしまうと、nginxが403を返します。
WAF偽陽性による.htaccessの書き換え。
「アプリを起動したら更新ができなくなった」から来る推察。
であれば、WAFによってアクセスが遮断された。偽陽性です。(筆者も散々経験がありますが)
WAFが下手に.htaccessを書き換えることでアクセス制限を喰らった
つまり、更新の時に何かしらの操作ミスがあって一斉に403を返したのではないか。
だとすれば
- 仮想サーバの管理画面に入る
- 下手をすればサイトの再構築
あたりも考慮に入れて、その持ち主のところを訪れます。
原因と復旧
訪れるやいなや、
「料金督促メール来てました!」
という連絡。つまり、「私が最初に斬って捨てた」原因だったのです。
この落とし穴は、ドメインとサーバーの契約期間が異なっていたことでした。
- ドメイン:
- 数年単位で契約済み
- サーバー:
- 単年契約で更新漏れ
その結果、
- WHOISは正常
- DNSも正常
- ドメインも生きている
- しかしWebサーバーは契約停止状態のため403を返す
という、一見するとWordPress障害にも見える状況が出来上がっていた次第。そして、決済を確認後、
curl hoge.example.com
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://hoge.example.com/">here</a>.</p>
</body></html>
が返ってきましたし、サイトも完全復旧です。
真っ先に外した「なぜ支払いが行われなかったか」
これも実に単純でした。
「クレジットカードを紛失して再発行した」
という、極めて人間らしいミスでした。この督促メールも
「大量のメールに紛れて見落としていた」
種が分かってしまえば実に単純。これを忘れて
- htaccess
- WAF
などを疑ったのが私の技術バイアスであり真の問題は
「サーバー契約は本当に有効か?」
というチェックが抜けていたことでした。そして、その契約切れと自動更新がオフになって苛理由は
クレジットカード再発行
だったという物理的な問題に抜けていました。
- 「自動更新の設定」
- 「決済手段が現在も有効か」
は別問題です。ところが、人間は
自動更新 = 更新される
と無意識に補完してしまいます。
実際には、自動更新は「決済に成功すれば更新される」であって、
- カード期限切れ
- カード再発行
- 利用停止
- 限度額超過
などで、静かに失敗することがあります。
技術スタックの落とし穴
利用者
↓
WordPress
↓
PHP
↓
Apache/nginx
↓
サーバー契約
↓
DNS
↓
ドメイン契約
という技術的な例で解釈をしていましたが、実際の原因は「サーバー契約」というアプリケーションより一段下の状況だったのです。
デブリーフィングという名の言い訳。
今回の一件で唯一良かったと思ったところは、
この事態を重く受け止め、どういう結果でもいの一番に駆けつけるという「速度は誠意」を見せられたこと。
しかし、問題はそれ以前にあります。
バイアス1:技術バイアス
ここのところ私は
- Webサーバ周りのチューニング
- AIクローラーとの戦い
- セキュリティ
といった技術バイアスに溺れていました。ですから、この問題も同じに違いないという利用可能性ヒューリスティック(Availability Heuristic)に捕らわれていたこと。
これが第一の問題。
バイアス2:心理的バイアス
実写版『カイジ 人生逆転ゲーム』での好きな言葉があります。
「利根川‥‥
俺がヘビに見えたか‥‥‥?」
「ああ‥‥‥
ヘビだろうが‥‥‥‥!」
「そうか‥‥‥
なら お前こそヘビなんだ‥‥‥‥
こんなふうな物言わぬ心理戦は
鏡を見るようなもの‥‥‥
相手の心を読もうと‥‥
必死に考えるつもりが‥‥‥
気がつけば自分だったらどうするかと考えている‥‥‥
つまり俺がヘビに見えたなら‥‥‥
お前こそヘビなんだ‥‥‥」
つまり、相手の初歩的な設定漏れや状況の変更という前提を忘れ、技術に溺れていました。これが深刻です。
上記でも述べたように、私は「請求忘れ」という一度は正解に導いていたのに「自動更新設定はしているはず」として、真っ先に切り捨てたこと。しかし、よくよく考えれば
- カードの有効期限切れ(洗い替えをしていなければ)
- 今回のカードの再発行
- 残高不足(支払い能力)
というのは容易に起こりえます。こういう人間的な問題を「そんなことはまずないだろう」とした心理的なバイアス。このカイジの言葉で言うのなら「このサーバで何をしたのか」と鏡を見るように考え込み、自分が起こしがちなミス=相手のミスと考えていたこと。
バイアス3:生存バイアス。
最後に、「今までも解決してきた。だからこれもすぐに解決できる」という生存バイアスです。それこそ、私がメモとして利用しているGrowiのトップページの
Those who survive a long time on the battlefield start to think they are invincible.
I bet you do too, buddy."不死身のエースってのは戦場に長く居たものの過信だ"
"お前のことだよ相棒"
という、『ACE COMBAT ZERO』の言葉を真に噛みしめた、が今日の結論ですね。
ビタースイートな結末
と、上記、最初に述べたような言い訳の方が多い失敗談となりましたが、
成功体験が積み重なると、人は「今回もきっと高度な技術的原因だ」という思考になりやすいです。そして、そこが一番の慢心の結果です。
そして今回の真相はカード再発行で自動更新が止まっていた。あまりにも「人間的」でした。
余談、と言うか警句
この出来事が起きた日、夢枕に亡父が立ったのです。生前、父は
いかなる敵にも敬意を払え。その上で全力で叩き潰せ
とよく言っていて、没後10年目に夢枕に立ち
この言葉の真意は、「敬意を払わないとどこかに油断・慢心が生まれる。それが敗因に繋がる」という意味だからな
と但し書きをしました。なので、今回の物言わぬ夢枕は
この言葉を理解しているのか?
を問うものだったかと思います。即ち、この、技術的に物事を解決したため、その本質を見失っているぞという警告の予言めいた出来事だったのかな、と改めて思いました。
コメントを残す