13.1.4 ガイド:継続的にインテグレーションする
#LeSS本
継続的インテグレーションは「開発者の行動」のことであり、ツールではありません。
継続的インテグレーションとは、自動テストを伴う CI システムに支援され、小さな変更がとても頻繁に「メインライン」に統合され、システムが成長していく稼働中のシステムを維持するための開発者の行動のことです。
このガイドは「継続的にインテグレーションする」であり "継続的インテグレーション"(CI)ではない
開発者の行動
ビルドを壊すことで怒られる文化
CI がうまく機能していない状況を示す一例
CI が開発者に問題と調整の必要性を素早く伝える手法となるのが望ましい
ビルドが壊れても怒らない、避難しない
クリーンなコードのために継続的にリファクタリングを伴うテスト駆動開発を行う
頻繁な統合を奨励する
ビルドが壊れたときには "止めて直す"
小さな変更
安定したシステムに対する大きな変更はシステムを不安定にさせる
変更が大きいほど、システムを再び安定させるために多くの時間が掛かる
大きな変更は避け、代わりに小さな変更に分割する
"小規模なバッチ" ←リーン思考のコンセプト
とても頻繁に
「継続的に」と言えるほど頻繁にするには "毎秒全て" 統合することに近づくことになる。"毎秒全て" を達成することはできないが、近づけることに関連する項目がいくつか存在している
大規模な変更を分割するスキルを身につける
テスト駆動開発(TDD)のエキスパートになる
インテグレーションの速度を上げる
バッチのサイズを小さくする(1 回 5 分の TDD サイクルなど)
モダンな高速バージョン管理ツールを利用する
「マージする前にコードレビューする」などの遅延ポリシーを削除する
フィードバックサイクルを短くする
早いコンピュータでテストを実行する(高速にテストを実行する)
並列化する
早く実行できないテストのサブセットを段階的に複数のステージで実行する
「メインライン」で作業する
ブランチで作業しない