アジャイルを加速するために自動化は欠かせない。
アジャイルでは小さく初めて大きく育てる。
頻繁に機能追加を繰り返しながらプロダクト全体を増強していく。だからリグレッションテストもどんどん増える。これを手動でしていると、立ちゆかなくなる。
スプリント後半は機能追加できず、リグレッションテストばかりになってしまう。
自動化の利点は、夜通しやっても疲れないし、間違えないことだ。
自動化が生きるのは以下ののシナリオである。
- 繰り返しの作業。毎日、何度も何度も繰り返すもの
- 冗長で退屈な作業(生身の人間が行うとつらいと感じる作業、創造性を生かせない作業)
- パターン化していて、安定している作業(自動化するには自動化のプログラミングが必要だ。だから、頻繁に変わるものは保守が大変になる。1回作ったら繰り返し使えるものがいい)
自動化する上での注意点。
- 異常時に、誰にどのタイミングでアラート出しするかを定義(正常終了でない場合のルール化)
- テスト記述の抽象度を高める(メンテナンスしやすい)
- お昼休み、夜間、週末の有効活用(実装作業の邪魔にならないよう実施)
自動化のメリットは大きいが、定義されたこと以外は一切しない。
定義していないことは、人間なら当たり前に気づくことでもスルーしてしまう。だから、自動化ルールやテスト範囲が安定するまでリスクが伴う。
DevOps等、直接顧客の目に触れるまでの自動化は慎重に行おう。カナリアリリースのように、なにか障害が発生したらすぐ現バージョンにロールバックできる仕組みが不可欠だろう。