目的
- アプリ開発において必ず発生するビルドという過程。
このビルドの状況を可視化することで、開発の現状を認識する
やったこと
- Droidkaigi2022 @komatatsuさんのセッション「はじめようビルドメトリクス」を参考にgradleからビルド時間をGASで計測する仕組みを導入しています。
追加点
集計用パラメータの追加
- 追加でビルドしたプロダクトの情報を追加
シートの挿入処理
- 計測処理を他のプロダクトでも気軽に導入してもらえるよう、導入ハードルを極力下げる目的でGASのendpointは同じものを流用しています。
プロダクト名ごとにシートがなければ挿入、あればそのまま記録することで、他プロダクトで導入する際はbuild.gradle
への記述追加のみで対応が可能です。
function getSheet(name){
//同じ名前のシートがなければ作成
var sheet = SpreadsheetApp.getActive().getSheetByName(name)
if(sheet) {
Logger.log("exist sheet:" + name)
return sheet
}
sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
sheet.setName(name);
return sheet;
}
集計
- SpreadSheetにデータが保存できるようになったらあとは任意の形で加工していきます
- 具体的な値については省略してます
プロダクト内での集計
- プロダクト内でのビルド回数及び平均時間を示したのが以下です。
- メンバーそれぞれのビルドに加え、処理の早くないCirclrCiでのビルドも含まれるため、
- メンバーのビルドはないけどGithubでマージを行ったためCIが走った(11/13
などのケースではビルド時間平均が非常に長くなっています。
CircleCiの改善計測
- 実行者をCircleCiに絞って集計を行うことでCIの改善をグラフで可視化することができます。
添付のグラフにおいては- 11/13週から改善を行ったことからビルド時間が減少
- 11/27週にすべての環境に適用されたためビルド時間が落ち着いた
ということがわかります
スペックでのビルド時間の違い
- フルビルドの回数にも依存しますが、平均ビルド時間を個人で集計し、私を1としてビルド時間比を計算してみました。
私の環境だとわかりやすくビルド時間がかかっています。
それに対して、新しいPCを支給されたCさんでは半分以下となっています
そろそろ新しいPCをお願いしたい
ビルド時間比 | |
---|---|
私 | 1.000 |
Aさん | 0.697 |
Bさん | 0.679 |
Cさん | 0.401 |
まとめ
-
Androidのプロジェクトで横断的にビルド速度を集計できるようにした話
というタイトルになっていますが、横断的な分析を行うためにはまだデータが溜まっていません。
具体的な実施は継続中 - GASのendpointに対してリクエストを行うことでビルド履歴を保存する処理自体はandroid以外でも応用が可能なので、他プラットフォームでも活かせそう
- 定期的に振り返ることで問題の検知につなげていきたい