cat posts/gcp-%e3%81%a7%e9%9a%9c%e5%ae%b3%e5%af%be%e7%ad%96-dr-%e7%92%b0%e5%a2%83%e3%82%92%e8%a8%ad%e8%a8%88%e3%81%99%e3%82%8b-cloud-dns-%e3%83%95%e3%82%a7%e3%82%a4%e3%83%ab%e3%82%aa%e3%83%bc%e3%83%90.md

半年後の自分のために書いているコード

半年後の自分は、今書いたコードの背景を一切覚えていません。それを前提に設計しています。

環境をコードで管理する

Docker Compose で開発・本番を同一構成にしています。サーバーが壊れても git clone して docker compose up -d で戻せます。それだけで精神的にかなり楽になりました。

ログを構造化する

// 以前
console.error("Something went wrong")

// 今
logger.error({ endpoint: req.path, userId: req.user?.id, message: err.message })

障害が起きたとき、前者は何もわかりませんでした。

テストは「壊れたら困る場所」だけ

カバレッジ 100% より、一度バグった箇所とビジネスロジックの核心部分をカバーする方が実用的でした。全部に書こうとすると挫折します。

コメントは「なぜ」だけ

「何をしているか」は変数名・関数名で伝わります。本当に非自明な判断だけ、一行コメントを残します。それで十分でした。