# CI/CD — 変更を自動でテストして届ける

> レベル: 初級 ／ 対象: 大人
> 出典: Kotowary — https://kotowary.com/learn/units/cicd?level=beginner&audience=adult
チームで開発していると、「変更したらテストして、動いたら本番に上げる」という作業が毎日何度も発生します。これを毎回手でやるとミスも待ち時間も増える。そこを自動化するのが **CI/CD** です。

## これは何をする係？

CI/CD は、コードの変更を **自動でテストして届ける** 流れ作業（※1 パイプライン）です。名前は2つの頭文字からできています。

- **CI（継続的インテグレーション）** — 変更のたびに **自動でビルド・テスト** し、壊れをすぐ見つける
- **CD（継続的デリバリー／デプロイ）** — テストを通ったものを **自動で本番へ配る**

工場のベルトコンベアを思い浮かべてください。部品（変更）を載せると、検査（テスト）を通り、合格したものだけが出荷（本番）される——それを人手なしで回すイメージです。

**登場人物メモ**:

- **※1 パイプライン** — 取得→ビルド→テスト→配布と、自動でつながった一連の段取り
- **※2 ビルド** — 書いたコードを、実際に動く形に組み立てる工程

## 仕事の流れ

1. 開発者が[コードの変更](/learn/units/git)を送る（これが引き金）
2. 自動で **ビルド**（※2 動く形に組み立て）される
3. 自動で **テスト** され、壊れていないか検査される
4. 通れば **自動で本番へ配られる**（失敗したら止まって差し戻し）

大事なのは、この一連が **人の操作なしで一気に流れる** こと。だから速く、ミスが減ります。

## 自動化でうれしい理由

- **壊れをすぐ検知** — 変更した直後にテストが走るので、原因がすぐ分かる
- **手作業のミスが減る** — 配る手順を人がやらないので、打ち間違いが起きない
- **待ち時間が消える** — 「担当者が手で上げるのを待つ」がなくなる

小さな変更をこまめに流せるので、**問題が起きても原因が絞りやすい** のも利点です。

## ⚠️ うまくいかないとき

- **テストが甘い** — 検査が薄いと、壊れたまま本番へ通ってしまう
- **テストが遅い** — 検査に時間がかかると、流れ全体が詰まる
- **失敗を無視** — 赤（失敗）を放置すると、自動化の意味が消える
