見出し画像

【プログラミング学習】 CI/CDとは何か?

こんばんは!
今日は少し珍しく、用語解説をしてみようと思います。
みなさん、CI/CDという言葉は聞いたことがあるでしょうか?

プログラミングの学習中にはなかなか聞かない言葉かと思いますが、非常に重要なので解説していきます。

CI/CDとは

CI/CDとは、「Continuous Integration」「Continuous Delivery」の略です。
日本語で「継続的インテグレーション」「継続的デリバリー」と言います。

常にプログラムの結合・ビルドを行って、常にシステムリリースを行うことを意味しています。

具体的には、コードを変更したら、自動で「テスト」「ビルド」「リリース」を行うプロセスのことを言います。

このプロセスを構築することで、様々なメリットを受けることができます。

1. 常に自動でテストを実施するので、バグが出ればすぐに気付ける

CI/CDの構築においては、自動テストを実装して、コード変更時には常にその自動テストを実行するようにすることが多いです。

これを実現することで、デグレ(機能追加により既存の機能がバグること)をすぐに検知することができます。

バグをすぐに検知してくれる仕組みがあると、安心して開発ができますね。

2. 実装した機能をどんどんリリースしていける

スタートアップのWebサービスであれば、日に何度もリリースをする必要があることも少なくありません。

それを都度、手動でリリースしていたのでは、どうしてもリリース回数は減ってしまいます。

リリース回数を増やしていくのであれば、CI/CDを構築して、リリースプロセスを自動化することは必須になります。

3. リリース作業が人に依存しなくなる

コードを変更して、自動テストさえ通ればリリースができるので、リリース作業が人に依存しなくなります。

CI/CDが当たり前になる前は、人手によるリリース作業が行われていましたが、大抵の場合、一部の人しかリリース作業ができませんでした。

緊急であっても、その一部の人がいないとリリースができなかったのです。

CI/CDの実現によって、リリース作業が人に依存しなくなるというのは、大きなメリットです。

CI/CDを実現するツールは?

CI/CDを実現するためのツールとしてはどのようなものがあるのでしょうか。

少し前は、Jenkinsというツールが主流でした。
恐らく、CI/CDを構築しているほぼ全てのプロジェクトでJenkinsが利用されていたのではないでしょうか。

ちなみに、Jenkinsの開発者は日本人です!
日本人の開発したものがこれだけ使われているというのは、嬉しいですね!

今はCircleCIというツールが主流かと思います。
Githubとの相性が良く、簡単にCI/CDを構築できるのが特徴です。
Jenkinsと違って、自前でサーバーを構築しなくて良いのも大きな特徴です。

CI/CDに興味がある方は、CirclecCIの使い方を調べて、ぜひチャレンジしてみて下さい。

最初は一部だけを構築するのでも良いと思います。

例えば、コードの変更をトリガーに自動でテストを実施するようにするだけでも、開発に大きなメリットになります。
デグレをすぐに検知できますので。

今日の記事は以上になります。
この記事でCI/CDに興味を持ってチャレンジする人が出ると嬉しいです!


# 今日も、最後までお読み頂きありがとうございます!
感想や質問などございましたら、コメント頂けますと嬉しいです。
全て返信させて頂きます!

では、また明日!

サポートは、プログラミング初学者の皆さんのためになることに使おうと思います。どのように使ったかも記事にします!