CI/CDとはソフトウェアにおける様々な変更に備えて常にテストを自動で行い、本番環境へリリース可能な状態にしておくソフトウェアの技法のことです。ここ数年注目を集めているソフトウェア技法であり、その需要は急速に広がっております。この記事ではCI/CDを理解するために初心者でも分かる役割、種類、基礎知識などを簡単に解説していきます。
CI/CDとはソフトウェアにおける様々な変更に備えて常にテストを自動で行い、本番環境へリリース可能な状態にしておくソフトウェアの技法のことです。『 CI』は「 Continuous Integration(継続的インテグレーション)_『 CD』は「Continuous Delivery(継続的デリバリー)」という意味を持ち、それぞれを合わせて自動化し継続的に行うという意味が込められております。このCI/CD領域は大きく分けてクラウド型とオンプレミス型の2種類が存在します。有名なサービスとして『Travis CI(クラウド型)』『CircleCI(クラウド型)』『Jenkins(オンプレミス型)』などが挙げられます。
Continuous Integration(継続的インテグレーション)とはプログラマーの生産性を向上させ、開発効率化、バグ発見と対処、自動化による手作業の排除、ビルドやテスト、レビューを短いサイクルで継続的に繰り返すためのソフトウェア技法のことです。小さなサイクルでインテグレーションを繰り返し行い、インテグレーションのエラーを素早く修正することによってチームは統合されたソフトウェアをより迅速に開発できるようになります。
Continuous Delivery(継続的デリバリー)とは継続的インテグレーションの拡張概念です。コード変更を行う際に自動的に「ビルド」→「 テスト」→「本番リリース準備」までが実行されます。また「何時、何処に」デプロイするか?を決めるだけという状態にするための概念となります。継続的デリバリーを行うためには、簡単で再現性のあるデプロイメントプロセスが重要となっております。
Continuous Deployment(継続的デプロイメント)とは自動化されたデプロイを意味します。デプロイを自動化することによってユーザーは常に最新の状態でソフトウェアの利用を実現することができます。自動的にかつ継続的にデプロイし続けることから継続的デプロイメントと呼ばれております。
CI/CDの読み方は『シーアイ・シーディー』が一般的となっております。CI/CDという名前の由来は「Continuous Integration(継続的インテグレーション)」「Continuous Delivery(継続的デリバリー)」それぞれの略式を掛け合わせたものです。
CI/CDの主な役割を見ていきましょう。
ビルドとはプログラミング言語で記述されたソースコードやファイルを独立したソフトウェアに変換するコンピュータ上で実行されるプロセスのことです。ビルドの自動化を行うことでソフトウェアを実行可能な状態にパッケージングする工数を削減することができます。
テストとはシステムやソフトウェアが設計された通りに機能するかを確認し、品質を保つための作業です。テストの自動化を行うことでエラーの自動チェック、既存機能による影響チェックなどを効率的に実施することができます。
デプロイとはシステムやソフトウェアを開発した際に利用できる状態にする作業のことです。デプロイの自動化を行うことでパッケージをサーバーに配備して利用可能な状態に整える工数を削減することができます。
主要なCI/CD製品をご紹介させて頂きます。
CI/CD製品(サービス)のおすすめ7選を紹介している記事はこちら>>
Travis CIとは『Travis CI community社』によって開発・提供されるGitHub上のソフトウェアのビルドやテストを行うためのオンラインで分散型の継続的インテグレーションサービスです。Travis CIは無料と有料のプランを用意しており無料版はオープンソースプロジェクト向け有料版はプライベートプロジェクト向けとなっております。主に単体テストを自動化していくためのサービスとして多くの方に親しまれております。
Travis CIの公式サイトはこちら>>
CircleCIとは『CircleCI社』によって開発・提供されるSaaS型のCI/CDサービスです。クラウドまたはプライベートサーバーでホストされているCIを使用して、開発プロセスを自動化します。オンプレミス型で提供される「Jenkins」と同様な機能を提供し、「ビルド」「テスト」「デプロイ」などについて自動実行できるサービスとなっております。CircleCIの特徴は『ジョブの実行が高速』『ビルドのスピードを最適化できる』などが挙げられます。
CircleCIの公式サイトはこちら>>
Bitbucket Pipelinesとは『アトラシアン社』によって開発・提供されるCI/CDサービスです。同社が提供するBitbucket と連動させることができ、セットアップがとても簡単に実行
できます。特徴として「あらゆるプラットフォームに対応」「ブランチの構成をマップする」などが挙げられます。デプロイメントの確実性を強く謳っており、デプロイを視覚的に確認することや追跡やプレビューを容易に行えるようになっております。
Bitbucket Pipelinesの公式サイトはこちら>>
Jenkinsとは『CloudBees社』によって開発・提供されるフリーでオープンソースのCI/CDサービスです。Jenkinsはプロジェクトの構築、展開、自動化をサポートする数百のプラグインを提供しております。他にも特徴として「簡単な設定」「拡張可能」「汎用性が高い」ということが挙げられます。
Jenkinsの公式サイトはこちら>>
ConcourseとはGo言語で構成されたパイプラインベースのCI/CDサービスです。Concourseは「リソース」「タスク」「ジョブ」の単純なメカニズムに基づいて構築されており、CI / CDに最適な自動化への一般的なアプローチを提供します。特徴としてパイプラインでプロセスを構成できるだけではなく、それを可視化、ビジュアライゼーションできるということが挙げられます。
Concourseの公式サイトはこちら>>
CI/CDを理解するために初心者でも分かる役割、種類、基礎知識などを簡単に解説させて頂きました。CI/CDを一言で表すと『ソフトウェアにおける様々な変更に備えて常にテストを自動で行い、本番環境へリリース可能な状態にしておく技法』です。名称に使われている『 CI』は「 Continuous Integration(継続的インテグレーション)『 CD』は「Continuous Delivery(継続的デリバリー)」という意味を持っております。CI/CDについてこの記事に記載されている最低限の内容は理解をしておくようにしましょう。