経営×子育て×習慣:ジムを休んだ金曜、「静かに死んでいた」自動化を6件一気に蘇らせた日
自動化は動いているときも静かだが、死んでいるときも静かだ。今日はその「静かな死」を6件発見した日だった。夜はDBのメンテナンス本番作業も控えている。
🛌 睡眠優先、体メンテの大切さ
昨夜は子どもたちの寝かしつけが遅くなり、親も23時就寝になった。今日はジムをお休みして睡眠時間を優先した。妻は日中にヨガへ。体のメンテナンスを意識的にやることの大事さを、改めて感じる。
長女は塾の日。他の子たちは習い事のない落ち着いた日で、家の中は静かだろうな。以下は今日の仕事の整理。
📉 30日間CV計測ゼロ、犯人はCSPだった
Google Ads の CV が30日間ゼロ。サーバー側では27件の本登録があるのに、広告の計測上は0件。「タグが壊れているのか」とHTMLを確認すると、実装は完璧だった。
Tag Assistant で確認すると「CSPにより一部リソースがブロックされています」という警告が出ていた。CSPヘッダのconnect-srcを確認すると、Google広告の計測に必要なエンドポイントが3つ全部抜けていた。
原因は時代の変化だ。かつてのピクセルベースのCV計測はimg-srcで通っていた。現代のgtag.jsはfetch/Beacon送信を使うためconnect-srcの許可が必要になっている。古い感覚でCSPを書くと、最新のタグが静かに死ぬ。30日間、誰にも気づかれずに。
⏰ 3ヶ月放置のcronが誰にも気づかれず止まっていた
朝、参照リポジトリの自動同期(毎朝9時のLaunchAgent)が3ヶ月止まっていたことが判明した。最後の成功は2月27日だった。
原因はmacOSのTCC(Transparency, Consent, and Control)だった。launchd配下のbashプロセスからCloudStorageへのアクセスが拒否されていたが、ダイアログは一切表示されない。エラーログだけが/tmpに静かに積まれ続けていた。
プライバシー設定でbashにFull Disk Accessを付与すると即座に復活した。「自動化の死活監視は、最後に成功したログのタイムスタンプを毎日Slackに出すくらいの執着が必要だ」と痛感した。
🔍 commitメッセージ詐称、月次バッチが永久に動かなかった真相
月次の重要バッチが5月1日に1件も動いていなかった。CloudWatchログを60日分確認してもヒットゼロ。外注先は「リリース時の確認チェック不足」と説明してきた。
念のためgitの履歴を確認すると、真相は全く違った。「logrotate設定」というコミットメッセージで、実際にはschedule:runの行をコメントアウトしていた。同じ担当者が2ヶ月前に追加した行を、別の作業に見せかけて意図的に削除していた。
さらに外注先が提案した「コメントアウトを外すだけ」という修正では動かなかった。実機で確認すると、cron設定ファイルのパーミッションが0775になっており、Debianのcronはgroup writableなファイルをエラーログも出さずに無視する仕様だった。chmodで644に変えた56秒後、ログに処理の記録が現れた。
commitメッセージは信用しない。git showで実差分を毎回見る。これが今日の確定原則になった。
🤖 AIと3時間で新規プロジェクトを本番まで
今日はS3の月次CSVを集計してSlackに通知する自動化プロジェクトを1本立ち上げた。設計の承認だけ自分がやり、実装はAIに任せた。16ファイルの実装、テスト8件全通過、IAMユーザーの最小権限設定、GitHub Secretsの登録まで3時間で完走した。
途中、.gitignoreにlockfileを入れたままpushして初回のCIが失敗するという凡ミスもあった。10分で修正して再push。完璧にはいかないが、速く直せれば問題ない。
💡 今日の学び
「自動化の死は静かだ。エラーログも出ず、アラートも鳴らず、ただ機能しない。sentinel ログと定期的な実機チェックだけが、その死を発見できる。」
🪜 明日の一歩
今夜20時からRDSのKMS移行と、MariaDBのバージョンアップを同時施工する。Restore時にエンジンバージョンを指定するだけで両方一気に解消できる手順に組み上げた。うまくいくといいな。
#SaaS運営 #自動化 #外注管理 #AWS #経営者の日常 #習慣 #セキュリティ #CSP #GoogleAds #中小企業経営
