GitHub Actionsで業務スクリプトを安全に無人運用する方法|二重実行・秘密漏えい・誤配信を防ぐ実践設計
「毎朝CSVを集計している」「定期的に記事を公開している」「ポイントや売上データを手作業で確認している」。こうした業務をPythonなどで自動化しても、自分のパソコン上でしか動かなければ、電源停止や環境差によって簡単に止まります。 そこで役立つのがGitHub Actionsです。決められた時刻やコード更新をきっかけに、業務スクリプトをGitHub側の実行環境で動かせます。たとえば、毎朝9時に売上データを取得し、集計結果を保存して、異常があれば通知する処理を、人間がパソコンを開かずに実行できます。 ただし、スクリプトを定期実行できる状態と、安全に無人運用できる状態は同じではありません。 二重実行により同じ顧客へメールを2回送る APIキーがログへ出力される 空の記事や壊れたCSVが公開される タイムアウト後の再実行で売上を重複計上する 自動化の利用料が成果額を上回る こうした事故は、収益につながる自動化資産を一度で壊します。 この記事では、GitHub Actionsを使った業務自動化を、次の状態へ近づける方法を解説します。 失敗しても既存データを壊さない 同じ処理が重複して実行されない 秘密情報をコードやログに残さない テストに合格した成果物だけを公開する 人間が常時監視しなくても異常を発見できる 自動生成した記事や集計結果を収益導線へ継続的につなげる 目指すのは「一度も壊れない魔法の自動化」ではありません。壊れても影響を限定し、自動停止し、原因を追跡して安全に再開できる仕組みです。 GitHub ActionsとCIの全体像 GitHub Actionsは、リポジトリ内のYAMLファイルに実行条件と処理内容を書き、GitHub側の実行環境でワークフローを動かす機能です。 **CI(継続的インテグレーション)**とは、コードを変更するたびにテストやビルドを自動実行し、不具合を早い段階で発見する仕組みです。PythonスクリプトをGitHubへpushした直後に、構文チェック、単体テスト、サイト生成まで確認する流れがCIに当たります。 GitHub Actionsの構造は、次の4階層で考えると理解しやすくなります。 Event:実行のきっかけ 例:mainブランチへのpush、定期実行、管理画面からの手動実行 Workflow:一連の自動処理 例:データ取得から集計、検証、公開までの全工程 Job:役割ごとに分けた処理単位 例:テスト用ジョブと本番反映用ジョブ Step:ジョブ内の個別作業 例:Pythonの準備、依存関係のインストール、スクリプト実行 収益につながる業務自動化では、処理を次のように分けます。 入力取得 ↓ 入力検証 ↓ 業務スクリプト実行 ↓ 出力検証 ↓ 成果物を一時保存 ↓ 公開・配信・集計先へ反映 ↓ ログとKPIを記録 途中の検証に失敗した場合は、公開や配信へ進ませません。売上レポートの作成に失敗したのに「完了」と記録したり、内容が空の記事を公開したりする事故を防ぐためです。 実際の運用ログから分かる「無人化の現実」 私が運用しているこのauto-ai-blogでは、記事生成、品質確認、Markdown保存、Notion保存、GitHubへのpushを自動化しています。 2026年7月21日に、次のPowerShellコマンドでリポジトリ内のMarkdownファイル数を確認しました。 $paths = @( "sites/ai-tech/content/posts", "sites/business/content/posts", "sites/real-estate/content/posts" ) foreach ($path in $paths) { $count = (Get-ChildItem -LiteralPath $path -File -Filter "*.md").Count "{0}: {1}" -f $path, $count } 結果は次のとおりです。 ...