CI/CDとは何かをわかりやすく解説!
CI/CDとは何か?わかりやすく解説!
CI/CDとは、以下の2つの概念のセットを意味する言葉です。
用語 | 意味 |
---|---|
CI(Continuous Integration) | 継続的インテグレーション |
CD(Continuous Delivery / Continuous Deployment) | 継続的デリバリー、継続的デプロイメント |
と言われても、「なんのこっちゃ?」ですよね。僕もそうでした。
この2つ、ものすごく簡単に言うと、
- CI:「コードを書き換えたら自動でちゃんと動くかを確認する仕組み」
- CD:「コードを書き換えたら自動で開発環境などに反映する仕組み」
2つとも「コードを書き換えたら自動で〇〇をする」ということなのです。詳しく見ていきましょう。
CI(継続的インテグレーション)とは?
CIとは、簡単に言えば「コードを書き換えたら自動でちゃんと動くかを確認する仕組み」です。
例えば、GitHubにコード修正内容を反映(コミット)したときに、自動でビルド・テストが行われるということです。
ここでいうビルドやテストが何なのかわからない方もいると思いますので、もっと簡単に言えば、
- (手動)ソースコードを書き換える
- (CI)コードの変更を検知!
- (CI)自動でビルド(ソースコードから実行可能ファイルを生成)して起動!
- (CI)自動でバグがないかを検証するためにテストを実行!
こういうことです。このような「本当にこのコードで大丈夫なの?」というのを自動的に確認し続ける仕組みのことをCIと呼ぶわけです。
アプリ開発やシステム開発において、バグの少ないプログラムを組むことは重要なことですが、同時に非常に難しいことでもあります。そんなバグを潰せるのが「テスト」であり、テストなしのコードはあり得ないと考えてもいいくらいです。
そのため、開発者はコードを書いてはテスト、コードを書いてはテストと毎回のようにテストを行う必要がありましたが、そこでこのCIが活きてくるわけです。
CIの仕組みを使えば、CIツールが自動でビルドからテストまでを行ってくれるので、開発者はコード修正のみに集中すればよいことになり、結果として開発の効率が上がります。
また、テストのし忘れが起こりにくいので、コードの品質が保たれるというのもメリットの一つです。
まあ、そのテストを書くのは人間ですので、あくまで自分たちの書いたテストの中では問題ないコードということになりますけどね。
CIで自動的にテストしてくれると、手作業でテストするよりも遥かに楽です。そして、テスト忘れなどが起こりにくいので、コードの安全性が保たれます。
CD(継続的デリバリー/継続的デプロイメント)とは?
CDとは、簡単に言えば「コードを書き換えたら自動で開発環境などに反映する仕組み」です。
例えば、GitHubのmainブランチに変更があったときに、自動でAWSの本番環境やステージング環境(本番環境前の検証用の環境)にデプロイしたりします。
ここでもブランチやデプロイという何やら難しいワードが出てきますので、もっと簡単に言えば、
- (手動)ソースコードを書き換える
- (CD)コードの変更を検知!
- (CD)自動でビルド(ソースコードから実行可能ファイルを生成)してサーバーにアップロード!(リリース)
- (CD)自動でサーバー上でプログラムを実行!(デプロイ)
こんな感じです。このような最新のコードを自動的に運用環境に反映・デプロイし続ける仕組みのことをCDと呼ぶわけです。
継続的デリバリーと継続的デプロイメントは少し異なる意味合いがありますが、それらをまとめてCDと呼ぶことが多いです。
CDの仕組みがあると、デプロイ作業が自動で行われます。楽ということもありますが、デプロイに人の手が加わらないというメリットもあります。
CI/CDパイプラインとは?
パイプラインはさまざまな意味を持つ用語ですが、特にCI/CDにおけるパイプラインの意味は、CI/CDにおける一連の処理のことを言います。
具体的には、コードの変更を検知して動く以下のステップのことを表しています。
- ビルド:ソースコードから実行可能ファイルを生成する
- テスト:ビルドしたアプリケーションにバグなどがないか検証する
- リリース:サーバーにアプリケーション等をアップロードする
- デプロイ:サーバー上でアプリケーションを実行する
この一連の処理がパイプのようにつながっているため、パイプライン、またはCI/CDパイプラインと呼ばれます。