CI/CDはソフトウェアやシステム開発の際、自動的にビルド・テストを行い、効率的にリリースできる状態にする手法のことです。
この記事ではCI/CDの基礎知識を説明していきます。
対象者:CI/CDに興味がある方、概要について調べたい方
CI/CDとは
結論
- テスト・リリースを自動化することでより効率的にプロダクト開発ができる!
- 自動化することで担当者の時間に余裕を生み出し、よりよいプロダクトの開発のために使うことができる!
CI/CDとは、次の2つを組み合わせたものです。
- CI:継続的インテグレーション(Continuous Integration)
- CD:継続的デリバリー(Continuous Delivery)
CI(継続的インテグレーション)
開発者によって実施されたプログラムの変更に対し、自動的にビルドとテストが行われる手法のことです。
自動で実施されることで不具合の発見と修正がすぐできるため、開発を効率良く進めることができます。
CD(継続的デリバリー)
こちらは上記でテストがOKだったプログラムを自動で稼働している環境にリリースする手法です。
リリースを自動化するということは、ユーザーに常に最新の状態の提供が可能となることを指します。
なぜ自動化が必要なのか
現在ほぼ全ての企業で何らかのシステムやソフトウェアを導入しています。
ビジネスに求められるスピードは早くなり、激しい社会変化に対応することが重要となりました。
その中でユーザーの要求に対する早期の実現、そして高い品質を保持するためには、開発担当者が手動でテストやリリースを行っていたのでは対応しきれなくなりました。
そういった背景からテストを自動化し、すぐにリリース、そして得たフィードバックをまたすぐに反映することができるCI/CDが採用されるようになりました。
CI/CDのメリット
細かく挙げると他にもありますが、代表的なメリットは以下となります。
- 品質向上
- 自動化によるスピードアップ・生産性向上
品質向上
変更したプログラムのテストはシステム・ソフトウェア開発においては当たり前のことなのですが、手動でテストを行うということにはどうしても「コード修正だけしてテストがされない」恐れがあります。
急ぎの修正対応であったり、「この修正で問題ないはずだからテストは省略」といった勘違い、あとは単純なテスト漏れ……。
本来あってはならないのですが、こういった人的な原因でテストが未実施となることが発生する可能性はあります。
しかしCI/CDを取り入れることにより、何回修正が発生しても確実にテストを自動で実施することができるようになります。
手動で行っていたテストが自動で頻繁に実施されることにより、バグの検出・修正が早い段階で行われプログラムの質が向上していきます。
また自動の単体テストに加えてパフォーマンステストなどに工数を割り当てられるようになるため、プロダクトの品質が向上します。
属人化の解消
CI/CDがない環境・プロジェクトではデプロイ・リリースといった作業が「インフラ担当」となった固定メンバーに一任されることがあります。
しかしデプロイ・リリースを専門に行う役割ではないので他の作業を行っていることがありますし、病気などで不在となることもあります。
このような状態では、プログラムの変更が即時にリリースできない場合もあります。
CI/CDによってテスト・デプロイ・リリース作業が自動で行われるため、担当者間で手順が異なることや、固定のメンバーに頼ってしまうということがなくなります。
時間の創出
属人化を排除し、無駄のない効率的なソフトウェア・システム開発ができるようになるため、担当者はテスト・デプロイ・リリースといった作業を行う代わりに、既存の問題解決やより良いプロダクトを作るために時間を使うことができるようになります。
CI/CD利用のポイント
CI/CDを取り入れるコスト、メンバーの育成
もしこれまでCI/CDの仕組みを業務に取り入れていない組織・プロジェクトの場合、業務に取り入れるためには以下が必要となります。
- CI/CDツールの導入・設定
- CI/CDを理解したメンバーの育成
- フィードバックと改善
CI/CDツール
代表的なツールとしては「Jenkins」があります。
オープンソースで、Windows、Linux、macOS、Docker用など色々な環境で利用が可能です。
Gitlabを利用している場合、「Gitlab CI/CD」という機能も候補として挙げられます。
どちらも紹介をしているサイトは多いので参考して導入の検討をしてみるのはいかがでしょうか。
CI/CDを理解したメンバーの育成
CI/CDを取り入れるためには、その仕組みや特徴を理解した上でツールの設定を行い、業務への導入を検討・実施できるメンバーが必須となるでしょう。
また導入・維持していくための体制も必要となります。
経験者や自己学習しているエンジニアがいない場合、外部セミナーもあります。
まとめ
この記事ではCI/CDについての概要・導入のメリット・利用のポイントを簡単にご紹介しました。
導入の上では、エンジニアを中心にCI/CDを効果的に利用し業務・プロダクトの改善をスピードアップできる体制の整備が重要と考えます。