android-kotlin-compose について
android-kotlin-composeは、KotlinとJetpack ComposeでAndroidアプリを開発する人向けのスキルです。タスク別のリファレンスを通じて、モジュール化、UI、データ、テスト、パフォーマンス、移行を扱います。
主な機能
- 01Androidプロジェクトとモジュール化の指針
- 02Jetpack ComposeのUIパターン
- 03MVVMとレイヤードアーキテクチャの指針
- 04Gradle設定と依存関係の管理
- 05テスト、アクセシビリティ、性能の指針
- 06移行とデバッグのリファレンス
活用シーン
- 01KotlinによるAndroid新規プロジェクトの構築
- 02Compose画面とViewModelの実装
- 03機能モジュールとデータ層の設計
- 04性能、クラッシュ、アーキテクチャの調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ drjacky/ claude-android-ninja --skill android-kotlin-composeインストール後、Claude Code で/android-kotlin-composeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreLICENSE.mdREADME.md.github/FUNDING.yml.github/ISSUE_TEMPLATE/bug_report.mdfeature_request.mdassets/convention/AndroidApplicationBaselineProfileConventionPlugin.ktAndroidApplicationComposeConventionPlugin.ktAndroidApplicationConventionPlugin.ktAndroidApplicationJacocoConventionPlugin.ktAndroidFeatureConventionPlugin.ktAndroidLibraryComposeConventionPlugin.ktAndroidLibraryConventionPlugin.ktAndroidLibraryJacocoConventionPlugin.ktAndroidLintConventionPlugin.ktAndroidRoomConventionPlugin.ktAndroidTestConventionPlugin.ktDetektConventionPlugin.ktFirebaseConventionPlugin.ktHiltConventionPlugin.ktJvmLibraryConventionPlugin.ktKotlinSerializationConventionPlugin.ktQUICK_REFERENCE.mdSentryConventionPlugin.ktSpotlessConventionPlugin.ktbuild.gradle.ktsassets/convention/config/AndroidCompose.ktAndroidInstrumentationTest.ktGradleManagedDevices.ktJacoco.kt詳細
Android Kotlin Compose 開発
Google の公式アーキテクチャガイダンスとベストプラクティスに従って、本番品質の Android アプリケーションを作成します。 Kotlin、Jetpack Compose、MVVM アーキテクチャ、Hilt による依存関係注入、Room データベース、または Android のマルチモジュールプロジェクトで Android アプリを構築する場合に使用します。 Android プロジェクト、画面、ViewModel、リポジトリ、機能モジュールの作成依頼や、Android のアーキテクチャパターンについて尋ねられた場合に起動します。
クイックリファレンス
| タスク | リファレンスファイル |
|---|---|
| プロジェクト構成とモジュール | modularization.md |
| アーキテクチャの各レイヤー(Presentation、Domain、Data、UI) | architecture.md |
| Compose パターン、アニメーション、エフェクト、修飾子 | compose-patterns.md |
| アクセシビリティと TalkBack のサポート | android-accessibility.md |
| 通知とフォアグラウンドサービス | android-notifications.md |
| データ同期とオフラインファーストのパターン | android-data-sync.md |
| Material 3 のテーマ設定とダイナミックカラー | android-theming.md |
| Navigation3 とアダプティブナビゲーション | android-navigation.md |
| Kotlin のベストプラクティス | kotlin-patterns.md |
| Coroutines のベストプラクティス | coroutines-patterns.md |
| Gradle とビルド設定 | gradle-setup.md |
| テストのアプローチ | testing.md |
| 国際化とローカライズ | android-i18n.md |
| アイコン、グラフィックス、カスタム描画 | android-graphics.md |
| 実行時権限 | android-permissions.md |
| Kotlin の委譲パターン | kotlin-delegation.md |
| クラッシュレポート | crashlytics.md |
| StrictMode のガードレール | android-strictmode.md |
| マルチモジュールの依存関係 | dependencies.md |
| コード品質(Detekt) | code-quality.md |
| コードカバレッジ(JaCoCo) | android-code-coverage.md |
| セキュリティ(暗号化、生体認証、ピン留め) | android-security.md |
| デザインパターン | design-patterns.md |
| Android のパフォーマンス、再コンポジション、アプリの起動 | android-performance.md |
| デバッグ(Logcat、ANR、R8、メモリリーク) | android-debugging.md |
| 移行ガイド(XML、RxJava、Navigation、Compose) | migration.md |
ワークフローの判断ツリー
新しいプロジェクトを作成していますか?
→ 設定とモジュールのインクルードには、assets/settings.gradle.kts.templateを使用してください
→ バージョンカタログには、assets/libs.versions.toml.templateを使用してください
→ assets/convention/のすべてのファイルをbuild-logic/convention/src/main/kotlin/にコピーしてください
→ build-logic/settings.gradle.ktsを作成してください(assets/convention/QUICK_REFERENCE.mdを参照)
→ ルートのsettings.gradle.ktsにincludeBuild("build-logic")を追加してください
→ gradle/libs.versions.tomlにプラグインのエントリーを追加してください(assets/convention/QUICK_REFERENCE.mdを参照)
→ assets/proguard-rules.pro.templateをapp/proguard-rules.proにコピーしてください
→ 構造とモジュールの種類については、modularization.mdをお読みください
→ ビルドファイルとビルドロジックには、gradle-setup.mdを使用してください
Gradle/ビルドファイルを設定していますか?
→ モジュールのbuild.gradle.ktsのパターンには、gradle-setup.mdを使用してください
→ 最適化のワークフロー、診断、ボトルネックのトラブルシューティングについては、gradle-setup.md → 「Build Performance」を使用してください
→ プロジェクトのbuild-logic/に、assets/convention/の規約プラグインをコピーしてください
→ 設定手順と例については、assets/convention/QUICK_REFERENCE.mdを参照してください
→ R8ルールには、assets/proguard-rules.pro.templateをapp/proguard-rules.proにコピーしてください
コード品質/Detektを設定していますか?
→ Detektの規約プラグインの設定には、code-quality.mdを使用してください
→ ルールにはassets/detekt.yml.templateをベースにし、Composeルールを有効にしてください
依存関係を追加または更新していますか?
→ dependencies.mdに従ってください
→ 依存関係がない場合は、assets/libs.versions.toml.templateを更新してください
新しい機能/モジュールを追加していますか?
→ modularization.mdのモジュール命名規則に従ってください
→ 機能モジュールにプレゼンテーション層を実装してください
→ 依存関係の流れに従ってください:Feature → Core/Domain → Core/Data
UI画面/コンポーネントを作成していますか?
→ 画面アーキテクチャ、状態、コンポーネント、モディファイアについては、compose-patterns.mdをお読みください
→ Material 3のカラー、タイポグラフィ、シェイプには、android-theming.mdを使用してください
→ Kotlinコードは必ずkotlin-patterns.mdに準拠させてください
→ 機能モジュールにScreen + ViewModel + UiStateを作成してください
→ 可能な場合は、core/uiの共有コンポーネントを使用してください
アプリのテーマ(カラー、タイポグラフィ、シェイプ)を設定していますか?
→ Material 3のテーマ設定とダイナミックカラーについては、android-theming.mdに従ってください
→ MaterialTheme.colorSchemeのセマンティックなカラーの役割を使用してください(ハードコードしたカラーは使用しないでください)
→ ユーザー設定の切り替えに対応したライト/ダークテーマをサポートしてください
→ API 31以降ではダイナミックカラー(Material You)を有効にしてください
Kotlinコードを記述していますか?
→ 必ずkotlin-patterns.mdに従ってください
→ 実装がarchitecture.md、modularization.md、compose-patterns.mdに準拠していることを確認してください
データ層/ドメイン層を設定していますか?
→ architecture.mdをお読みください
→ core/domainにRepositoryインターフェースを作成してください
→ core/dataにRepositoryを実装してください
→ core/dataにDataSourceとDAOを作成してください
オフラインファーストやデータ同期を実装していますか?
→ 同期戦略、競合解決、キャッシュ無効化については、android-data-sync.mdに従ってください
→ 同期メタデータ(syncStatus、lastModified)を含め、単一の信頼できる情報源としてRoomを使用してください
→ WorkManagerでバックグラウンド同期をスケジュールしてください
→ 同期前にネットワーク状態を確認してください
ナビゲーションを設定する場合
→ Navigation3 のアーキテクチャ、状態管理、アダプティブナビゲーションについては、android-navigation.md を参照してください
→ 機能モジュールのナビゲーションコンポーネント(Destination、Navigator、Graph)については、modularization.md を参照してください
→ アプリモジュールでナビゲーショングラフを設定してください
→ 機能ナビゲーションの Destination と Navigator インターフェースを使用してください
テストを追加する場合
→ パターンと例については、testing.md を参照してください
→ Compose Preview Screenshot Testing の設定については、testing.md → 「Screenshot Testing」を参照してください
→ テストダブルは core/testing に配置してください
実行時権限を扱う場合
→ マニフェスト宣言と Compose の権限パターンについては、android-permissions.md を参照してください
→ 状況に応じて権限をリクエストし、「次回から表示しない」を選択した場合のフローも処理してください
通知やフォアグラウンドサービスを表示する場合
→ 通知チャンネル、スタイル、アクション、フォアグラウンドサービスについては、android-notifications.md を参照してください
→ 通知を表示する前に、API 33 以降では POST_NOTIFICATIONS 権限を確認してください
→ アプリの起動時に通知チャンネルを作成してください(API 26 以降では必須です)
ViewModel 間でロジックを共有する場合、または基底クラスを避ける場合
→ kotlin-delegation.md の説明に従い、インターフェースによる委譲を使用してください
→ バリデーション、分析、機能フラグには、小規模な注入可能なデリゲートを使用してください
クラッシュレポートやモニタリングを追加する場合
→ プロバイダーに依存しないインターフェースとモジュールの配置については、crashlytics.md を参照してください
→ DI バインディングを使って、Firebase Crashlytics と Sentry を切り替えてください
StrictMode のガードレールを有効にする場合
→ アプリレベルの設定と Compose コンパイラ診断については、android-strictmode.md を参照してください
→ StrictMode のログを送信するには、crashlytics.md の Sentry/Firebase の初期化を使用してください
新しい機能、ビジネスロジック、システムに適したデザインパターンを選ぶ場合
→ Android に特化したパターンの指針については、design-patterns.md を参照してください
→ architecture.md および modularization.md に沿ってください
パフォーマンスのリグレッションや起動時の遅延/カクつきを測定する場合
→ Macrobenchmark、Baseline Profiles、ProfileInstaller の設定については、android-performance.md を参照してください
→ ベンチマークモジュールは、gradle-setup.md の benchmark ビルドタイプに合わせてください
→ ユーザーからカクつきの調査やカスタムトレースポイントの追加を明示的に依頼された場合は、System Tracing(androidx.tracing)の設定について android-performance.md を参照してください
アプリの初期化やスプラッシュ画面を設定する場合
→ App Startup ライブラリ、遅延初期化、スプラッシュ画面については、android-performance.md → 「App Startup & Initialization」を参照してください
→ ContentProvider による自動初期化は避け、代わりに Initializer インターフェースを使用してください
→ 読み込み状態には、setKeepOnScreenCondition とともに installSplashScreen() を使用してください
アイコン、画像、カスタムグラフィックを追加する場合
→ Material Symbols のアイコンとカスタム描画については、android-graphics.md を参照してください
→ Iconify API または Google Fonts からアイコンをダウンロードしてください(非推奨の Icons.Default.* ライブラリは避けてください)
→ カスタムグラフィックには、Modifier.drawWithContent、drawBehind、または drawWithCache を使用してください
カスタム UI エフェクト(グロー、シャドウ、グラデーション)を作成する場合
→ Canvas 描画、BlendMode、Palette API のパターンについては、android-graphics.md を確認してください
→ アニメーション効果には rememberInfiniteTransition を使用してください
アクセシビリティへの準拠(TalkBack、タッチターゲット、色のコントラスト)を確保するには?
→ セマンティックプロパティと WCAG ガイドラインについては、android-accessibility.md に従ってください
→ すべてのアイコンと画像に contentDescription を指定してください
→ タッチターゲットは最小でも 48dp × 48dp にしてください
→ TalkBack と Accessibility Scanner でテストしてください
画像や色の抽出を扱うには?
→ AsyncImage、SubcomposeAsyncImage、rememberAsyncImagePainter、Hilt ImageLoader のセットアップについては、android-graphics.md の「Image Loading with Coil3」を使用してください
→ Palette API と色の抽出については、android-graphics.md を使用してください
複雑なコルーチンフローやバックグラウンド処理を実装するには?
→ 構造化された並行処理のパターンについては、coroutines-patterns.md に従ってください
→ 適切なディスパッチャー(IO、Default、Main)と適切なキャンセル処理を使用してください
→ 状態管理にはチャネルよりも StateFlow/SharedFlow を優先してください
→ Android のコールバック API(接続状態、センサー、位置情報)を Flow にラップするには callbackFlow を使用してください
→ 一度だけ呼び出されるコールバック(Play Services のタスク、生体認証)には suspendCancellableCoroutine を使用してください
→ ViewModel で複数の Flow を結合するには combine() を使用し、負荷の高い上流処理を共有するには shareIn を使用してください
→ buffer、conflate、debounce、sample でバックプレッシャーを処理してください
複数のクラスで動作を共有するには?
→ インターフェース委譲のパターンについては、kotlin-delegation.md を使用してください
→ 基底クラスは避け、委譲インターフェースを使用したコンポジションを優先してください
→ 例:Analytics、FormValidator、CrashReporter
既存のコードをリファクタリングしたり、アーキテクチャを改善したりするには?
→ レイヤーの責務については、architecture.md を確認してください
→ 適用可能なパターンについては、design-patterns.md を確認してください
→ Kotlin 固有の改善については、kotlin-patterns.md に従ってください
→ modularization.md の依存関係ルールに準拠していることを確認してください
クラッシュ、ANR、難読化されたスタックトレースをデバッグするには?
→ Logcat、ANR トレース、Compose の再コンポジションのデバッグについては、android-debugging.md に従ってください
→ R8 のマッピングファイルと手動での難読化解除については、android-debugging.md を使用してください
→ R8 のビルド設定と keep ルールについては、gradle-setup.md を参照してください
パフォーマンスの問題やメモリーリークをデバッグするには?
→ 開発ビルドで android-strictmode.md を有効にしてください
→ プロファイリングとベンチマークについては、android-performance.md を使用してください
→ LeakCanary とヒープダンプの分析については、android-debugging.md を使用してください
→ コルーチンのキャンセルパターンについては、coroutines-patterns.md を確認してください
CI/CD やコード品質チェックを設定するには?
→ Detekt のベースラインと CI 統合については、code-quality.md を使用してください
→ ビルドキャッシュとコンベンションプラグインについては、gradle-setup.md を使用してください
→ テストの構成とカバレッジについては、testing.md を使用してください
機密データやプライバシーに関する懸念に対処するには?
→ データのスクラブパターンについては、crashlytics.md に従ってください
→ 適切な権限の根拠については、android-permissions.md を使用してください
→ クリアテキストのネットワークトラフィックを検出する方法については、android-strictmode.md を確認してください
レガシーコード(LiveData、Fragments、Accompanist、RxJava)を移行するには?
→ すべての移行パスについては、migration.md を使用してください
→ 最新の MVVM パターンについては、architecture.md に従ってください
Compose アニメーションを追加していますか?
→ AnimatedVisibility、AnimatedContent、animate*AsState、Animatable、共有要素については、compose-patterns.md →「Animation」を参照してください
→ GPU アクセラレーションによる変換には、graphicsLayer を使用してください(再コンポーズは発生しません)
→ Layout Inspector でデバッグできるよう、必ず label パラメーターを指定してください
副作用(LaunchedEffect、DisposableEffect)を使用していますか?
→ エフェクトの選択ガイドについては、compose-patterns.md →「Side Effects」を参照してください
→ 状態駆動のコルーチンには LaunchedEffect(key)、イベント駆動の場合は rememberCoroutineScope を使用してください
→ リスナーやリソースのクリーンアップには DisposableEffect を使用し、必ず onDispose を含めてください
→ onResume/onPause の処理(カメラ、メディア)には LifecycleResumeEffect、onStart/onStop の処理(位置情報、センサー)には LifecycleStartEffect を使用してください
Modifier の順序やカスタム Modifier を扱っていますか?
→ チェーンの順序規則とパターンについては、compose-patterns.md →「Modifiers」を参照してください
→ カスタム Modifier には Modifier.Node を使用してください(非推奨の Modifier.composed は使用しないでください)
→ 順序:サイズ → パディング → 描画 → インタラクション
Accompanist または非推奨の Compose API から移行していますか?
→ Accompanist、Compose API、Material、Edge-to-Edge の移行については、migration.md を参照してください
→ 概要については、compose-patterns.md →「Deprecated Patterns & Migrations」を参照してください
Compose の再コンポーズや安定性を最適化していますか?
→ @Immutable/@Stable アノテーションについては、compose-patterns.md を参照してください
→ 3 つのフェーズ、遅延状態読み取り、Strong Skipping Mode については、android-performance.md →「Compose Recomposition Performance」を参照してください
→ Compose Compiler のメトリクスと安定性レポートについては、gradle-setup.md を確認してください
→ イミュータブルなデータ構造については、kotlin-patterns.md を参照してください
データベース(Room)を扱う必要がありますか?
→ modularization.md に従い、core/database に DAO とエンティティを定義してください
→ インメモリデータベースのテストと移行テストについては、testing.md を参照してください
→ Room を使用したリポジトリのパターンについては、architecture.md に従ってください
国際化/ローカライズ(i18n/l10n)が必要ですか?
→ 文字列リソース、複数形、RTL サポートについては、android-i18n.md を参照してください
→ RTL に対応した Compose レイアウトについては、compose-patterns.md に従ってください
→ ロケール固有のテストについては、testing.md を参照してください
ネットワーク呼び出し(Retrofit)を実装していますか?
→ Retrofit のサービスインターフェース、Hilt NetworkModule、AuthInterceptor については、architecture.md →「Network Layer Setup」を参照してください
→ modularization.md に従い、core/network に API インターフェースを定義してください
→ Retrofit、OkHttp、シリアライズの設定については、dependencies.md に従ってください
→ エラー処理には、kotlin-patterns.md の汎用 Result<T> を使用してください
カスタム lint ルールやコードチェックを作成していますか?
→ Detekt のカスタムルールについては、code-quality.md を参照してください
→ コンベンションプラグインの設定については、gradle-setup.md に従ってください
→ 実行時チェックについては、android-strictmode.md を確認してください
コードカバレッジのレポートが必要ですか?
→ JaCoCo の設定については、android-code-coverage.md を参照してください
→ テスト戦略については、testing.md に従ってください
→ コンベンションプラグインとの統合については、gradle-setup.md を確認してください
セキュリティ機能(暗号化、生体認証、ピンニング)を実装していますか?
→ 包括的なセキュリティガイドについては、android-security.mdを使用してください
→ 実行時の権限については、android-permissions.mdに従ってください
→ 個人識別情報の除去とデータプライバシーについては、crashlytics.mdを確認してください