最終更新:

CI/CDとは?CIとCDの違い・パイプラインの流れを図解


変更から本番反映までの一例 1 CI:変更を検証 取得・依存準備・検査・テスト ビルドした成果物を識別 失敗した工程を記録 2 リリースできる状態へ 検証環境で動作確認 本番承認の要否を決める 同じ成果物を追跡する 3 本番反映と確認 承認後、または自動で反映 ヘルスチェック・監視 DBを含む復旧方法を用意 デリバリーと自動デプロイを区別 変更から本番反映までの一例 1 CI:変更を検証 取得・依存準備・検査・テスト ビルドした成果物を識別 失敗した工程を記録 2 リリースできる状態へ 検証環境で動作確認 本番承認の要否を決める 同じ成果物を追跡する 3 本番反映と確認 承認後、または自動で反映 ヘルスチェック・監視 DBを含む復旧方法を用意 デリバリーと自動デプロイを区別
デリバリーと自動デプロイを区別
ひよこ ひよこ
pushすると必ず本番へ公開されるの?
ペンギン先生 ペンギン先生
設定次第だよ。CI/CDは変更の検証や配布を繰り返せるようにする取り組みで、pushだけが起動方法ではない。PR、スケジュール、手動なども使えるし、本番反映の前に人の承認を置くこともできるんだ。
ひよこ ひよこ
CIは何をするの?
ペンギン先生 ペンギン先生
継続的インテグレーションだね。小さな変更を頻繁に統合して、ビルドやテストで問題を早く見つける。CIサービスを置くだけでなく、失敗を放置せず修正する運用も大事だよ。
ひよこ ひよこ
CDには2つ意味があるの?
ペンギン先生 ペンギン先生
継続的デリバリーは、いつでも本番へリリースできる状態を保つこと。出すかどうかは選べる。一方、継続的デプロイは、パイプラインを通過した変更を自動で本番へ反映する方式だよ。自動化が多いほうが必ずよい、という順位ではないんだ。
ひよこ ひよこ
パイプラインの中身は?
ペンギン先生 ペンギン先生
一例は、変更を取得し、依存関係を準備して、検査・テスト・ビルドを実施し、成果物を保存して検証環境へ配る流れだね。本番の承認や反映、反映後の確認を続ける。順序や並列化はアプリとツールに合わせて設計するよ。
ひよこ ひよこ
ビルドに通れば品質も保証される?
ペンギン先生 ペンギン先生
ビルドは一つの確認だよ。型検査、単体テスト、連携テスト、画面操作など、見つけたい問題に応じて検証を組み合わせる。実行していない検証や不安定なテストを、成功と同じ扱いにしないことが大切だね。
ひよこ ひよこ
同じコードを本番でもビルドし直す?
ペンギン先生 ペンギン先生
検証した成果物を本番へ昇格させると、どの内容を配ったか追いやすいね。再ビルドする設計なら、依存関係や環境の差で別の内容にならないかを確認する。コミットID、成果物の識別子、実行結果をひも付けて残すと調査に役立つよ。
ひよこ ひよこ
デプロイで失敗したら?
ペンギン先生 ペンギン先生
まず本番に反映済みか、途中か、未反映かを確認する。切り戻しや段階配信は役立つけれど、DBの変更まで自動で元に戻るわけではない。旧アプリとの互換性やデータ復旧を含めて手順を用意しておこう。
ひよこ ひよこ
自動化で注意する権限は?
ペンギン先生 ペンギン先生
テスト実行用と本番反映用の権限を分け、外部から来た変更へ秘密情報を不用意に渡さないこと。GitHub Actionsなら最小限の権限、依存アクションの確認、本番環境の保護などを使える。利用できる機能はプランやリポジトリ条件も確認してね。

CIと2種類のCD

用語達成したい状態本番への反映
CI小さな変更を統合し、問題を早く検出必須ではない
継続的デリバリーリリースできる状態を維持実施の判断を選べる
継続的デプロイ合格した変更を自動で反映自動化する

失敗したときに見る4つの場所

  1. 起動条件:ブランチやパスの条件に合うか。実行自体が作られているか。
  2. 実行環境:ランナー、依存関係、権限、秘密情報が利用可能か。
  3. 検証と成果物:どのテストが失敗したか。配布対象はどのコミットのものか。
  4. 本番反映:承認待ちか、反映済みか。反映後のヘルスチェックが通るか。

失敗時の通知や後片付けを行うジョブは、失敗後にも実行する設定が必要な場合があります。「一箇所が失敗したらすべて停止」と一律には限りません。

ブルーグリーンやカナリアを使う場合も、アプリの切り戻しとDBの互換性は別に設計します。最初はCIを安定させ、検証環境、本番反映の順に必要な範囲を自動化すると、どこで問題が起きたか追いやすくなります。

参考資料

確認日:2026年9月27日。製品の仕様・料金・対応環境は導入時にも確認してください。