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を使用した継続的なアプリサイズの計測
という環境を作りました。
以下の記事によると「アプリのサイズはインストール率に影響している」との事なので、もし「アプリのサイズを計測したい」と思った際に本記事が少しでも参考になれば幸いです。
また、セーフィーではエンジニアの採用を積極的に行っております。もし興味が出てきた際はぜひご応募いただけたらと思います。