はじめに
CICDについて言葉はしっているものの何のことかを知らなかったため、記事を通して理解を深めていければと思います。
間違い等ございましたらご指摘いただけますと幸いです。
目次
- CI/CDとは何か
- 継続的インテグレーション(CI)
2-1.役割
2-2.メリット - 継続的デリバリー(CD)
3-1.役割
3-2.メリット - CI/CDのツール
1.CI/CDとは何か
CI/CDは「継続的インテグレーション(CI)」と「継続的デリバリー/デプロイ(CD)」の略であり、ソフトウェア開発プロセスを効率化し、品質を向上させるための手法です。
ソフトウェアの開発からリリースまでの一連のプロセスを自動化します。
<背景>
CI/CDの手法が取り入れられた背景には、従来のウォーターフォール開発が持つ長い開発サイクルがあります。この手法では、要件定義、設計、実装、テストの各フェーズを終えた後にリリースを行うため、問題が発生した場合の修正が非常に困難でした。
しかし、アジャイル開発が普及する中で、ユーザーのニーズに迅速に応える必要が高まり、CI/CDによって自動化されたテストを導入することで、頻繁なリリースが可能となりました。
2.継続的インテグレーション(CI)
2-1.役割
CIはソフトウェア開発において、開発者が新しく書いたコードを頻繁にプロジェクトのリポジトリに追加しこれを自動でテストやビルドするプロセスです。
2-2.メリット
<早期のバグ発見と修正>
コードが追加されるたびにテストが行われるため、問題を早期に見つけることができその分修正も迅速にできる
<品質の向上>
定期的なテストによりコードの品質が保証され、リリース前に重大な問題を回避できる
<生産性の向上>
手動で行っていたテストやビルドを自動化することで開発者のタスクを減らせる
3. 継続的デリバリー(CD)
3-1.役割
CDはソフトウェアのリリースプロセスを自動化し、テストに合格したコードをすぐに本番環境にデプロイ可能な状態に保ちます。
(自動でデプロイはされません。自動は継続的デプロイで行われる)
3-2.メリット
<品質の向上>
CDでも自動テストが導入されており、バグやエラーを早期に発見できるためリリース後に問題が発生するリスクが減少し、全体的な品質が向上する
<迅速で安定性のあるリリース>
コードが自動でテストされており、リリースの準備が整った状態に維持されるため、リリースまでの時間が大幅に短縮されリリース後のトラブルも最小限に抑えることができる
4.CI/CDのツール
Jenkins
https://codefresh.io/learn/jenkins/ci-cd-with-jenkins-in-3-steps/
GitHub Actions
https://docs.github.com/en/actions
Azure DevOps
https://learn.microsoft.com/ja-jp/azure/devops/pipelines/?view=azure-devops
などなど
5.まとめ
調べてみると、アジャイル開発をする中でとても便利な手法だと感じましたが初期設定などに時間がかかるというデメリットもありそうです。
ですが、1つ1つ手動でやるよりも間違いなく効率はいいと思うのでこれからCI/CDを取り入れて開発していこうと思います。