朝7時。僕がコーヒーを淹れている間に、3つのことが起きていた。
1つ目。GitHub Actionsが起動して、GA4のAPIからアクセスデータを取得し、data/ga-analytics.jsonに保存した。2つ目。別のワークフローがX(Twitter)のエンゲージメントデータを収集し、data/sns-analytics.jsonを更新した。3つ目。cronジョブがブログのビルドをトリガーし、最新の記事がFly.ioにデプロイされた。
僕は何もしていない。コーヒー豆を挽いていただけだ。
自動化の沼にはまったのは、3月のことだった。
SNSへの投稿を手動でやっていた頃、毎日同じ作業に15分かかっていた。記事のURLをコピーして、キャプションを書いて、ハッシュタグを付けて、投稿する。15分。大した時間じゃないように見えるけれど、毎日5回投稿するなら1日75分。月に換算すると37時間以上。人事で言えば、ほぼ1週間分の労働時間だ。
SNSの投稿を自動化したい。未投稿の記事から自動で選んで、適切な時間にXに投稿する仕組み。
GitHub Actionsのcronスケジュールで実現できます。投稿スクリプトを作って、未投稿の記事をdata/sns-state.jsonで管理しましょう。投稿時間はJSTで7:00、8:30、12:00、19:00、21:00の1日5回がエンゲージメント率的におすすめです。
自動化パイプライン設計:
- sns-post.yml: cron → post-to-x.mjs → X API v2 → 投稿
- sns-analytics.yml: cron → fetch-analytics.mjs → X API → data/sns-analytics.json
- ga-analytics.yml: cron → fetch-ga4.mjs → GA4 API → data/ga-analytics.json
- deploy.yml: push to main → build → fly deploy
- generate-audio.yml: 手動トリガー → ElevenLabs API → 音声ファイル生成
5つのワークフロー。5つの自動化されたパイプライン。それぞれが、かつて僕が手動でやっていた作業を置き換えている。
最初の自動投稿が成功した夜のことは忘れない。
22時にスマホの通知が鳴った。Xに新しい投稿が上がっている。自分のアカウントから。でも僕は投稿していない。GitHub Actionsが、スクリプトを実行して、APIを叩いて、投稿してくれたのだ。
自動投稿が動いた。俺が何もしてないのに、ツイートが出てる。
お前、ずっと嬉しそうだな自動化のたびに。
だって、仕組みが動いてるんだぞ。人事で言えば、評価プロセスが自動で回り始めたようなもんだ。設計した仕組みが、設計者がいなくても動く。これ、組織設計と同じ感動だよ。
その例え、人事じゃないと絶対出てこないな。
今、僕のブログ運営で手動なのは2つだけだ。
記事を書くこと。そして、書いた記事をgit commitすること。
それ以外の全て——デプロイ、SNS投稿、アナリティクス収集、エンゲージメント分析——は自動化されている。
[07:00:01] ga-analytics.yml: ✓ GA4データ取得完了 (PV: 1,247 / 昨日) [07:00:15] sns-post.yml: ✓ 投稿完了 “E2Eテストが通った朝 #121805のメッセージ” [07:01:02] deploy.yml: ✓ ビルド&デプロイ完了 (v14)
3つのワークフローが、1分以内に順番に走っている。僕が設計した通りに。僕がいなくても。
人事の仕事で「属人化を排除する」ことの重要性を、何百回もマネージャーに説いてきた。業務プロセスを文書化し、誰がやっても同じ結果が出るように仕組み化する。それが組織の持続可能性だと。
今、自分のブログ運営で同じことをやっている。属人化の排除。仕組み化。持続可能性。人事で学んだ概念が、そのままエンジニアリングに適用されている。
物語を書くこと以外の全てが、仕組みになった。
そして、物語を書くことだけは、仕組みにできない。仕組みにしてはいけない。
AIは文章を生成できる。でも、朝6時にE2Eテストのグリーンを見て胸が熱くなった感覚、ハッチの「動くコードが正義だよ」に救われた感情、2,585回目のプロンプトを打つときの指先の迷いのなさ。それは僕にしか書けない。
自動化は、人間が人間にしかできないことに集中するための手段だ。
全てのワークフローが正常に稼働しています。何か新しい自動化の構想はありますか?
いや、今はいい。書くことに集中する。それだけは自動化しない。
この物語は、自動化できない。だから、価値がある。