はじめに
先日とある面接でエンジニアの面接官に、「CI/CDを説明できる?」と聞かれました。言葉については知っていましたが、言語化できるほど全く知識のない状態だったため、素直に「分からない」と答えました。またどこかで聞かれたときのためにCI/CDについてまとめてみました。
そもそもCI/CDとは?
CI/CDとはざっくり、「開発のプロセスを効率化する手法」のことです。それぞれについて簡単にまとめました。
CIとは?
CI(Continuous Integration)とは直訳で「継続的インテグレーション」という意味。開発者がコードを頻繁に共有リポジトリにコミットし、ビルドとテストを実行して、早期にバグを発見するプロセスのこと。
CDとは?
CD(Continuous Delivery/Development)とは直訳で「継続的デリバリー/デプロイメント」という意味。
デリバリーとデプロイメントの違いは本番反映の方法にあります。
| 種類 | 本番反映 |
| デリバリー | 手動承認後に反映 |
| デプロイメント | 自動で本番反映 |
CI/CDのメリットは?
CI/CDのメリットをまとめると以下になります。
- バグの早期発見
- デプロイのミス削減
- リリース速度の向上
- チーム開発の安定化
CI/CDのツール
以下が代表的なツールのようです。自分は使用したことがないので、実際に利用したら追記いたします。
- GitHub Actions
- GitLab CI/CD
- CircleCI
- Jenkins
また面接で聞かれたどう答える?
またどこかで聞かれたときに簡潔に答えられるよう以下にまとめました。
CIは、コードを更新するたびに自動でテストする仕組み。
CDは、CIでテストに通ったコードをリリースまで手動、あるいは自動で進める仕組み。
まとめ
今回、面接で聞かれなければCI/CDについて調べることはなかったかもしれません。こういった質問にスムーズに答えられるかどうかで、その人のエンジニアとしての知見や説明能力が測れると思います。
こういった専門用語を、自分の言葉で、人に分かりやすく、言語化できるように、しっかりブログに記して自分のものにしていきたいと思います。