【深夜2時のデバッグとコーヒーの話】朝になって気づいた「あの一行」
昨夜またやってしまった。深夜2時まで作業して、翌朝スッキリした頭で見たら5分で解決した、あの体験だ。
始まりはいつも「ちょっと確認するだけ」
夜の22時ごろ、個人開発のWordPress自動投稿スクリプトをテストしていた。ちょっとAPIのレスポンスを確認するだけのつもりだった。
response = wp.post("wp/v2/posts", payload)
print(response)
ところが 400 Bad Request が返ってくる。ペイロードは間違っていないはずだ。昨日まで動いていたコードだ。何も変えていないはずなのに。
「ちょっと確認するだけ」が、気づいたら深夜2時になっていた。
泥沼にハマる過程
最初はAPIのエラーレスポンスをちゃんと読んだ。rest_invalid_param というエラーコードで、どのパラメータが悪いのかが書いてある。でも見てもよくわからない。
次にログを追加した。送信前のペイロードをダンプして確認した。問題なく見える。
それならリクエストヘッダーかと思って、Authorizationヘッダーを確認した。正しく設定されている。
ネットワーク系の問題かもと思って、curl で同じリクエストを試した。通った。
「じゃあコードのどこかが悪い」と改めてコードを読み返す。読んでも読んでも問題が見えない。
23時を過ぎた頃から、明らかに思考が鈍くなっていた。コーヒーを飲んだ。深夜のコーヒーは良くないとわかっているけど、もう少しで解決できそうな気がして止められなかった。
深夜のコーヒーは思考を加速させない
深夜2時のコーヒーはただ眠れなくなるだけだ。思考が加速するわけではない。むしろ焦りだけが増して、同じところを何度も確認するループに入っていた。
変えるべきでない部分を変えてみたり、関係ない設定ファイルを開いたり、Stackoverflowで似たような症状を検索して全く関係ない記事を読んだり。
妻がリビングに来て「まだやってるの?明日でいいじゃない」と言った。「もうちょっとで解決できそう」と答えた。根拠はなかった。
翌朝、5分で解決
結局2時半に諦めて寝た。
翌朝、コーヒーを淹れてから何気なくコードを開いた。
問題は一瞬でわかった。
# 昨夜のコード(バグあり)
payload = {
"title": title,
"content": content,
"status": "publish",
"categories": category_id, # ← ここ
}
# 正しいコード
payload = {
"title": title,
"content": content,
"status": "publish",
"categories": [category_id], # ← リストで渡す必要があった
}
categories は整数ではなくリストで渡す必要があった。WordPressのREST APIのドキュメントに書いてあることだ。昨夜も確認したはずなのに、なぜか見えていなかった。
修正して実行した。動いた。かかった時間は3分くらいだった。
学んだこと
深夜のデバッグには明確な「撤退ラインを設ける」べきだと改めて思った。
私が最近決めているルールは「同じ問題を30分で解決できなかったら、翌朝に回す」だ。実際には守れないことも多いけれど、少なくとも意識するようにはなった。
疲れた脳は問題を解決できない。それどころか、あるはずのものが見えなくなる。昨夜も「categories はリストで渡す」という明白な記述を何度か目にしていたはずなのに、脳が処理できていなかった。
深夜のコーヒーは一時的に眠気を紛らわせるだけで、問題解決能力を回復させる効果はない。これは経験則として確かだ。
在宅ワークの甘い罠
オフィスに通っていた頃は「今日はもう帰る時間だ」という外部的な締め切りがあった。在宅ワークはその境界がない。
終わるタイミングを自分で決めなければならない。それが在宅ワークの難しさのひとつだと思う。
昨夜の教訓として、デスクの横に「23時になったら作業を終了する」という付箋を貼った。守れるかどうかはわからないけれど、視界に入れておくだけでも少しは違う気がしている。
次に深夜デバッグをしそうになったら、この記事を読み返すことにしよう。