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


CIとは、Continuous Integrationの略、
継続的インテグレーションと呼ばれています。

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

CIとは、Continuous Integrationの略で、継続的インテグレーションと呼ばれています。

開発者が書いた新しいコードとマスターブランチ(トランク)を頻繁に統合するプロセスです。新しい機能開発のためにブランチを作成する場合、つぎにマージするまでの期間が長くなるにしたがって変更量が多くなり、マージ作業が大変になるだけでなく、問題が含まれるコードの特定と分離が難しくなります。一回のコミットでの変更量を小さくして頻繁にマージすれば、問題の発見が早くなり対処が楽になります。問題発見のオーバーヘッドを小さくするために自動化されたテストを行います。

 

パイプラインとは

CIを実現するための一連の流れをパイプラインと呼びます。開発者のコミットをトリガーとして、自動的にビルドや静的解析、単体テストといったテストや成果物のデプロイを行います。また、一連の流れの開始や終了時、何か問題が発生した際に開発者へ直ちにフィードバックする仕組みもパイプラインには欠かせない要素です。このような製品の開発サイクルの自動化の仕組みをパイプラインと呼びます。

 

パイプライン

CIツールを使うと?

CIツール登場以前は、開発者は長期間にわたって独立して作業し、自分の作業が完了したあと初めて、変更点をマスターブランチにマージしていました。このような開発プロセスでは、累積したコード変更をマージする作業は困難で時間のかかるものでした。また、バグが発生した場合も複数の変更が混在するため、影響範囲も広く特定と修正にかかるコストが大きくなってしまいます。

コードの変更からビルドが成功するまでにかかるリードタイムを短縮するために、CIツールがあります。CIツールを導入し、最初は小さな単位でビルドと検証を行いながら、フェーズが進みにつれて大きな単位での検証が行われるようにパイプラインを設計します。

そうすることで、エラーフィードバックが早くなり、影響範囲の小さなうちに修正されるようなプロセスとなります。

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

CI(継続的インテグレーション)のメリット

・開発者の生産性を向上
CI(継続的インテグレーション)は、エラーを小さな単位で影響範囲を小さく修正するようになるため、修正コストを削減します。これまでプロジェクトの最終段階で見つかっていたエラーが早く小さなコストで修正されるようになるため、開発チームの生産性が向上し、品質の良いソフトウェアの開発に繋がります。

 

・バグを短時間で発見して対処
テストの頻度が上がるため、開発チームでは、バグが後になって大きな問題に発展する前に発見して対処できます。

 

・リリースサイクルの向上
CI(継続的インテグレーション)は、常にビルドが通るリポジトリを維持し、リリースできる最新バージョンの特定を常に行うことができます。そのため、お客様に迅速かつ頻繁に最新の製品をリリースすることが可能となります。


CI実現のための近道

 

CI実現のためには、現在手作業になっている、ビルドやテストなどをスクリプトやツールによって自動化し、それらをCIツールでつなぎ合わせ、全体の開発プロセスを自動化する必要があります。世の中にはCIツールがたくさんありますが、デファクトスタンダードとなっているのはオープンソースソフトウェア(OSS)のJenkinsです。OSSのため利用コストは0でCIを始めることが可能です。

>>「Jenkinsとは?」の詳細はこちら