🐙

CI/CDとは?(アジャイル開発・ウォーターフォール開発違い)

に公開

CI/CD

継続的インテグレーション(CI)と継続的デリバリー(CD)の略。
ソフトウェア開発の効率化と品質向上、リリースの高速化を目的としている。
メリット:手間やミスを減らし、開発期間を短縮できる。
ソフトウェアを常にテストし、自動で本番環境に適用できる状態にしておく開発手法。

開発から本番リリースまでの流れを自動化する仕組み
「ミスなく」「速く」「繰り返し」コードを届けるための仕組み。

Continuous Integration(継続的インテグレーション)

バラバラで開発をしている複数人のエンジニアのソースコードを断続的に統合(インテグレーション)し、正常に動作することを確認するための検証する取り組み。

CIは、テストの自動化。
自動でRSpecなどのテストが実行され、テスト結果を教えてくれる。

よく使うツール:GitHub Actions / CircleCI / Travis CI

Continuous Delivery(継続的デリバリー)

ユーザーに断続的にアプリケーションを提供すること。
提供=本番環境にアプリケーションを載せ、顧客がいつでも新しいアプリケーションを利用できること。

CDは、リリースの自動化。
テストにクリアしたら、自動で本番サーバーにデプロイさせる。
もしくはステージングにデプロイしてから、手動で本番環境にデプロイする。

よく使うツール:Capistrano / GitHub Actions / AWS CodeDeploy / Heroku Pipelines

なぜCI/CDが必要?

現代はアジャイル開発が主流だから。
アジャイル開発とは「早く・頻繁にリリースをする」スタイル。

現代は変化が速い時代。競合他社に勝つためにも、どんどん開発してシステムを変更していく必要がある。

それなのに、毎回手作業でコマンドを打ってデプロイ作業をするのは大変!
実際私もポートフォリオに新しい機能を追加したら、毎回デプロイ作業をしないと本番環境に適用されないのは面倒だった。

アジャイル開発とウォーターフォール開発の違い

開発の進め方が違う!

ウォーターフォール開発

昔はウォーターフォール開発が主流だった。ウォーターフォールは滝の意味。
滝のように、上流から下流に後戻りしない前提で開発を進めていく。
後戻りできないので、開発の仕様が決まっていて、変更が起きにくい開発に適している。

アジャイル開発

要件定義・設計・開発・テスト・リリースを小さな単位として繰り返して進める開発方法。

今までは、何を作るかの全体像を決め、全体を設計しながら開発を進めていくこと(ウォーターフォール開発)が多かったが、現在は変更が多いため、ユーザーからの意見で改善しながらブラッシュアップしていく。

参考文献

https://products.sint.co.jp/obpm/blog/agile-waterfall
基本情報で出てきたアジャイル開発の問題
https://www.fe-siken.com/kakomon/03_menjo/q49.html
https://www.fe-siken.com/kakomon/sample/a41.html

ウォーターフォール開発の問題
https://www.fe-siken.com/kakomon/21_haru/q45.html

参考文献

https://www.sbbit.jp/article/cont1/81640
https://youtu.be/TZvEnyWQVsE?si=fr43TNUmarDLLHYi
https://www.youtube.com/watch?v=TrpmtrXIe-w

Discussion