継続的インテグレーション

概要

継続的インテグレーション(ContinuousIntegration:継続的統合)
アジャイル開発に必要な以下の工程をほぼ自動で行う事
・バグは即時修正
・メンバーへ即時共有
・頻繁に広範囲に執拗に自動でテスト
・修正ソースの即時反映(ビルド)

アジャイル開発

顧客の要求を細かく切ってその都度開発&テスト&納品を行う手法。
最初の仕様やスケジュールとどんどんズレていく事になるが
そこには拘らない事を顧客に了承を得た上で進める。
永遠に仕様追加・変更を続けるのとは違い、
全体の予算・期限の制限がある中での仕様・スケジュールの変更なので
全体的なゴールを顧客、開発側が常に意識しておかなければならない。
多くの場合、仕様の変更・追加要求があった場合に代わりに何かの機能を削る。
スピードを伴った開発能力だけでなく、予算管理を含めた交渉能力を必要とされる開発手法。

継続的インテグレーションに必要なツール

・CIツール(Jenkins,Xcode等)
・テストツール(XUnit,Selenium等)
・ビルドツール(Ant等)
・ソースコード管理ツール(Git,Subversion等)

(1)開発者:ソースコードの変更
 ↓
(2)開発者:ソースコード管理ツール(Git等)へコミット
 ↓
(3)ソースコード管理ツール:CIツール(Jakins等)へ変更を通知
 ↓
(4)CIツール:ビルドツール(Ant等)へビルド指示
 ↓
(5)ビルドツール:ビルド
 ↓
(6)ビルドツール:CIツールへビルド終了を通知
 ↓
(7)CIツール:テストツール(JUnit等)へテスト実行を通知
 ↓
(8)テストツール:テスト
 ↓
(9)テストツール:CIツールへテスト結果を通知
CIツールを利用する事で手動で行っていたビルド&テストが自動で行われる。
開発者が行うのは(1)と(2)のみとなる。

まとめ

良い開発を行う為に、アジャイル手法を用いる。
その為に各種ツールを用いての開発する事を継続的インテグレーションという。

なお、「テスト駆動開発」を行う事が現時点では最も開発効率が良いと言われている。
※テストツールに用いるテストコードを最初に書き、
最初にテストツールによるエラーを発生させ、
更にエラーが無くなる様にコーディングを行う開発手法。