ビルド時間のグラフ化の夢について考える
概要
ビルド時間が遅くて生産性が低い問題がある
しかし、ビルド時間の改善がどれだけ価値があるかわからないと、開発者としても会社としてもコストをかけづらい
ので、↓ をしたい
弊社では、集計されたビルド時間をグラフ化して、開発者が毎日どれくらいビルドを待っているのか、何回ビルドを実行しているのか、ビルドに平均でどれくらい時間が掛かるのか、が見えるようにしています。
どういう情報を取得できるか?
ツールなど
Xcode から得られる情報は、いくつかある
関数/式毎の型推論の時間
Swift/Storyboard/xib のコンパイル時間の内訳
全体のビルド時間, C/Swift のビルド時間, Build Target 順のビルド時間, ...
ビルドログ
差分ビルドでもフルビルドでも関係なく出力される
具体的に取りたい情報
データを可視化することを考えると、取りたいデータのみ取り出して InfluxDB に送信したい
どういうタイミングで情報を送信するか?
日々のビルド時間
Xcode の Build Phase の Run Script で実行すれば良さそう。
CI のビルド時間
fastlane で集計しても良いかも?
開発者毎に集計するなら、Xcode の Build Phase に差し込むのが一番良さそう
どういう方法で送信するか?
どういう方法で表示するか?
メンテしやすいように、コード化しておきたい
全体の流れ
1. ビルド実行
2. Build Phase の RunScript でビルドログを xclogparser で読み取り、必要なデータを influxdb に送信
3. influxdb のデータを、grafana で表示する
TODO
送信したい情報を決める
最初は、単純なビルド時間だけでも嬉しい
RunScript をかく
Grafana/InfluxDB 用の Docker compose 用意する
永続化データの管理方法も決めておきたい。バックアップとか
何ヶ月データを保持しておくか?とかも
(option) grafana のグラフをコード化する