27分かかっていたCIが、テストを減らさず4分に。しかも大規模なツール刷新ではなく、「昔は正しかった設計」を疑うことで85%を削った。AI時代には、この4分の差がこれまで以上に大きくなる。
Scala製のフルスタックアプリで、約1000件のテストのうち600件がPostgreSQLを利用し、約300件では実際のアプリまで起動する。プロジェクトが小さかった頃は10分以下だったCIが、機能とテストの増加によって約27分まで膨らんだ。著者はAIエージェントも使いながらボトルネック候補を洗い出し、実際のCIで一つずつ計測。最終的に平均約4分、約85%の短縮に成功した。重要なのは、テストを削ったり、実DBをモックに置き換えたりしたわけではないことだ。
最大の原因はテストそのものではなく、テストのたびに環境を作り直していたことだった。もともとはテストごとにPostgresコンテナを立ち上げることで完全な隔離性を確保していたが、これをテスト全体で共有する方式に変更。これだけで推定15分を削減した。さらにアプリ起動をテスト単位からスイート単位へ変更し、sbtプロセスの再利用、テストの並列化、変更ファイルに応じた不要テストのスキップなどを積み重ねた。
ここで面白いのは、元の設計が「悪かった」わけではない点だ。
122262

