- リポジトリイベント(PR/Push等)でワークフロー実行
- MarketplaceでActionが豊富
- セルフホストRunnerも可能
CI/CD
継続的インテグレーション/継続的デリバリー(デプロイ)。ビジネスとITをつなぐ“安全に速く出す”仕組み。
CI/CDとは
CI/CD は、コード変更を継続的に統合(CI)し、いつでも出せる状態(CD)を保つための 開発プロセス(+自動化の仕組み)です。一般に CI/CD はソフトウェア開発ライフサイクルを速く・安全にする目的で使われます。
- CI:ビルドとテスト(+静的解析など)を自動で回し、統合を壊さない
- CD(Delivery):本番リリース“可能”な状態まで自動で整える(最後の承認は人が押すことが多い)
- CD(Deployment):テストに通ったら自動で本番へ反映まで行う
Continuous Delivery / Deployment の説明は、AWS の定義でも整理されます。
ビジネス上の価値
なぜ“ITの話”が“ビジネスの話”になる?
リリースが遅いと、機会損失(売上・顧客満足)に直結します。 一方、速さだけ追うと障害・品質問題で信用を落とします。 CI/CD は、この速さと安全のトレードオフを、仕組みで崩す発想です。
- 手順が自動化され、人の“うっかり”が減る
- 変更が小さくなり、レビューと検証が楽になる
- 問題が早期に見つかり、修正コストが下がる
CI(継続的インテグレーション)
CI は「コミットしたら自動でテストが回る」だけでなく、 “統合しても壊れない状態”を保ち続けるための習慣です。
# 例:CIの典型チェック
- 依存関係インストール(npm/pip/bundle 等)
- ビルド(コンパイル/バンドル)
- Lint(ESLint/ruff 等)
- 型チェック(TypeScript/mypy 等)
- 単体テスト(Jest/pytest 等)
- カバレッジ計測
- セキュリティスキャン(依存関係/コンテナ)
- テストが遅すぎる → 開発が待たされる
- 落ちる理由が曖昧 → “直し方がわからない”
- 一部の人だけ直す → “CI番長”が誕生
対策:テストの層分け(速いテストを先に)+ログ整備+所有権ルール。
CD(Delivery / Deployment)
CD は「出すところまでの自動化」です。 特に、Delivery(いつでも出せる)とDeployment(自動で出る)が混ざりやすいので、運用方針で決めます。 :contentReference[oaicite:1]{index=1}
Continuous Delivery
- 本番反映は“人の承認ボタン”
- 監査・コンプラ・慎重な業務に合う
- 「いつでも出せる」を守る
Continuous Deployment
- テスト合格で本番へ自動反映
- スピード勝負のプロダクトに合う
- ロールバック設計が必須
DevOpsとCI/CDの違い・関係
DevOps は「開発と運用が協力して、継続的に価値提供する文化・体制」寄りの概念で、 CI/CD はそれを実現するための具体的な仕組み(自動化パイプライン)として語られることが多いです。 :contentReference[oaicite:2]{index=2}
DevOps = “どう働くか” / CI/CD = “どう回すか”
パイプライン構成例
“最低限の型”はこの順番です(プロダクトにより増減)。
stages:
- validate
- test
- build
- deploy_stg
- deploy_prod
validate: lint / typecheck
test: unit + integration
build: container build + scan
deploy_stg: auto deploy + smoke test
deploy_prod: manual approve then deploy + canary
代表的ツール
“ツール名を覚える”より、自分のチームがどこまで自動化したいかで選ぶのが勝ちです。 例として、GitHub Actions / GitLab CI/CD / Jenkins を挙げます。 :contentReference[oaicite:3]{index=3}
- パイプライン中心、YAMLで定義
- Runnerでジョブを実行
- MR連携や環境管理が強い
- プラグインが膨大で自由度高い
- オンプレ/自前運用の定番
- JenkinsfileでPipeline定義
| 観点 | GitHub Actions | GitLab CI/CD | Jenkins |
|---|---|---|---|
| 導入 | GitHubなら即 | GitLabなら即 | サーバ構築が必要 |
| 運用コスト | 低〜中 | 低〜中 | 中〜高 |
| 自由度 | 中 | 中 | 高 |
| 向く場面 | GitHub中心の開発 | GitLab中心の開発 | 複雑要件/社内基盤 |
導入の進め方(現場)
-
まずCIだけ
最初から“本番自動デプロイ”を狙うと壊れやすい。まずは build + test を固める。 -
速いテストを優先
Lint/Unit を先に通す。遅いE2Eは後ろへ。失敗理由はログで即わかるように。 -
CDは「ステージング → 本番」
ステージング自動、プロダクションは手動承認(Delivery)から入るのが安全。 -
ロールバック設計
Blue/Green、Canary、Feature Flag。戻せない自動化は事故る。
①テストが速い → ②落ちた理由が一瞬でわかる → ③直す担当が決まってる これが揃うとCI/CDは“快適装置”になります。