![](https://blog.erkennt.co.jp/wp-content/themes/cocoon-master/images/ojisan.png)
最近、CI/CDというものを耳にするけど、どういうものなのか理解できていないんだよね。今日は「CI/CD」を生成AIに聞いてみよう。
ということで、今回はChatGPTに「CI/CD」を教えてもらおう
![](https://blog.erkennt.co.jp/wp-content/themes/cocoon-master/images/ojisan.png)
ChatGPTに、次のプロンプトを投げてみよう。
#役割
あなたはCI/CDコンサルタントです。
#タスク
以下の制約条件からCI/CDについて説明してください。
#制約条件
CI/CDを使用したことがない人にも分かりやすい内容にする
![ChatGPT](http://blog.erkennt.co.jp/wp-content/uploads/2024/05/chatgpt.png)
CI/CD(継続的インテグレーション/継続的デリバリー・デプロイメント)とは?
CI/CDはソフトウェア開発プロセスを効率化し、品質を向上させるための手法やツール群を指します。初心者にもわかりやすく説明すると、CI/CDは以下の二つの主要な概念から成り立っています。
![](https://blog.erkennt.co.jp/wp-content/themes/cocoon-master/images/ojisan.png)
プロセスの効率化、品質向上させる手法か。
これだけだと分からないから、主要な概念を聞いてみよう。
![ChatGPT](http://blog.erkennt.co.jp/wp-content/uploads/2024/05/chatgpt.png)
1. 継続的インテグレーション(CI:Continuous Integration)
継続的インテグレーション(CI)は、開発者がコードを頻繁にリポジトリに統合(インテグレーション)するプロセスです。これにより以下のようなメリットがあります。
- 早期発見: 変更を小さな単位で頻繁に統合することで、バグを早期に発見しやすくなります。
- 自動テスト: コードがリポジトリに統合されるたびに、自動テストが実行され、問題がないかチェックされます。
具体的な流れは以下の通りです。
- コードの変更: 開発者が新しい機能や修正をコードに追加します。
- コードのプッシュ: 変更をリポジトリにプッシュします。
- 自動ビルドとテスト: プッシュされた変更を自動でビルド(コンパイルや依存関係の解決)し、自動テストが実行されます。
![](https://blog.erkennt.co.jp/wp-content/themes/cocoon-master/images/ojisan.png)
CIは、gitなどのバージョン管理システムにプッシュをすることで、ビルドやテストが実行されるような仕組みということだね。不具合を早期発見できるのは良いけど、テストコードも整備も忘れ内容にしないとね。
![ChatGPT](http://blog.erkennt.co.jp/wp-content/uploads/2024/05/chatgpt.png)
2. 継続的デリバリー・デプロイメント(CD:Continuous Delivery/Continuous Deployment)
継続的デリバリー(CD)は、変更されたコードが一貫してプロダクション環境にデプロイ(配置)できる状態を保つことを指します。継続的デプロイメント(CD)は、テストが通過したコードを自動でプロダクション環境にデプロイすることです。
- 継続的デリバリー: コードが常にデプロイ可能な状態に保たれるよう、すべての変更がテストされ、準備が整ったら手動でデプロイされます。
- 継続的デプロイメント: 変更がテストに合格すると、すぐに自動的にプロダクション環境にデプロイされます。
具体的な流れは以下の通りです。
- 自動テストの合格: 継続的インテグレーションのプロセスを経て、すべてのテストが合格します。
- ステージング環境へのデプロイ: 合格したコードはまずステージング環境(本番環境に似たテスト環境)にデプロイされます。
- プロダクション環境へのデプロイ: ステージング環境で問題がなければ、本番環境に手動もしくは自動でデプロイされます。
![](https://blog.erkennt.co.jp/wp-content/themes/cocoon-master/images/ojisan.png)
CDは、CIでテストを通ったものを対象の環境に配置する仕組みのことなんだね。テストを通過しているものが配置されるようになっていれば、障害発生の懸念も抑えられるから安心だね。
![ChatGPT](http://blog.erkennt.co.jp/wp-content/uploads/2024/05/chatgpt.png)
CI/CDのメリット
- 早期問題検出: 問題を早期に発見できるため、修正が容易で、開発のスピードと品質が向上します。
- 自動化による効率化: 手動作業を減らし、自動化することで、時間と労力を節約できます。
- 高品質なリリース: 継続的にテストとデプロイを行うことで、常に高品質なリリースが可能となります。
![](https://blog.erkennt.co.jp/wp-content/themes/cocoon-master/images/ojisan.png)
早期に問題を発見できるので修正が容易ですし、手動作業を減らすことで効率が上がる。また、常に高品質なリリースが可能になります。これだけのメリットがあるなら、導入しない手はないように思います。
![](https://blog.erkennt.co.jp/wp-content/themes/cocoon-master/images/ojisan.png)
CI/CDは、コードの変更を頻繁に、かつ自動で統合・テスト・デプロイするプロセスのようです。これにより、開発の効率と品質が大幅に向上させることができそうですね。初めての方も、上記の流れを踏まえて、CI/CDの基本的な概念を把握することができるでしょう。
コメント