継続的インテグレーションのメリット
- 手戻りをなくし、品質を保持する
- いつでもリリースが可能
- 作業コストの削減(開発者の作業時間を増やす)
- 一貫した繰り返しの作業を行う
- 開発データの蓄積
メリットを享受できているか
e.g. 結合ビルドで行う
モジュールA,B,C(実装→テスト→レビュー→結合→リリース)
チームごとにモジュールが開発されていて、最後に各モジュールを統合してCIを行う
テストからのフィードバックを行い開発のスピードアップを図る
問題 結合できるレベルに達していないソースが構成管理に格納されていることがある(全体としても失敗してしまう)
→こうなってしまうと、開発コストが上がり、開発スピードも下がり、プロダクトの品質が下がってしまう。
十分に成熟したモジュールを作成する必要がある
改善策はあるか
つぎの視点で見直すことが重要
- チーム/モジュールの構成
- 開発プロセス
この2点について、現状がどうなっているかをきちんとおさえる
マルチステージ型継続的インテグレーション
ソフトウェアの成熟度
- ソフトウェアは、開発プロセスを通して段階的に成熟していくものである
- プロジェクト規模、チーム構成、モジュール構成、プロセスの視点が大切であり、継続的インテグレーションは、これに応じて段階的にインテグレーションを行う
- 段階的に構成された継続的インテグレーション=マルチステージ型継続的インテグレーション
実装、テスト、結合それぞれの段階でCIを行う
各チームのプロセスに合わせてCIを行うことで、小さなミスやエラーも早い段階で検出することが可能となる。
ビルド失敗時の影響範囲を限定的にする。
まとめ
段階的な継続的インテグレーションのススメ