Agent Skills by ALSEL
Anthropic ClaudeDevOps・インフラ⭐ リポ 0品質スコア 50/100

gradle-build-performance

Androidアプリや Gradle ビルドのパフォーマンスをデバッグ・最適化します。ビルドが遅い場合、CI/CD のパフォーマンス調査、ビルドスキャンの分析、コンパイルのボトルネック特定などの際に活用してください。

description の原文を見る

Debug and optimize Android/Gradle build performance. Use when builds are slow, investigating CI/CD performance, analyzing build scans, or identifying compilation bottlenecks.

SKILL.md 本文

Gradleビルドパフォーマンス

使用する場合

  • ビルド時間が遅い(クリーンビルドまたはインクリメンタルビルド)
  • ビルドパフォーマンスの低下を調査する
  • Gradleビルドスキャンを分析する
  • 設定フェーズと実行フェーズのボトルネックを特定する
  • CI/CDのビルド時間を最適化する
  • Gradle Configuration Cacheを有効にする
  • 不要な再コンパイルを削減する
  • kapt/KSPアノテーション処理をデバッグする

例となるプロンプト

  • 「ビルドが遅いです。どのように高速化できますか?」
  • 「Gradleビルドスキャンを分析するにはどうしたらよいですか?」
  • 「設定に時間がかかっているのはなぜですか?」
  • 「プロジェクトが常にすべてを再コンパイルするのはなぜですか?」
  • 「Configuration Cacheを有効にするにはどうしたらよいですか?」
  • 「kaptが遅いのはなぜですか?」

ワークフロー

  1. ベースラインを測定 — クリーンビルド + インクリメンタルビルドの時間
  2. ビルドスキャンを生成./gradlew assembleDebug --scan
  3. フェーズを特定 — 設定?実行?依存関係解決?
  4. 1つの最適化を適用 — 複数の変更をまとめない
  5. 改善を測定 — ベースラインと比較
  6. ビルドスキャンで確認 — 視覚的に確認

クイック診断

ビルドスキャンを生成

./gradlew assembleDebug --scan

ローカルでビルドをプロファイリング

./gradlew assembleDebug --profile
# build/reports/profile/ でレポートを開きます

ビルドタイミングサマリー

./gradlew assembleDebug --info | grep -E "^\:.*"
# または Android Studio で表示: Build > Analyze APK Build

ビルドフェーズ

フェーズ処理内容一般的な問題
初期化settings.gradle.kts が評価される多すぎる include() ステートメント
設定すべての build.gradle.kts ファイルが評価される高コストなプラグイン、不適切なタスク作成
実行入出力に基づいてタスクが実行されるキャッシュミス、非インクリメンタルなタスク

ボトルネックを特定

Build scan → Performance → Build timeline
  • 長い設定フェーズ: プラグインと buildscript の最適化に焦点を当てる
  • 長い実行フェーズ: タスクキャッシングと並列化に焦点を当てる
  • 依存関係解決が遅い: リポジトリ設定に焦点を当てる

12の最適化パターン

1. Configuration Cacheを有効にする

ビルド間で設定フェーズをキャッシュします(AGP 8.0+):

# gradle.properties
org.gradle.configuration-cache=true
org.gradle.configuration-cache.problems=warn

2. ビルドキャッシュを有効にする

ビルドおよびマシン間でタスク出力を再利用します:

# gradle.properties
org.gradle.caching=true

3. 並列実行を有効にする

独立したモジュールを同時にビルドします:

# gradle.properties
org.gradle.parallel=true

4. JVMヒープを増やす

大規模プロジェクト用により多くのメモリを割り当てます:

# gradle.properties
org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC

5. 非推移的なRクラスを使用する

Rクラスのサイズとコンパイルを削減します(AGP 8.0+デフォルト):

# gradle.properties
android.nonTransitiveRClass=true

6. kaptからKSPに移行する

KSPはKotlinの場合kaptより2倍高速です:

// 前(遅い)
kapt("com.google.dagger:hilt-compiler:2.51.1")

// 後(高速)
ksp("com.google.dagger:hilt-compiler:2.51.1")

7. 動的な依存関係を避ける

依存関係のバージョンをピンします:

// 悪い例: ビルドのたびに解決を強制
implementation("com.example:lib:+")
implementation("com.example:lib:1.0.+")

// 良い例: 固定バージョン
implementation("com.example:lib:1.2.3")

8. リポジトリの順序を最適化する

最も使用されるリポジトリを最初に配置します:

// settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        google()      // 最初: Android依存関係
        mavenCentral() // 次: ほとんどのライブラリ
        // サードパーティリポジトリは最後
    }
}

9. ローカルモジュールに includeBuild を使用する

複合ビルドは大規模なモノレポの project() より高速です:

// settings.gradle.kts
includeBuild("shared-library") {
    dependencySubstitution {
        substitute(module("com.example:shared")).using(project(":"))
    }
}

10. インクリメンタルアノテーション処理を有効にする

# gradle.properties
kapt.incremental.apt=true
kapt.use.worker.api=true

11. 設定時のI/Oを避ける

設定中にファイルを読み取るか、ネットワーク呼び出しをしないでください:

// 悪い例: 設定中に実行
val version = file("version.txt").readText()

// 良い例: 実行フェーズに遅延
val version = providers.fileContents(file("version.txt")).asText

12. 遅延タスク設定を使用する

create() を避けて、register() を使用します:

// 悪い例: 積極的に設定
tasks.create("myTask") { ... }

// 良い例: 遅延設定
tasks.register("myTask") { ... }

一般的なボトルネック分析

遅い設定フェーズ

症状: ビルドスキャンに長い「Configuring build」時間が表示される

原因と対策:

原因対策
不適切なタスク作成tasks.create() の代わりに tasks.register() を使用する
buildSrcに多くの依存関係includeBuild を使用した Convention Plugins に移行
ビルドスクリプト内のファイルI/Oproviders.fileContents() を使用する
プラグイン内のネットワーク呼び出し結果をキャッシュするかオフラインモードを使用

遅いコンパイル

症状: :app:compileDebugKotlin に時間がかかる

原因と対策:

原因対策
非インクリメンタルな変更キャッシュを無効化する build.gradle.kts 変更を避ける
大きなモジュールより小さいフィーチャーモジュールに分割
過度なkapt使用KSPに移行
Kotlinコンパイラメモリkotlin.daemon.jvmargs を増やす

キャッシュミス

症状: 変更がないのにタスクが常に再実行される

原因と対策:

原因対策
不安定なタスク入力@PathSensitive, @NormalizeLineEndings を使用
出力のロパス相対パスを使用
@CacheableTask がないカスタムタスクにアノテーションを追加
異なるJDKバージョン環境全体でJDKを標準化

CI/CD最適化

リモートビルドキャッシュ

// settings.gradle.kts
buildCache {
    local { isEnabled = true }
    remote<HttpBuildCache> {
        url = uri("https://cache.example.com/")
        isPush = System.getenv("CI") == "true"
        credentials {
            username = System.getenv("CACHE_USER")
            password = System.getenv("CACHE_PASS")
        }
    }
}

Gradle Enterprise / Develocity

高度なビルド分析の場合:

// settings.gradle.kts
plugins {
    id("com.gradle.develocity") version "3.17"
}

develocity {
    buildScan {
        termsOfUseUrl.set("https://gradle.com/help/legal-terms-of-use")
        termsOfUseAgree.set("yes")
        publishing.onlyIf { System.getenv("CI") != null }
    }
}

CI内の不要なタスクをスキップ

# UI専用の変更の場合テストをスキップ
./gradlew assembleDebug -x test -x lint

# 影響を受けたモジュールのテストのみ実行
./gradlew :feature:login:test

Android Studio設定

File → Settings → Build → Gradle

  • Gradle JDK: プロジェクトのJDKと同じ
  • Build and run using: Gradle(IntelliJではない)
  • Run tests using: Gradle

File → Settings → Build → Compiler

  • Compile independent modules in parallel: ✅ 有効
  • Configure on demand: ❌ 無効(非推奨)

検証チェックリスト

最適化後、以下を確認してください:

  • Configuration Cacheが有効で機能している
  • ビルドキャッシュヒット率 > 80%(ビルドスキャンで確認)
  • 動的な依存関係バージョンがない
  • 可能な限りkaptの代わりにKSPを使用
  • 並列実行が有効
  • JVMメモリが適切にチューニングされている
  • CIリモートキャッシュが設定されている
  • 設定時のI/Oがない

リファレンス

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
new-silvermoon
リポジトリ
new-silvermoon/awesome-android-agent-skills
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/new-silvermoon/awesome-android-agent-skills / ライセンス: Apache-2.0

関連スキル

汎用DevOps・インフラ⭐ リポ 502

superpowers-streamer-cli

SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。

by rohanarun
汎用DevOps・インフラ⭐ リポ 493

catc-client-ops

Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。

by automateyournetwork
汎用DevOps・インフラ⭐ リポ 39,967

ci-cd-and-automation

CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。

by addyosmani
汎用DevOps・インフラ⭐ リポ 39,967

shipping-and-launch

本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。

by addyosmani
OpenAIDevOps・インフラ⭐ リポ 38,974

linear-release-setup

Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。

by novuhq
Anthropic ClaudeDevOps・インフラ⭐ リポ 2,159

tracking-application-response-times

API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。

by jeremylongshore
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: new-silvermoon · new-silvermoon/awesome-android-agent-skills · ライセンス: Apache-2.0