最終更新日:2023/09/15

CI/CDとは?その重要性と現代開発における役割

アジャイルソフトウェア開発宣言でも知られるアメリカのソフトウェア技術者マーティン・ファウラー氏が2006年に提唱した、開発においてビルドやテストを自動化する『CI』は、CIをさらに拡張した『CD』と共に『CI/CD』として活用されることになり、今や開発において重要な存在となっています。

本記事では、CIとCDそれぞれの意味とCI/CDの概要、その重要性と現代開発における役割について解説していきます。メリットやデメリット、導入方法についても詳しく説明しますので、ぜひ参考になさってください。

 

|この記事でわかること

 

 ・CI/CDの概要と重要性

 ・現代開発におけるCI/CDの役割

 ・CI/CDのメリットとデメリット

 ・CI/CDの導入方法

CI/CDの基本概念

CIとは『Continuous Integration』の略であり、日本語では『継続的インテグレーション』と訳されます。CI/CDとは、CIとそれをさらに拡張したCDを合わせたものです。

CI/CDは『Continuous Integration/Continuous Delivery(継続的インテグレーション/継続的デリバリー)』または『Continuous Integration/Continuous Deployment(継続的インテグレーション/継続的デプロイ)』もしくはその2つを指し、『Continuous Integration/Continuous Delivery & Deployment』と記載されることもあります。

CI/CDは一つの技術ではなく、開発における自動化の手法を指す言葉です。取り入れることでエラーやバグの早期発見や業務効率化に役立ちます。

CIとCDそれぞれの言葉について、もう少し詳しく解説します。

 

|CI(継続的インテグレーション)とは

 

『CI(Continuous Integration)=継続的インテグレーション』は開発における自動化プロセスのことです。かつては作業を完了したあとにマスターブランチに変更をマージするというやり方が取られていましたが、CIでは開発者が定期的にマージすることで自動的にビルドを行い、変更に対するテストを行うため、バグやエラーの早期発見や開発の効率化につながります。

CIは前述した通り、マーティン・ファウラー氏が2006年に提唱した開発手法であり、これは同氏が開発宣言に関わった『アジャイル開発』をさらに進化させたものです。アジャイル開発との関係については後ほど詳しく解説します。

 

|CD(継続的デリバリーとデプロイメント)とは

 

CI/CDにおけるCDは、下記の2つの意味で使われています。

『Continuous Delivery=継続的デリバリー』

『Continuous Deployment=継続的デプロイメント』

CDとはCIをさらに拡張したものであり、継続的デリバリー、継続的デプロイメントいずれもコードの変更があった際に自動でビルドとテストを行います。継続的デリバリーの場合はリリース前までの準備であり、手動で本番環境への更新を行うのに対し、継続的デプロイメントは本番環境へのデプロイも自動で行います。

CI/CDの背景:アジャイル開発とDevOpsの関係

先にも触れましたが、CI/CDはアジャイル開発に深く関わるマーティン・ファウラー氏が提唱したものであり、アジャイル開発との相性も非常によい手法です。

スピード感を求められるアジャイル開発において、開発工程の一部を自動化できるCI/CDはなくてはならないものと言っても過言ではありません。

 

|アジャイル開発とは

 

アジャイル開発とは迅速に開発を行う開発手法群の総称で、開発する機能を細かく分類し、それぞれに短い開発期間単位を採用し、繰り返すことで一つ一つの機能を開発していくという特徴があります。

アジャイル開発については、下記のテキストでより詳しく解説していますので、ぜひご一読ください。

https://www.offshore-kaihatsu.com/contents/general/what-agile

 

|DevOpsとは

 

DevOpsとは『Development』と『Operations』、つまり開発と運用という意味の2つの言葉からなる造語であり、開発と運用それぞれの担当者がスムーズに連携することで迅速かつ柔軟なシステム開発を行うことができる手法です。

目的が異なるために意見が対立しがちな開発チームと運用チームをしっかり連携させることで円滑なコミュニケーションのもと、システム開発をスムーズに進めていくことができます。

スピード感をもって開発を進めていく手法という意味ではアジャイル開発と比較されることも多く、どちらもCI/CDと相性のいい手法ではありますが、DevOpsは開発そのものだけでなく組織のあり方をも改善する手法であるというのが大きな特徴です。

CI/CDのメリット

ここまで、CI/CDがどのようなものなのか、アジャイル開発やDevOpsについて解説してきました。では、CI/CDを導入するメリットには具体的にどのようなものがあるのでしょうか。

CI/CDを導入する主なメリットは下記の3つです。

 

 ・リリースの加速

 ・バグの検出と修正が容易

 ・生産性と品質の向上

 

それぞれを詳しく解説します。

 

リリースの加速

 

CI/CDはコードの変更からリリースまでの工程を自動化できるため、リリース自体の加速化だけでなく、リリースの頻度もスピードアップすることができます。

特にアジャイル開発では短い開発期間を繰り返すため、テストやリリースを自動化できるCI/CDを活用することで開発の速度が飛躍的にアップします。

 

バグの検出と修正が容易

 

テストを自動で行うCI/CDなら、バグやエラーを早期発見することができ、迅速な修正が可能となります。結果、コードの品質向上にもつながるというメリットがあります。

 

|生産性と品質の向上

 

手作業で行っていたテストやリリースが自動化されれば、業務の効率や生産性が上がり、スタッフのリソースに余裕が生まれます。結果、品質の向上につながります。

CI/CDのデメリットとその対処法

製品の質が上がり、生産性の向上にもつながるCI/CDですが、もちろんメリットだけではなくデメリットも存在します。

CI/CDを導入する主なデメリットは下記の2つです。

 

 ・パイプラインの構築コスト

 ・継続的なメンテナンスと監視の必要性

 

こちらも、それぞれ詳しく見ていきましょう。

 

|パイプラインの構築コスト

 

パイプラインとはCI/CDに必要な一連の流れ(ビルド→テスト→デリバー→デプロイ)を自動化したものであり、CI/CDを活用するためにはパイプラインを構築する必要があります。ビルドスクリプトやテストコードを作成するなどさまざまな作業が発生するため、構築にはそれなりの手間とコストがかかることは覚悟しておかなければなりません。

また、アジャイル開発のように頻繁にテストやリリースを繰り返すケースであれば、それらを自動化できるCI/CDの活用は効率化やコストカットにつながりますが、テストやリリースの回数が少ない開発方法、例えばウォーターフォール開発の場合は費用対効果が見合わない可能性もあります。

 

|継続的なメンテナンスと監視の必要性

 

CI/CDは一度パイプラインを構築すればそのままでよいというものではありません。保守作業が必要となります。定期的にコードを確認したり見直したりするだけでなく、新たな条件を追加する必要が生じることもあります。

このように構築や保守にそれなりのコストがかかるCI/CDではありますが、前述したようにアジャイル開発などテストやリリースの回数が多い開発手法をとる場合はじゅうぶんにコストパフォーマンスが高いツールとなるため、プロジェクトの内容によって導入を決定することが重要です。

CI/CDの導入方法とベストプラクティス

CI/CD導入にあたってのメリットとデメリットについて理解できたところで、実際に導入する際に必要なツールについても確認しておきましょう。

 

|必要なツールとテクノロジー

 

CI/CDに必要なパイプラインを構築するためには、下記のようなツールが必要です。

 

 ・リポジトリ(コードリポジトリ、成果物リポジトリ)

 ・CIツール

 ・構成管理ツール

 ・ビルドツール

 ・テストツール

 

リポジトリはコードや成果物のバージョンなどを管理するために必要なものであり、CIツールはビルドやテストを行う際にビルドツールやテストツールに連携を行うツールです。

構成管理ツールはインフラの構成を記録するためのツールであり、ビルドツールとテストツールはそれぞれビルドとテストを担当するツールです。

オープンソース自動化サーバーであるJenkinsがCI/CDツールとして有名ですが、その他にもTravis CIやCircleCIといったツールもあります。それぞれオンプレミス、クラウドといった特色があるのでプロジェクトの性質にマッチしたツールを選定しましょう。

最近では簡単に始められるクラウド型が一般的になりつつあるようです。

ケーススタディ: CI/CDの成功事例

2017年、Google社では1日に約80万回のビルドとそれに伴う約1億5千回のテストを行ったのだとか。このようにCI/CDを活用して開発のスピードアップ、業務の効率化を進めている企業は増えています。

CI/CDを実際に活用し、成功している事例についていくつかご紹介します。

 

Bilyoner社

 

トルコでは違法ギャンブルサイトの利用が増加していることを受け、政府が2019年にライブベッティングを合法化。違法サイトから国民を守るためにも、迅速にサービスを立ち上げる必要がありました。

トルコでスポーツベッティングサービスを提供するBilyoner社が、アジャイル手法とCI/CD を組み合わせた開発により、2 週間で新サービスの立ち上げに成功しています。

 

Slovenská sporiteľňa(スロバキア貯蓄銀行)

 

スロバキア最大の小売銀行であるSlovenská sporiteľňaは、DevOpsも活用している企業であり、DevOpsアプローチとプロセスの自動化によって、迅速かつ頻繁な新機能のリリースに成功しています。

 

Orange Sonatel社

 

Orange Sonatel社はセネガルの大手電気通信サービスプロバイダです。こちらもDevOpsをベースにCI/CDを活用し、これまで数日から数週間かかっていたアプリケーションの導入時間を数分に短縮することに成功しています。

まとめ

時代の変化と共に、アジャイル開発などスピード感を重視した開発手法が主流となっています。CI/CDは今やアジャイル開発にとってなくてはならない存在であり、今後もその重要性は増していくと考えられます。

1970年代から始まったと言われるオフショア開発は、当初はコスト削減が大きな目的でしたが、近年ではコスト削減だけでなく、優秀な人材を確保する方法の一つとして選択されることも増えています。DX化が急務となっている日本企業において、デジタル化は進んでいてもトランスフォーメーションはなかなか進んでおらず、国内のIT人材不足はまだまだ深刻です。

「オフショア開発. com」は、厳正な審査を通過した、オフショア開発企業が多数パートナーとなっております。

オフショア開発、外国人材採用に関する専門スタッフが、無料で御社のお悩みにお答えします。お悩み、ご相談などありましたら、ぜひお気軽にお問い合わせください。

このページを見た人は以下の記事も見ています。(関連記事)