Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大規模FlutterプロジェクトのCI実行時間を約8割削減した話

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for teamLab teamLab PRO
August 01, 2025

 大規模FlutterプロジェクトのCI実行時間を約8割削減した話

Avatar for teamLab

teamLab PRO

August 01, 2025
Tweet

More Decks by teamLab

Other Decks in Programming

Transcript

  1. 9 1. 単純にテスト量が多い a. かなりの大規模プロジェクトなのでそれに比例してテストの量も多い 2. テストが全て直列で実行されている a. Flutter自体の並列実行オプションは利用しているが単一のExecutorで順番 に実行している。

    3. VRT(Golden Test)の量が多い a. 画面のレンダリングを実際に行うので実行時間がかかってしまう b. 実行するOSによって差分が発生するのでmacOSで実行しなければならない 制限が付き、コスト増に。 課題分析 テスト実行に時間がかかっている分析
  2. 16 テスト並列化 • 38分 x 13.5円/分(macOS) = 513円 コスト削減効果 従来

    • (5分+4分) x 13.5円/分(macOS) = 121円 • (3分+5分+4分+5分+1分) x 1.8円/分(Linux) = 32.4円 • 合計153.4円 並列化後 →コストも約 7割削減!!!
  3. 23 • シングルトンを用いる際に注意が必要 ◦ 普通に実行する際はテストファイル毎にインスタンスが再生成 ◦ very_good_cliでは全てのテストを同一のmain関数から実行されるのでテ ストファイル毎に初期化されない • VRTには効果が薄い

    ◦ VRTはレンダリングの計算に時間がかかっているので効果が出にくい ◦ --total-shards、--shard-indexのオプションを利用して分割が対策 テスト高速化 very_good_cliの利用で気を付けるポイント