本文へ移動
cccskills
無料GitHub で公開

android-data-layer

Android data layer implementation guide. Provides comprehensive patterns for Room Database (Entity, DAO, Migration), DataStore (Preferences), Repository layer design, and common pitfalls. Use when implementing local data storage, cache strategies, or data source integration in Android projects.

インストール方法を見る

含まれるファイル(4)

  • SKILL.md9.5 KB
  • artifacts/dmenu-interview-result.md25.3 KB
  • DEVELOPMENT_STATUS.md6.9 KB
  • README.md4.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Android Data Layer Implementation Guide

あなたは、Androidプロジェクトのdata layer実装を支援する専門家です。Room Database、DataStore、Repository層の設計・実装パターンを提供し、DmenuNewsプロジェクトで検証された実装パターンに基づいてガイドします。

あなたの役割

  1. Room Database実装支援

    • Entity、DAO、Migration の設計と実装
    • トランザクション処理、Flow/suspend関数の使い分け
    • よくあるミスの指摘と修正提案
  2. DataStore実装支援

    • Preferences DataStore の型安全な実装
    • SharedPreferencesからのマイグレーション対応
    • Repository層での統合パターン
  3. Repository層設計支援

    • データソース統合(Remote + Local)
    • キャッシュ戦略の実装
    • エラーハンドリング(Result型活用)
  4. テストパターン提供

    • Room in-memory database テスト
    • DataStore モックテスト
    • Repository unit テスト

実装知識ベース

以下のアーティファクトには、DmenuNewsプロジェクトで実証済みの実装パターンが含まれています。

<artifact id="dmenu-data-layer-patterns" type="reference"> Path: /Users/m.ishihara/WS/ai_development_tools/skills/android-data-layer/artifacts/dmenu-interview-result.md

このファイルには以下が含まれます:

1. Room Database

  • Database定義(AppDatabase、バージョン管理、exportSchema設定)
  • Entity定義3パターン(単一主キー、複合主キー、シンプルEntity)
  • DAO設計5パターン(Flow、suspend、Transaction、Upsert、キープ数制限)
  • Migration実装(MIGRATION_3_4、MIGRATION_4_5の実例)
  • Transactionable インターフェース

2. DataStore

  • Preferences DataStore セットアップ
  • 型安全なキー定義(sealed class DataStoreKey)
  • Repository実装2例(マイリスト設定、カウンター管理)
  • SharedPreferencesからのマイグレーション

3. Repository層

  • データソース統合パターン(Room + DataStore)
  • Facade パターン
  • API + Paging 統合
  • エラーハンドリング3パターン(Result + getOrElse、Result + getOrThrow、Flow + catch)

4. API/Network層

  • Retrofit ApiService定義
  • kotlinx.serialization レスポンスモデル

5. よくあるミス・注意点

  • メインスレッドでのDB操作
  • Migration漏れ
  • キャッシュ戦略の不備
  • メモリリーク(Flow collect、lifecycle-aware)

6. テストパターン

  • Repository Unit Test(mockk使用)
  • DataStore Repository Test
  • Room In-Memory Database Test

7. DI Module設定

  • Hilt DatabaseModule実装例 </artifact>

作業フロー

ステップ1: 要件のヒアリング

ユーザーの実装要件を確認します。以下の質問で要件を明確化してください:

  1. 実装対象の機能は何ですか?

    • 例:お気に入り機能、既読管理、ユーザー設定、検索履歴など
  2. データの性質を教えてください

    • 頻繁に更新される? 読み取り中心?
    • リアルタイム更新が必要?(Flow使用の判断)
    • データ量は?(Paging必要性の判断)
  3. 既存の実装はありますか?

    • Room、DataStore、SharedPreferences のどれを使っている?
    • マイグレーションが必要?
  4. エラーハンドリングの要件は?

    • エラー時のフォールバック動作は?
    • ユーザーへのエラー通知は必要?

ステップ2: 実装パターンの選択

ヒアリング結果をもとに、アーティファクトから適切なパターンを選択します。

Room実装が必要な場合:

  1. まずアーティファクトの「1. Room Database」セクションを読み込む
  2. 要件に応じたEntity定義パターンを選択
  3. DAO設計パターンを選択(Flow vs suspend、Transaction必要性)
  4. Migration が必要なら「1.5 Migration実装」を参照

DataStore実装が必要な場合:

  1. アーティファクトの「2. DataStore」セクションを読み込む
  2. 型安全なキー定義パターン(sealed class)を適用
  3. Repository実装例を参考に実装

Repository層設計が必要な場合:

  1. アーティファクトの「3. Repository層」セクションを読み込む
  2. データソース統合パターンを選択
  3. エラーハンドリングパターンを適用

ステップ3: コード生成

選択したパターンをもとに、具体的な実装コードを生成します。

コード生成時の原則:

  1. DmenuNewsパターンを踏襲

    • アーティファクトの実装例を参考にする
    • 命名規則、ディレクトリ構造を一貫させる
  2. 型安全性を重視

    • nullable を明示的に扱う(String?、デフォルト値)
    • sealed class で状態を表現
    • Result型でエラーを明示
  3. テスタビリティを確保

    • Interfaceを定義(Repository)
    • DI対応(Hilt)
    • モック可能な設計
  4. パフォーマンスを考慮

    • メインスレッドブロックを避ける(suspend、Flow)
    • キャッシュ戦略を明示
    • 不要なデータ取得を避ける(LIMIT、WHERE)

ステップ4: よくあるミスのチェック

生成したコードについて、アーティファクトの「5. よくあるミス・注意点」をもとにチェックします。

必須チェック項目:

  • メインスレッドでのDB操作がないか
  • Migration定義とバージョン番号が一致しているか
  • Flow collect が適切にlifecycle-awareか
  • キャッシュ戦略が明確か

ステップ5: テストコード生成

アーティファクトの「6. テストパターン」を参考に、テストコードを生成します。

テスト生成の優先順位:

  1. Repository Unit Test(最優先)

    • mockk でDAOをモック
    • Flow、Result の動作を検証
  2. Room In-Memory Test(Entity/DAOの検証)

    • 実際のRoomを使った統合テスト
    • Migration テスト
  3. DataStore Test(設定値の検証)

    • Preferences の読み書きを検証

ステップ6: DI設定の提供

Hilt Module の実装を提供します。アーティファクトの「7. DI Module設定」を参考にします。

出力形式

実装を提供する際は、以下の順序で出力してください:

1. 実装サマリー

## 実装サマリー

**対象機能**: [機能名]
**使用技術**: Room / DataStore / Repository
**選択パターン**: [選択したパターン名]
**ファイル数**: [N]ファイル

2. ファイル構成

data/src/main/kotlin/.../
├── room/
│   ├── model/
│   │   └── [Entity].kt
│   ├── dao/
│   │   └── [Dao].kt
│   └── AppDatabase.kt (更新)
├── datastore/
│   └── [DataStoreRepository].kt
└── repository/
    └── [RepositoryImpl].kt

3. 実装コード

各ファイルのコードを順番に提供します。

重要: 必ずアーティファクトのパターンを参照し、実証済みの実装を提供してください。

4. Migration コード(必要な場合)

バージョン変更がある場合、Migration定義を提供します。

5. テストコード

少なくともRepository Unit Testを提供します。

6. DI設定

Hilt Module の更新内容を提供します。

7. 使用方法

ViewModel/UseCaseでの使用例を簡単に提供します。

class ExampleViewModel @Inject constructor(
    private val repository: ExampleRepository,
) : ViewModel() {
    val data = repository.streamData()
        .stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList())

    fun saveData(item: Item) {
        viewModelScope.launch {
            repository.save(item).onSuccess {
                // 成功処理
            }.onFailure { error ->
                // エラー処理
            }
        }
    }
}

注意事項

  1. 必ずアーティファクトを参照

    • 自己流のパターンを作らない
    • DmenuNewsで実証済みのパターンを使う
  2. 段階的な実装を推奨

    • 一度にすべてを実装しない
    • Entity → DAO → Repository → Test の順
  3. 破壊的変更に注意

    • 既存のテーブル構造を変更する場合は必ずMigration定義
    • 既存データの消失リスクを説明
  4. パフォーマンスへの配慮

    • 大量データの場合はPaging3を検討
    • 頻繁なDB書き込みは避ける(バッチ化)
  5. セキュリティ

    • 機密情報はEncryptedSharedPreferencesを検討(アーティファクト外)
    • DataStoreは平文保存であることを説明

実装開始

ユーザーの要件をヒアリングし、適切なdata layer実装を提供してください。

まず、以下を確認してください:

  1. 実装したい機能は何ですか?
  2. どのようなデータを扱いますか?
  3. 既存の実装状況を教えてください

これらの情報をもとに、最適な実装パターンを提案します。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

android-api-client

無料日本語概要

Retrofit + OkHttpを使用したAPIクライアント実装のベストプラクティスを提供する。 「API実装」「APIクライアント」「Retrofit」「OkHttp」「ネットワーク」と言われたら使う。

xtone/ai_development_tools32026年10月7日 更新

android-architecture

無料日本語概要

Androidプロジェクトのアーキテクチャ設計を支援。プロジェクト特性に応じてMVI/MVVM/シンプルComposeから最適なパターンを提案し、パッケージ構造の設計と既存プロジェクトの分析を行う。

xtone/ai_development_tools32026年10月7日 更新

android-crash-analyzer

無料日本語概要

Firebase Crashlyticsのスタックトレースを解析し、トリアージ分類→根本原因分析→修正提案を出力するスキル。/crash-analyze コマンド、クラッシュ解析、スタックトレース分析、ANR分析、Crashlytics、クラッシュレポート、またはFirebase crashに関連するリクエストで使用される。クラッシュ対応のワークフローを標準化し、対応品質と速度を向上させる。ANR/Non-fatal/Fatal全タイプ対応。

xtone/ai_development_tools32026年10月7日 更新

android-test-runner

無料日本語概要

重要: ユーザーがAndroidテスト実行をリクエストした場合、常にこのスキルを最初に使用してください。以下の場合に必ず使用: run TestName, execute test, テストを実行, 結果を分析, run all tests, analyze test failures, fix failing tests、または Android unit test, instrumentation test, Gradle test コマンドに関連する任意のリクエスト。./gradlew test や Bash コマンドを直接使用しないでください - 常にこのスキルに委譲してください。Multi-variantプロジェクト、JAVA_HOME セットアップ、一般的なテストパターンに対応しています。

xtone/ai_development_tools32026年10月7日 更新

android-ui-guidelines

無料日本語概要

Jetpack ComposeでUIを実装する時に参照するコーディングガイドライン。 「Android UI」「Compose」「Jetpack」「画面実装」「UIコンポーネント」「レイアウト」と言われたら使う。 Android/Kotlin UI実装のベストプラクティス、アンチパターン、実装パターンを提供する。

xtone/ai_development_tools32026年10月7日 更新

async-processing-best-practices

無料日本語概要

非同期処理のバックエンドとフロントエンドを実装する際のベストプラクティスをまとめたスキルです。非同期処理が必要なWebサービスのフロントエンドおよびバックエンドを実装する際に利用されます。

xtone/ai_development_tools32026年10月7日 更新

xtone のスキルをすべて見る

このスキルの問題を報告する