🚀 CI/CDとは?
📖 定義
CI/CDはContinuous Integration(継続的インテグレーション)とContinuous Deployment(継続的デプロイ)の略で、コードの変更を自動的にテストしてデプロイする開発方法論です。CIはコードをマージするたびに自動的にビルドしてテストし、CDはテストに合格したコードを自動的にプロダクション環境にデプロイします。これにより、バグを素早く発見し、デプロイサイクルを短縮できます。
🎯 比喩で理解する
工場自動化ライン
従来の開発 (手動)
開発者1 → コード作成
開発者2 → コード作成
開発者3 → コード作成
↓
1週間後
↓
リーダーが手動でマージ
↓
コンフリクト発生! 😱
↓
手動でテスト
↓
バグ発見! 😱
↓
手動でデプロイ
↓
デプロイ失敗! 😱
CI/CD (自動化)
開発者1 → コードプッシュ → 自動テスト ✅ → 自動デプロイ 🚀
開発者2 → コードプッシュ → 自動テスト ✅ → 自動デプロイ 🚀
開発者3 → コードプッシュ → 自動テスト ❌ → 即座に通知!
(問題をすぐに発見して修正)
食品配達
手動デプロイ = 直接配達
1. 食品作り (開発)
2. 梱包確認 (テスト)
3. 住所確認 (設定)
4. 直接運転して配達 (デプロイ)
5. 顧客確認 (検証)
→ 時間がかかり、ミスが起こりやすい
CI/CD = 自動配達システム
1. 食品作り (開発)
2. 自動梱包 (自動ビルド)
3. 自動品質検査 (自動テスト)
4. ロボットが自動配達 (自動デプロイ)
5. リアルタイム追跡 (モニタリング)
→ 速く正確
⚙️ 動作原理
1. CI/CDパイプライン
コードプッシュ (Push)
↓
┌─────────────────────────────┐
│ CI: 継続的インテグレーション │
│ │
│ 1. コードチェックアウト │
│ 2. 依存関係のインストール │
│ 3. リント検査 │
│ 4. ビルド │
│ 5. ユニットテスト │
│ 6. 統合テスト │
│ │
│ ✅ すべて成功 │
│ ❌ 1つでも失敗 → 中断 │
└─────────────────────────────┘
↓
┌─────────────────────────────┐
│ CD: 継続的デプロイ │
│ │
│ 1. ステージング環境デプロイ │
│ 2. E2Eテスト │
│ 3. プロダクションデプロイ │
│ 4. ヘルスチェック │
│ 5. 通知送信 │
└─────────────────────────────┘
↓
🎉 デプロイ完了!