2026-04-30·実装·⏱ 約 7 分
GitHub Actions で ML プロジェクトに CI/CD を ─ 30 分入門
テスト ・ Lint ・ モデル学習 ・ 自動デプロイ を GitHub Actions で自動化する手順。Python ML プロジェクトのテンプレートをそのまま流用できる形で。
GitHub Actions は GitHub リポジトリに付属する CI/CD 基盤。`.github/workflows/*.yml` を置くだけで自動実行され、Pull Request チェック ・ 自動デプロイ ・ 定期実行など何でもできます。MLOps の入口として最適。
Hello World ─ Lint と Test
.github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Install
run: pip install -r requirements.txt -r requirements-dev.txt
- name: Lint
run: ruff check .
- name: Type check
run: mypy src
- name: Test
run: pytest -v --cov=srcコミット push → 自動で Lint ・ 型チェック ・ テストが走る。失敗すれば PR がブロックされる。
ML 学習パイプライン
.github/workflows/train.yml
name: Train Model
on:
push:
paths:
- 'data/**'
- 'src/train.py'
jobs:
train:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install
run: pip install -r requirements.txt
- name: Pull data with DVC
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: dvc pull
- name: Train
run: python src/train.py
- name: Evaluate
run: |
python src/evaluate.py --threshold 0.85
- name: Upload model
uses: actions/upload-artifact@v4
with:
name: model
path: model.pklシークレット管理
API キー ・ AWS 認証情報 ・ DB パスワードは GitHub Secrets に保管。`Settings → Secrets and variables → Actions` から登録 → `${{ secrets.NAME }}` で参照。
定期実行(Cron)
毎週月曜の朝にモデル再学習
on:
schedule:
- cron: '0 9 * * 1' # UTC 9:00 月曜 = 日本 18:00 月曜自動デプロイ ─ Vercel と連携
Vercel デプロイ
name: Deploy to Vercel
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.ORG_ID }}
vercel-project-id: ${{ secrets.PROJECT_ID }}
vercel-args: '--prod'Vercel の方が先に GitHub と連携している場合は、push だけで自動デプロイされるので Action は不要です。詳しくは [Vercel デプロイ](/blog/vercel-deployment-for-ai)。
PR にモデル評価結果をコメント
コメント付き PR
- name: Comment metrics
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const metrics = JSON.parse(fs.readFileSync('metrics.json'));
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `## 📊 評価結果\n\n- Accuracy: ${metrics.accuracy}\n- F1: ${metrics.f1}`,
});Tips
- キャッシュ活用: pip ・ npm ・ DVC のキャッシュで高速化
- Matrix ビルド: Python 3.10/3.11/3.12 の並列テスト
- Self-hosted runner: 大規模学習は GPU マシンを自社運用
- Concurrency 制御: 同じブランチの古い実行をキャンセル
- 通知: Slack ・ Discord 連携で失敗時にアラート
学習リソース
- [MLOps 基礎](/blog/mlops-basics)
- [Vercel デプロイ](/blog/vercel-deployment-for-ai)
- [scikit-learn 入門](/blog/sklearn-introduction)
- [Python 環境構築](/blog/python-setup-for-stats)
まとめ
GitHub Actions は Push したら自動で全部やる を最小コストで実現する魔法。CI/CD の習得は ML エンジニアの基礎体力です。
Related Articles
関連記事
- 2026-04-30実装OpenAI API 実装入門 ─ Chat / Embeddings / Function CallingOpenAI API を使ったプロダクション開発の基礎。Chat Completion・Embedding・Function Calling・ストリーミング・コスト管理まで実装パターンを網羅。
- 2026-04-30実装Vercel で AI アプリをデプロイする ─ Next.js + AI SDK 入門Vercel にデプロイする最短ルート。Next.js の AI SDK + AI Gateway で OpenAI/Claude を統合し、ストリーミングチャット UI を 1 時間で公開する手順。
- 2026-04-30実装Streamlit で 1 時間で ML デモアプリ ─ 転職に効くポートフォリオPython だけで動くインタラクティブな ML デモを Streamlit で作る方法。データ可視化・ファイルアップロード・モデル予測 UI までの最小実装。