CI/CDってなんだ?
Q1: CI/CDを回すって具体的にどういうこと?
A: コードの変更を自動的にテスト・ビルド・デプロイする仕組みを動かし続けることです。
具体的な流れ:
- CI(継続的インテグレーション): コードをPush → 自動テスト実行 → 結果通知
- CD(継続的デリバリー/デプロイ): mainブランチにマージ → 自動ビルド → 本番環境へ自動デプロイ
「回す」= 開発サイクルの中で繰り返し自動実行し続けるという意味。手作業を自動化して開発速度を上げるのが目的。
Q2: 実装の第一段階は?
A: まずGitHubにPushしたら自動テストが走る仕組みを作るのが第一段階。その後、AWSなどへの自動デプロイを追加していく。
段階的な進め方:
- 第1段階(CI): Push時に自動テスト実行
- 第2段階(CD): mainブランチマージ時に自動デプロイ(AWS S3/ECS/Lambdaなど)
いきなり全部やろうとせず、段階的に進めるのが王道パターン。
Q3: 手元でテストするのと何が違うの?
A: 主に3つの違いがあります。
1. 環境の統一
- 手元: 個人のPC環境(Mac/Windows、バージョン違い)→「俺の環境では動く」問題
- CI: クリーンなLinux環境で毎回実行 → 誰でも同じ条件
2. 実行の強制
- 手元: 開発者がサボったり忘れたりできる
- CI: Push時に必ず自動実行、テスト失敗でマージをブロック可能
3. 複数パターンの同時テスト
- 手元: 1つの環境のみ
- CI: 複数のNode.jsバージョン × 複数のOSで並行テスト可能
チーム開発での価値: テスト漏れやバグの混入を防ぎ、品質を保てる