共同作業で開発をスピードアップしても、プロダクトの品質を落としてしまっては元も子もありません。プロダクトの品質とスピード感のどちらも向上させるには、ビルドやデプロイメントテストの自動化が必要になります。テスト自動化に欠かせない連携の役割をもつのがCI/CDです。
本記事では、CI/CDとは何か、何ができるのかを知りたい人に向けてメリット・デメリットや基本機能などを紹介します。また、活用事例を参考にしてCI/CD導入のポイントも解説します。プロダクトの品質向上を目的にしている最新のアジャイル開発に興味がある担当者はぜひ参考にしてみてください。
目次
CI/CD(継続的インテグレーション・継続的デリバリー)とは?
CI/CDとは何か。そして何ができるのでしょうか。CI/CDとは、Continuous Integration/Continuous Deliveryの頭文字を取った略称です。和訳すると、「継続的インテグレーション・継続的デリバリー」。CI/CDは1つの技術だけではなく、アプリケーション開発全体に影響する手法です。
CI/CDは、アプリケーション開発におけるビルドやデプロイメントなど、テスト自動化の精度を高めます。テスト自動化は、増え続ける開発業務を迅速かつ正確に実行するために必要不可欠です。アジャイル開発(短期間開発でリスクを最小化する開発手法)が浸透する環境では、不具合を素早く見つけて頻繁にテストするCI/CDの概念が重要視されます。
CI
CI(Continuous Integration:継続的インテグレーション)とは、開発者の変更したコードを「リポジトリ(保管場所)」と頻繁に素早く連携する開発者向けの自動プロセスの手法です。そのため、短期間の品質管理を目的とする開発では、CIが役立ちます。CIは、アプリケーション開発における問題発見を迅速にして、テストを頻繁に実行することが特徴です。
CD
CD(Continuous Delivery:継続的デリバリー、または継続的デプロイメント)は、アプリケーション開発中に発生したすべてのコード変更を自動でデプロイ(配備・展開)可能な状態にします。開発者の変更したコードを自動でテストして、リポジトリに伝送する手法です。
CDは、テストを通過したアプリケーションを運用環境でリリース状態に自動配置。新たなコードの導入における作業負担を最小限に減らす手法です。本番環境や動作確認のプロセスも自動化して、顧客に素早く成果物を提供できます。
CI/CDパイプラインの要素
CI/CDパイプラインは、CI/CDの各ステップを構築することです。CI/CDパイプラインは、ステップの自動化により、アプリケーション開発のプロセスを向上します。CI/CDパイプラインのステップになる要素は、一般的に次のステージで分けることが可能です。
コード | コードを構築開始するステージ |
ビルド | コードの不備を解析して問題がなければ実行可能なファイルに変換するステージ |
テスト | コードのテストを実行するステージ |
リリース | アプリケーションを保管場所に配信するステージ |
デプロイ | 開発した成果物を実際の運用環境に配置するステージ |
オペレート | システムをリリースするステージ |
CI/CDパイプラインは、ステージとなる全行程の自動化により、開発プロセス全体を短縮できます。開発者の生産性を向上するには、CI/CDパイプラインの自動化が必要です。
CI/CDを構築するツール
CI/CDパイプラインの構築は、ツールによる自動化がステップの効率を高めます。すべての要素を自動化するために複数のツールを使うのが一般的です。CI/CDパイプラインの役割りごとに最適なツールを選ぶ必要があります。
なぜCI/CDが必要なのか?
CI/CDが必要な理由は、現在のビジネスにおけるIT製品の市場状況の変化です。アプリケーション開発のビジネス市場は、次のような状況に置かれています。
・持続可能な競争優位性が必要な市場
・変化に追従しなければならない市場
こうした状況だけではなく、ニーズが明確ではない市場を探す必要もあります。アプリケーション開発のビジネスでは、市場が求めるニーズを満たすために、市場からのフィードバックを反映しなければなりません。
開発・統合・デリバリー
フィードバックを反映するには、上記CI/CDのサイクルを回してアプリケーションの改善を進めます。「開発・統合・デリバリー」のサイクルを継続的に繰り返せれば、市場が求める成果物を提供できるでしょう。
現在、CI/CDが現場で重要視されている要因として、2つの変化があげられます。
・品質向上に向けた自動化テストの重要性
・アジャイル開発の浸透と追求
品質向上に向けた自動化テストの重要性
非IT企業にもDX(デジタル・トランスフォーメーション)推進の波が押し寄せる中、ビジネスのあらゆる場面でIT製品の導入が検討されている状況です。多様化するビジネスモデルに合わせて、業務課題を解決するアプリケーションの需要も高くなりました。
IT製品が競合優位性を維持するには、プロダクトの品質への要求に応えなければいけません。そのため、手動でテストしていた要素を自動化テストへと移行します。自動化テストは、プロダクトの品質向上に欠かせない取り組みです。
CI/CDはテストを自動作成するものではありません。テストをつくるのはあくまでも開発者であり、テストを自動で実行するのがCI/CDの役割です。
アジャイル開発の浸透
現在では、アジャイル開発に取り組んでいる組織が増えてきました。その背景にあるのがスピードです。アジャイル開発は、粒度の細かい変更を迅速に実行できます。
コードの変更があれば、「いかに素早くテストして、素早くフィードバックを得られるか」がアジャイル開発の効率的な特徴。CI/CDは、アジャイル開発の特徴を生かせます。アジャイル開発は、自動化テストによる品質向上を目的として、開発現場に浸透している状況です。
CI/CDツールの基本機能
CI/CDツールの基本機能について解説しましょう。
オーケストレーション
開発プロセスをステップの状況ごとに自動化するスケジュール管理とワークフロー作成機能
テストの自動化
素早い完了と並行した実行ができるテストの自動化機能
デバッグ
アプリケーションのコード内エラー検出機能
クラウドネイティブ展開
クラウドにアップロードされた環境・セキュリティ保護の万全な環境での展開サポート機能
アクセス制御
特定のデータにアクセス制限を設定できる機能
CIサーバ
継続的なインテグレーションの実行に必要なテストや展開で活用するコードの保存先サーバ
ビルドオートメーション
開発や展開にかかる時間を短縮するビルドの自動化機能
フィードバック管理
ユーザーからのフィードバックコメントを管理できる機能
CI/CDツールを導入するメリットとデメリット
CI/CDツールの導入には、メリットとデメリットがあります。

CI/CDツールを導入するメリット
CI/CDツールを導入するメリットは、次のとおりです。
1.開発期間の短縮
CI/CDツールの導入は、開発期間を短縮できます。CI/CDパイプラインの自動化により、開発プロセスの変更頻度を高めて、フィードバックを次回の更新に組み込めます。問題解決のスピードが速くなれば、開発期間の短縮につながります。
2.リスクの緩和
CI/CDツールは、本番環境やテスト環境までに発生する問題解決への時間と労力が減らせるため、リスクの緩和になります。迅速にリリースまで到達できるため、開発プロセスを緊密に見直せます。
3.コードの品質の向上
CI/CDは、コードの品質向上が可能です。CI/CDパイプラインは、リリースまでの自動化テストの作成により、粒度の細かいテストを実行できます。コードの定期的なテスト回数を増やせれば、バグの早期検出ができるでしょう。自動化テストは、手間をかけずに修正頻度を高められる点がコードの品質向上につながります。
4.本番までの経路を円滑化
CI/CDツールを活用すると、本番環境までの経路を円滑化できます。本番までの経路を円滑化する理由は、現状の開発プロセスに常駐する問題や効率を悪くする要素を明確にできるからです。CI/CDパイプラインは、次のステップの自動化を追加することにより、反復テストを実現します。
CI/CDパイプラインの自動化は、ステップごとの円滑なテストが実行できるようになります。
5.効率的なインフラストラクチャ
CI/CDツールは、効率的なインフラストラクチャの手法を取り入れることが可能です。継続的なインテグレーションの基盤の確立後に、ビルド環境やデプロイ環境、ステージング環境の自動化を拡張できます。
サーバ管理を手作業で行うのではなく、スクリプト化した構成をコード管理システムに保存することで、新しい環境を素早く立ち上げられるでしょう。
6.コストが下がることで細かいリリースが行える
CI/CDツールによる迅速なフィードバックは、コストを下げて細かいリリースを実行できます。細かいリリースができるのは、迅速なフィードバックにより作業効率が向上したためです。コーディング開始からリリースまでの期間が短くなれば、継続的なデリバリーにより調整や実施を繰り返せます。
7.バグの早期発見で影響範囲が少ないうちに修正可能
CI/CDツールによる自動化は、バグの早期発見で影響範囲が少ないうちに修正が可能です。継続的なインテグレーションでは、定期的な変更を自動で実行します。そのため、影響範囲が少ないうちに修正ができることがバグ修正の高速化となるでしょう。
8.拡張性が高い
CI/CDは、ツールの活用により拡張性を高められます。充実した連携機能によって、開発者とツールの迅速な環境接続が可能です。連携機能の充実により、既存のコードを生かせて拡張性を向上できます。
CI/CDツールを導入するデメリット
CI/CDツールの導入には、次のデメリットが考えられます。
1.導入コストが高くなる
継続的に実施しないと費用対効果が見込めません。CI/CDツールを自動化するには、ビルドスクリプトをつくらなければなりません。その分の導入コストを見込んでおく必要があります。また、継続的にリリースを実行しないようであれば、ツール利用の費用対効果が見込めないでしょう。継続的な実施は、必要条件です。
オンプレミス型とクラウド型
CI/CDツールのオンプレミス型とクラウド型について解説します。
CI/CDサービスのオンプレミス型とクラウド型との比較
CI/CDサービスをオンプレミス型とクラウド型で比較すると、次のような特徴があります。
オンプレミス型 | クラウド型 | |
メリット |
・拡張性が高い・ビルドするマシンの性能を自分たちで調整できる・オープンソース(できることが多い) | ・サーバを自前でもたなくてよい・簡単に始められる・アップデートをしなくてよい・コミュニティでナレッジを共有できる |
デメリット |
・運用コストが高い・サーバを時前で用意する必要がある | ・有料(通常無料枠も有り)・ビルドするマシンの性能を選べないことが多い |
オンプレミス型とは?
オンプレミス型とは、自社保有のサーバ環境でのアプリケーションを利用する形態です。アプリケーション開発では、自社保有のサーバへの接続が必要になります。オンプレミス型のCI/CDツールは、次の3つです。
Jenkins:提供元「CloudBees,Inc.」
Concourse CI:提供元「Concourse」
Drone (クラウド版もあり):提供元「Harness」
オンプレミス型のメリット
オンプレミス型CI/CDツールのメリットは、自社保有のサーバを活用するため、情報漏えいのリスクが小さいことです。自社サーバ環境のため、クラウド型よりも拡張性が高くなります。また、サーバマシンの性能を自由に調整できることや、オープンソースのCI/CDツールが多いこともオンプレミス型の特徴です。
オンプレミス型のデメリット
オンプレミス型CI/CDツールのデメリットは、自社でサーバを用意しなくてはならないこと。サーバの保有には運用コストがかかります。サーバの選定から準備まで、自社判断で進めなければなりません。
クラウド型とは?
クラウド型とは、ツールを提供する事業者が管理運営するサーバにあるアプリケーションをネットワーク経由で利用する形態です。クラウド型は、自社サーバを保有する必要がありません。クラウド上のツールに接続するためのアカウント登録さえできれば利用できる仕組みです。クラウド型のCI/CDツールは、次の3つです。
Travis CI:提供元「Travis CI community社」
CircleCI:提供元「Circle Internet Services,Inc.」
Wercker:提供元「Oracle社(wercker社)」
クラウド型のメリット
クラウド型CI/CDツールのメリットは、自前のサーバを持たなくても済む点です。保守管理などサービス提供元の企業に委ねるため、アップデートの必要がありません。また、サービス事業者によるツール活用のコミュニティにおいて、既存利用者からナレッジを共有できることもメリットです。
クラウド型のデメリット
クラウド型CI/CDツールのデメリットは、業者のサーバを利用するため、ビルドするサーバマシンの性能を選べないこと。また、クラウド型のCI/CDツールは、無料の通常枠もありますが基本的に有料です。
CI/CDツールの活用事例
CI/CDツールを導入したことで得られるメリットについて、ITreviewに集まったレビューをもとに活用事例を紹介します。
属人化する事が減り、シェルや手作業の工数も減った
「プラグインが充実しているところ。プラグインをいれると、mvn test の結果などをレポートして表示したり、実行結果から分岐できたり、実行順をフロー図で可視化したりできる。複数のプロジェクトをビルドして資材配置したい場合、これまで専用のシェルを組んで実行していた。また、作業が属人化していた。だが、Jenkins により、属人化する事が減り、シェルや手作業の工数も減った」
https://www.itreview.jp/products/jenkins/reviews/38379
▼利用サービス:Jenkins
▼企業名:ソフトバンク株式会社 ▼従業員規模:1000人以上 ▼業種:情報通信・インターネット
人的ミスがツール利用により軽減される
「Webアプリケーション開発は作業量が多く、同様な作業を毎回実施する必要があります。そんな作業をサポートしてくれる信頼できるソフトウエアです。テスト環境構築に非常に時間を費やされている方には、ビルドやファイルアップ時に反映漏れや誤ったファイルをアップしてしまうなどの人的ミスがツール利用により軽減されるメリットがあります。Webアプリケーション開発のツール選択で悩まれている方には実績の高さから迷わず推薦致します」
https://www.itreview.jp/products/jenkins/reviews/9967
▼利用サービス:Jenkins
▼企業名:アズビル株式会社 ▼従業員規模:1000人以上 ▼業種:電気・電子機器
開発時の通常作業はほぼ自動化できた
「オンプレ、クラウド含めて、ビルドや各種テスト、デプロイまで、ソフトウェア開発時のありとあらゆることの自動化と集中管理がこれだけでできる。7〜8年掛けて、ほぼ開発時の通常作業は自動化できたと思います。それまで、手作業で数日掛けて行っていたことが、数時間で自動化されているので、コストメリットははかりきれない」
https://www.itreview.jp/products/jenkins/reviews/27530
▼利用サービス:Jenkins
▼企業名:株式会社NTTデータイントラマート ▼従業員規模:100~300人未満 ▼業種:ソフトウェア・SI
機能も容量も魅力あふれるDevOps環境
「無制限のGitリポジトリとWiki・カンバン・Issue・テスト・パイプラインをそろえたDevOps環境。とにかくぜんぶ揃っている。「全部入り」なところが魅力だと思う。ひとつのプロジェクトに上記のような機能をそれぞれもたせ、リポジトリは複数もつことができる。コミットできるファイルのサイズもgit経由であれば無制限なのがすごくうれしい」
https://www.itreview.jp/products/azure-devops/reviews/39966
▼利用サービス:Azure DevOps
▼企業名:合同会社インフォメーカー ▼従業員規模:20人未満 ▼業種:ソフトウェア・SI
開発あとなどに、いつも作業的に行っていたことを自動化
「subscribe型のCIツールです。開発あとなどに、いつも作業的に行っていたことを自動化させることができます。Githubの自分のリポジトリへPushする度にテストツールでデグレ確認をし、masterマージをした際にはコンパイル、デプロイまでおこなえます」
https://www.itreview.jp/products/circleci/reviews/18161
▼利用サービス:CircleCI
▼企業名:株式会社おかん ▼従業員規模:20~50人未満 ▼業種:その他小売
CI/CDツールの業界マップ
CI/CDツールのユーザーからの評価を知るには、ITreview Gridが便利です。ITreview Gridは、ITreviewに集まったユーザーのレビューをもとに生成された4象限の満足度マップで、顧客満足度と市場での認知度を掛け合わせた結果が、4象限上でのポジショニングとして確認できます。
CI/CDツールおすすめ5選
実際に、CI/CDツールを活用されている企業の方々のレビューが多い製品を中心におすすめのCI/CDツールを紹介します。
(2021年11月28日時点のレビューが多い順に紹介しています)
Jenkins
Jenkinsは、無料のオンプレミス型CI/CDツールです。拡張性とオープンソースの汎用性の高さが特徴となり、1400以上のプラグインを活用できます。Jenkinsは、次の目的を持った開発チームに最適です。
Azure DevOps
Azure DevOpsは、日本マイクロソフト株式会社が開発したアジャイル開発向けのCI/CDツール。DevOpsとは、DevelopmentとOperationsを組み合わせた造語のことで「開発と運用」を意味します。Azure DevOpsは、次のような目的を持った開発チーム向けのCI/CDツールです。
CircleCI
CircleCIは、さまざまなビルドやテスト、デプロイに対応するクラウド型のCI/CDツールです。CircleCIは、デプロイの自動化により円滑なプロダクトリリースを実現できます。クラウド型ツールのため、オンプレミス型ツールよりUI(ユーザーインターフェース)での設定が少なくできるymlファイルでの設定が特徴です。
Travis CI
Travis CIは、開発プラットフォーム「GitHub」と連携できるCI/CDツールです。Travis CIのソースコードは、GitHubでも公開されています。GitHub上のアプリケーションのビルド・テストを実行することが可能。無料でオープンソースのプロジェクトを開発できます。
Bitrise
Bitriseは、スマホアプリ開発向けのクラウド型CI/CDツール。無料枠が設定されている有料サービスです。iOSアプリ開発では、1回の実行につき10分以内のビルドであれば無料で実行できます。
ITreviewではその他のCI/CDも紹介しており、紹介ページでは製品ごとで比較をしながら導入ツールを検討できます。
CI・CD(継続的インテグレーション・デリバリー)の導入の比較・ランキング・おすすめ製品一覧
まとめ
CI/CDパイプラインの要素を自動化するには、ツールの選定が重要です。ツールの選定では、オンプレミス型やクラウド型の特徴やメリットから状況に合わせて選ぶ必要があります。
コロナ禍を機に、ビジネスツールの需要はますます広がる傾向です。プロダクトの品質を保持して迅速なリリースを可能にするCI/CDツールの導入は、アジャイル開発に欠かせない取り組みとなるでしょう。