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

継続的インテグレーション (CI) では、システムのクリーン ビルドを 1 日に数回作成します。

継続的インテグレーション(CI)とは、システムのクリーンビルドを1日に数回作成することです。通常は、Antや様々なソース管理システムを利用するCruiseControlなどのツールを使用します。アジャイルチームは通常、自動コンパイル、ユニットテスト実行、ソース管理統合を含むようにCIを構成します。FitNesseを使用して開発されたような自動受け入れテストの自動実行もCIに含まれる場合があります。つまり、CIとはビルドがほぼ常にクリーンであることを意味します。

継続的インテグレーションの技術、ツール、ポリシー

CI がうまく機能するために必要な特定のプラクティスがいくつかあります。 彼のサイトでMartin Fowler 氏は、継続的インテグレーションとは何か、そしてそれをどのように機能させるかについて、長く詳細な説明を提供しています。

よく使われるCIルールの一つに、プログラマーは一日の終わりに何も統合されていないままにしてはならない、というものがあります。ビルドは壊れた状態で夜を過ごすべきではありません。これは、プログラミングチームにタスク計画の規律を課すことになります。さらに、チェックイン時にビルドを壊した人は必ずそれを修正しなければならないというチームのルールがあれば、日中に頻繁にコードをチェックインする自然なインセンティブが生まれます。

継続的インテグレーションの利点

CIがうまく機能すると、コードの堅牢性が維持され、顧客やその他のステークホルダーがいつでもコードを操作できるようになります。これにより、開発作業全体のフローが加速します。Fowler氏が指摘するように、CIは従来の開発作業とは全く異なる感覚をもたらします。また、プログラマーと顧客の間でフィードバックが促進され、イテレーションの期限前にチームが正しい状態を維持できるようになります。リファクタリングと同様に、継続的インテグレーションは、バグのあるコードをコミットしないことを保証する徹底的な自動化ユニットテストスイートを備えている場合に効果的に機能します。

適切なCIがあれば、コードベースとの差異はごくわずかで済むため、統合作業が面倒なことはなくなります。チームが小規模な差異に定期的に対処しなければならない場合でも、深刻な差異に直面することはありません。また、差異が発生したその日に、異なる設計アプローチについて議論する機会も得られます。なぜなら、その日に統合することで、それらの差異をチーム全体が認識することになるからです。