前振り
「名前は聞いたことあるくらい...」や「正直何してるかはいまいち...」だけど「今更聞けない...」な方が一定数いるんじゃないかと思ったので、今一度整理してみたいと思います。
あんま長ったらしく書かれても読む気起きないと思うので、大枠は外さない程度でできる限り簡潔にまとめてます。
ので、語弊等々は若干あると思いますがご理解いただけると幸いです🙏
本題
そもそも何の略なのか
- Continuous Integration / Continuous Delivery のそれぞれ頭文字を取ったやつ
- 日本語だと継続的インテグレーション / 継続的デリバリー
- 後半のDeliveryはDeployment(デプロイメント)って言ったりもします
CIさんは何をしているのか
- 部品ごとの修正点を取りまとめる:マージ
- 部品を組み立てる:ビルド
- ↑で出来上がったモノがちゃんと動くか確認する:テスト
- ↑これらを自動でやってくれる
CDくんは何をしているのか
- CIさんが作ってくれたモノを使える状態にする:デプロイ
- 使える状態になったモノをお客さんに提供する:リリース
- ↑これらを自動でやってくれる
自動だと何がいいのか
- 昔は以下を全部手動でコツコツやってた
- マージ→ビルド→テスト(NG)→修正→マージ→ビルド→テスト(NG)→修正・・・
- これがCIさんの登場で
-
CI→修正→CI→修正→・・・
と色々省略できるようになった
-
CI→修正→CI→修正→・・・
- おかげで開発者はコードの修正に集中できるようになった
- 空いた時間で色々できるようになって生産性も上がった
- 人じゃなく機械にやってもらうことでヒューマンエラーも減った
- 面倒だしテストやんなくていいや!とかも無くなりちゃんと早い段階でバグを見つけられるようになった
※デプロイ→リリースの流れも同じ感じでCDくんに自動化してもらった
- 図にすると↓のイメージ
まとめ
直接関わる機会が少なくても概念として知っといて損はないと思うので、話題に出されたらスッと流れがイメージできるくらいにはしておきたいですね。
需要があれば手軽にCI/CDを構築してみる流れも解説してみたいと思います🙇♂️