【エンジニアのズボラ術】GitHub Actionsで「週次の振り返り」を自動化して、自分時間を捻出する
「また来週も同じタスクを整理しなきゃいけないのか……」
日曜日の夜、手帳やタスクリストを眺めて、そう溜息をついたことはありませんか?私自身、現役のWebエンジニアとして日々コードを書きながら、プロジェクト管理や日報、そして自身のスキルアップのための学習管理に追われる毎日でした。
「自動化」はエンジニアの武器ですが、多くの人は「高機能なツール」に頼りすぎ、結局そのツールを管理するために時間を割いてしまいます。真の効率化とは、「自分が何もしなくてもシステムが勝手に回っている状態」を作ることです。
今回は、使い慣れたGitHubのプライベートリポジトリを「自分専用のタスク管理・振り返りハブ」に変え、GitHub Actionsで進捗レポートを自動生成する仕組みを解説します。
なぜ「定例タスク」をシステムに委ねるべきなのか
私たちが仕事で消耗する原因の多くは、「脳のメモリを消費する単純作業」にあります。 例えば、「先週のタスクを振り返り、フォーマットを整えて週報を書く」といったルーチンワークです。これらは重要な作業ではあるものの、データの集計や整形といった「作業」自体は、本来AIやスクリプトがやるべきことです。
かつての私は、毎週30分ほどかけてNotionやExcelへ情報をコピペしていました。年間で換算すると約26時間。まる1日以上を「過去のログを整形するためだけ」に費やしていたのです。
これを自動化したことで、私の週末のルーチンは「生成されたレポートを5分眺めて、翌週の改善案を考えるだけ」に変わりました。
振り返り自動化のシステム構成
今回構築するのは、Gitリポジトリに保存されたマークダウン形式のタスクログを、GitHub Actionsで定期的に集計し、整理されたサマリーを自動生成する仕組みです。
graph TD
A["ユーザー:タスクファイルをpush"] --> B["GitHub Repository"]
B --> C{"GitHub Actions (Cron)"}
C --> D["Python スクリプト:データ抽出・集計"]
D --> E["生成物:weekly_summary.md"]
E --> F["成果物:リポジトリへ自動コミット"]
この構成の最大の強みは、普段の開発環境(Git)から離れる必要がない点です。エディタ(VS Codeなど)でタスクを管理し、Git管理下で履歴が残るため、後から「あの時何をやったか」を検索する際も、grepやIDEの検索機能がそのまま使えます。
【実装】Pythonによる自動集計スクリプト
GitHub Actionsで実行する集計ロジックは、複雑なライブラリを排除し、Python標準ライブラリのみで構成します。メンテナンス性を最優先した設計です。
import os
import datetime
def generate_weekly_report():
# 実行日の日付でレポートを作成
today = datetime.date.today()
report_content = f"# 週次振り返りレポート: {today}\n\n"
# ./tasks ディレクトリ配下のMarkdownファイルを読み込む
task_dir = './tasks'
task_files = [f for f in os.listdir(task_dir) if f.endswith('.md')]
for file in sorted(task_files):
with open(os.path.join(task_dir, file), 'r') as f:
content = f.read()
report_content += f"## {file}\n{content}\n\n---\n\n"
with open('weekly_summary.md', 'w') as f:
f.write(report_content)
if __name__ == "__main__":
generate_weekly_report()
GitHub Actionsによる定期実行設定
このスクリプトを定期実行するためのワークフローファイルを作成します。.github/workflows/summary.yml に以下の通り記述してください。
name: Weekly Report Automation
on:
schedule:
- cron: "0 9 * * 1" # 毎週月曜の9時に実行
workflow_dispatch:
jobs:
generate:
runs-on: ubuntu-latest
permissions:
contents: write # Gitへのpush権限を明示的に付与
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Run Generator
run: python scripts/generate_report.py
- name: Commit and Push
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add weekly_summary.md
# 変更がある場合のみコミット
git diff --quiet && git diff --staged --quiet || (git commit -m "Auto-generate weekly report" && git push)
40代エンジニアの「泥臭い運用」と知見
当初、私は「APIをフル活用して毎日Slackに通知を送る」ような複雑なシステムを組んでいました。しかし、「情報が流れていってしまう」という致命的な欠点に気づきました。
通知を受け取るだけでは、その場では確認しても、数ヶ月後に「あのタスク、いつ解決したっけ?」と検索することができません。GitHubのレポジトリにMarkdownとして蓄積し、リポジトリ自体を「自分の思考のデータベース」にする形に変えてからは、過去の思考プロセスまで含めた振り返りが可能になりました。
また、「頑張りすぎない」ことも重要です。 スクリプトの出力が最初から完璧である必要はありません。まずは「ファイルが自動生成される」という最小単位から始め、徐々に「今週の達成率を算出する」といった機能を追加していくのが、挫折しないコツです。
運用コストを抑えるための3つの鉄則
自動化の維持管理に忙殺されないよう、以下の3点を意識してください。
- ファイル規約をコード化する: ファイル名は
YYYY-MM-DD-task.mdのように命名規則を強制し、プログラムが読み取りやすい状態を維持しましょう。 - 「失敗」を許容する: Actionsが一度止まっても人生に影響はありません。「週に一度、ログを見ればOK」という余裕を持つことが、長続きの秘訣です。
- 完璧主義を捨てる: 全てのタスクを網羅しようとせず、重要なプロジェクトだけを自動集計対象にするなど、小さく始めるのが成功への近道です。
最後に:小さな「自作」が人生の自由を広げる
「GitHubでタスク管理なんて難しそう」と感じるかもしれません。しかし、今回紹介した仕組みは、一度組んでしまえば毎週の作業を自動化できる強力な資産になります。
まずは、自分のリポジトリに tasks/ フォルダを作り、Markdownファイルを1つ投げてみることから始めてみませんか?
この記事が、あなたの貴重な時間を少しでも捻出するきっかけになれば幸いです。あなたの「自動化生活」を、心から応援しています。