CI/CDとは
CI/CD(Continuous Integration/コンティニュアス・インテグレーション、Continuous DeliveryまたはContinuous Deployment/コンティニュアス・デリバリー/コンティニュアス・デプロイメント)は、コード変更時のテスト、ビルド、配備などを継続的に自動化する開発運用手法です。
CIは小さな変更を共有リポジトリへ頻繁に統合し、自動ビルドと試験で問題を早く見つけます。CDは合格した変更を公開可能な状態へ保つ配信、または本番まで自動反映する配備を指し、組織により意味を明示する必要があります。
処理経路を一度通すことが目的ではありません。同じソースと同じ手順から検証済み成果物を作り、変更を小さく保ち、安全に本番へ届け、結果をすぐ開発者へ戻す循環です。

処理経路の主要段階
短い分岐または主ブランチへ変更を送り、レビューと統合競合を小さくします。
依存先を固定し、ソースからパッケージ・画像・静的ファイルを生成します。
静的検査、単位、統合、セキュリティ、契約、性能等をリスクに合わせます。
チェックサム・来歴を持つ変更不可成果物を後続環境へ同じまま渡します。
設定と秘密情報を環境側から与え、正常性を確認しながらトラフィックへ加えます。
試験失敗、配備、監視、インシデントの結果を変更者へ結び付けます。
Continuous Integration
開発者は変更を長期間孤立させず、共有行へ頻繁に統合します。プッシュやプル要求を起動条件に、クリーン環境でビルドと試験を実行します。
CIサーバーが緑でも品質が自動的に保証されるわけではありません。試験対象、検証条件、対象範囲、テスト用データ、本番環境との差が妥当である必要があります。
Continuous DeliveryとContinuous Deployment
Continuous Deliveryは、合格した変更をいつでも本番配備できる状態へ保ち、本番環境検査点に人の業務判断・承認を残す形です。
Continuous Deploymentは、すべての自動化された検査点を通った変更を人の個別操作なしに本番へ配備します。どちらも手動作業を減らしますが、本番反映の最終判断が異なります。
同じ成果物を昇格させる
検証環境で試験したソースから、本番で別ビルドを作り直すと依存先やツールバージョンが変わる可能性があります。一度作った変更不可成果物を保存し、同じダイジェストの物を環境間で昇格します。
環境差は設定、秘密情報、エンドポイント、容量として外から与えます。成果物へ本番環境パスワードを埋め込みません。
品質検査点
検査点は試験合格、レビュー、脆弱性基準、ライセンス、成果物署名、変更承認、メンテナンス時間窓、SLO等を判断します。単なる待ち時間ではなく、誰が何を根拠に通すかを記録します。
長すぎる処理経路はフィードバックを遅らせます。速い試験を先に、重いエンドツーエンドや性能試験を後ろに並べ、並列化とキャッシュを安全に使います。
不安定な試験を放置しない
同じ変更で成功・失敗が揺れる不安定な試験が増えると、再実行が習慣化し本当の障害を無視します。時刻、ネットワーク、共有状態、試験順、競合を特定して修正します。
一時隔離する場合も所有者と期限を持たせ、品質検査点を永久に弱めません。
秘密情報と処理経路権限
処理経路はソース、成果物レジストリ、クラウド、本番環境へ強い権限を持ちます。ジョブごとに短期認証情報を発行し、環境検査点通過前は本番環境秘密情報を渡しません。
外部プル要求、第三者操作、ビルドスクリプトを信頼できないコードとして扱います。トークン権限を絞り、依存先・実行環境画像・操作バージョンを固定し、成果物来歴と署名を検証します。
環境と並行実行
開発、試験、検証環境、本番環境は目的とデータ機密性が違います。本番に近い構成で検証しつつ、本番環境データを無断複製しません。
同じ環境への配備が重ならないよう並行実行制御を置きます。古い処理経路が後から完了して新バージョンを上書きしないよう、コミット・成果物・配備IDを照合します。
データベース変更
アプリケーション切り戻しだけではデータベーススキーマを戻せません。旧・新両バージョンと互換なスキーマを先に加え、データ移行後に古い列を後日削除する拡張してから縮小する等を使います。
移行のロック時間、バックアップ、再実行、途中失敗、大容量表への負荷を事前に試験します。
切り戻しと段階更新転送
前成果物へ戻せるよう、配備履歴、設定、データベース互換性を保持します。ただしデータ破損やセキュリティ脆弱性では単純切り戻しが危険な場合があり、修正版を前へ進める段階更新転送を選びます。
監視でエラー・遅延・業務指標を確認し、自動停止・切り戻しの条件と、人が上位担当へ連絡する基準を決めます。
CI/CDは変更を小さく統合し、自動検証した同一成果物を安全な検査点で環境へ進め、結果を素早く戻す仕組みです。CDが配信か配備かを明示します。
CIの頻繁なcommit・自動build・test:GitHub Docs「Continuous integration」、environment gate・approval・secret境界の実装例:GitHub Actions deployment environments