Androidチームの品質改善の取り組みとして、今回はアプリサイズを計測した話をしたいと思います。
はじめに
頻繁にアプリを更新しているとある日突然「アプリのサイズが肥大化している」と気が付く時があります。
- 新しいリソースファイルを追加した
- 新しいライブラリを導入した
など原因は様々考えられますがこれがいつの時期から発生したのかを調べるのは一苦労です。
そうならない為にも今回は「ruler」を使用し継続的にアプリのサイズを監視できる仕組みを導入しました。
動作環境
- Android Studio:Flamingo 2022.2.1 Patch 2
- AGP:8.0.2
- Gradle Version:8.0
- ruler:1.4.0
rulerとは
rulerとは、Spotifyが公開しているGradle pluginです。 アプリのサイズはもちろんのこと、各モジュールと依存関係がどれくらいアプリのサイズに影響を与えているかを レポートで出力することができるプラグインです。
rulerの導入方法
settings.gradleの編集
プロジェクト直下の「settings.gradle」を編集しrulerのプラグインを追加します。
pluginManagement { repositories { google() mavenCentral() gradlePluginPortal() } //追加 resolutionStrategy { eachPlugin { if (requested.id.id == "com.spotify.ruler") { useModule("com.spotify.ruler:ruler-gradle-plugin:1.4.0") } } } } dependencyResolutionManagement { //省略 }
参考:https://github.com/spotify/ruler/issues/85
app/build.gradleの編集
app/build.gradleにrulerの設定を追記します
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'com.spotify.ruler' //追加 } android { //省略 } dependencies { //省略 } //追加 環境に応じて設定値は変更してください。 ruler { abi.set("arm64-v8a") locale.set("ja_JP") screenDensity.set(480) sdkVersion.set(33) }
analyzeタスクの実行
ここまで上手くいくとGradleタスクに「analyze
継続的に計測する
いつアプリのサイズが肥大化したのか継続的に監視する為にrulerのタスクをGithub Actionsのワークフローに取り入れ 出力したJSONファイルを解析し内製のダッシュボードに記録ことで監視する仕組みを導入しました。
ワークフロー
以下実際に作成したものから抜粋したワークフローです。
Kotlin Script「sendAppSizeToDashboard.main.kts」でJSONを解析し結果を内製のダッシュボードに送信するという仕組みを作りました。
name: Output App Size Task on: push: paths: - 'app/**' branches: - main jobs: rulerJob: name: Exec ruler runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' cache: gradle - name: Make gradlew executable run: chmod +x ./gradlew - name: Run ruler run: ./gradlew analyzeStagingDebugBundle - name: Make scripts executable run: chmod -R +x ./.github/workflows/scripts #rulerの結果を内製ダッシュボードに送信するスクリプトを実行 - name: Send dashboard env: TZ: 'Asia/Tokyo' run: ./.github/workflows/scripts/sendAppSizeToDashboard.main.kts
最後に
今回の取り組みでは
- rulerを使用した継続的なアプリサイズの計測
という環境を作りました。
以下の記事によると「アプリのサイズはインストール率に影響している」との事なので、もし「アプリのサイズを計測したい」と思った際に本記事が少しでも参考になれば幸いです。
また、セーフィーではエンジニアの採用を積極的に行っております。もし興味が出てきた際はぜひご応募いただけたらと思います。