17
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Androidのプロジェクトで横断的にビルド速度を集計できるようにした話

Last updated at Posted at 2022-12-15

目的

  • アプリ開発において必ず発生するビルドという過程。
    このビルドの状況を可視化することで、開発の現状を認識する

やったこと

追加点

集計用パラメータの追加

  • 追加でビルドしたプロダクトの情報を追加

シートの挿入処理

  • 計測処理を他のプロダクトでも気軽に導入してもらえるよう、導入ハードルを極力下げる目的で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にデータが保存できるようになったらあとは任意の形で加工していきます
  • 具体的な値については省略してます

プロダクト内での集計

  • プロダクト内でのビルド回数及び平均時間を示したのが以下です。
    スクリーンショット 2022-12-15 17.48.13.png
  • メンバーそれぞれのビルドに加え、処理の早くないCirclrCiでのビルドも含まれるため、
    • メンバーのビルドはないけどGithubでマージを行ったためCIが走った(11/13

などのケースではビルド時間平均が非常に長くなっています。

CircleCiの改善計測

  • 実行者をCircleCiに絞って集計を行うことでCIの改善をグラフで可視化することができます。
    スクリーンショット 2022-12-15 17.35.11.png
    添付のグラフにおいては
    • 11/13週から改善を行ったことからビルド時間が減少
    • 11/27週にすべての環境に適用されたためビルド時間が落ち着いた
      ということがわかります

スペックでのビルド時間の違い

  • フルビルドの回数にも依存しますが、平均ビルド時間を個人で集計し、私を1としてビルド時間比を計算してみました。
    私の環境だとわかりやすくビルド時間がかかっています。
    それに対して、新しいPCを支給されたCさんでは半分以下となっています
    そろそろ新しいPCをお願いしたい
ビルド時間比
1.000
Aさん 0.697
Bさん 0.679
Cさん 0.401

まとめ

  • Androidのプロジェクトで横断的にビルド速度を集計できるようにした話というタイトルになっていますが、横断的な分析を行うためにはまだデータが溜まっていません。
    具体的な実施は継続中
  • GASのendpointに対してリクエストを行うことでビルド履歴を保存する処理自体はandroid以外でも応用が可能なので、他プラットフォームでも活かせそう
  • 定期的に振り返ることで問題の検知につなげていきたい
17
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?