mcpField
A
android-coroutines-flow

android-coroutines-flow

github.com/midudev開発7.0k60 回インストール2 週間前に更新
リポジトリ

android-coroutines-flow について

Android 開発向けのスキルで、Kotlin のコルーチン、Flow、構造化並行処理、Dispatcher、キャンセルに安全な非同期処理を扱います。ライフサイクルを考慮した収集や ViewModel のスコープに沿って変更を導きます。

主な機能

  1. 01コルーチンスコープと Flow の指針
  2. 02ライフサイクル対応の Flow 収集パターン
  3. 03Dispatcher の注入と選択
  4. 04キャンセルに安全なエラー処理
  5. 05変更の調査と検証の手順

活用シーン

  1. 01Android ライフサイクルに沿った Flow 収集の修正
  2. 02ViewModel の非同期処理の構成
  3. 03Repository の固定 Dispatcher の置き換え
  4. 04エラー処理でキャンセルを維持

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/midudev/autoskills --skill android-coroutines-flow

インストール後、Claude Code で/android-coroutines-flowを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
official-links.md
patterns.md
scenarios.md
scripts/
run_examples.sh

詳細

Android Coroutines Flow

使用する場面

  • 次のような依頼でこのスキルを使用します:Android での Flow の収集、Android におけるコルーチンスコープの修正、ViewModel の構造化された並行処理。
  • 主な目的:コルーチン、Flow、構造化された並行処理、ディスパッチャー、キャンセルに安全な Android 非同期パイプラインを使用します。
  • 対応範囲が広がる場合は、次のスキルに引き継ぎます:
  • android-state-management
  • android-workmanager-notifications

ワークフロー

  1. 依頼を現在の Android スタック、モジュールの境界、最小サポート API レベルに照らして整理します。
  2. 既存の実装を調べ、暗黙の前提、重複するヘルパー、古くなったパターンを確認します。
  3. 正確性、読みやすさ、長期的な保守性を高める最小限の変更を適用します。
  4. 関連するショーケースアプリの手順とリポジトリのベンチマークに照らして結果を検証します。
  5. 基盤が安定してから、関連する作業を次の専門スキルに引き継ぎます。

ガードレール

  • Android と Kotlin の公式ガイダンスが独自のローカル規約と矛盾する場合は、公式ガイダンスを優先します。
  • 公開 API はシンプルで明示的なものにし、Android のライフサイクルに伴うコストを隠す巧妙な抽象化は避けます。
  • 依頼で両方が明示的に必要とされていない限り、アーキテクチャの整理とプロダクトの動作変更を混在させないでください。
  • 古いモジュールや生成コードに影響する互換性の制約は、必ず文書化してください。

アンチパターン

  • 明確な所有境界を設けずに、モジュール全体にヘルパーをばらまくこと。
  • 純粋なドメイン層やデータ層に、フレームワーク固有のコードを導入すること。
  • 変更が必要なコントラクトは 1 つだけなのに、隣接するすべてのファイルをリファクタリングすること。
  • 移行に関する注意事項を明記せず、暗黙のままにすること。

修正例

ハードコードせずにディスパッチャーを注入する
class TaskRepository(
    private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
) {
    suspend fun refresh(): List<TaskUiModel> = withContext(ioDispatcher) { loadTasks() }
}
ライフサイクルを考慮して Flow を収集する
viewLifecycleOwner.lifecycleScope.launch {
    viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
        viewModel.uiState.collect { render(it) }
    }
}
汎用的なエラー処理でキャンセルを維持する
try {
    repository.refresh()
} catch (error: CancellationException) {
    throw error
} catch (error: Exception) {
    emit(UiState.Error(error))
}

例

正常系
  • シナリオ:Compose のフィクスチャで、タスクの更新を StateFlow と共有イベントチャネルとしてモデル化します。
  • コマンド:cd examples/orbittasks-compose && ./gradlew :app:testDebugUnitTest
エッジケース
  • シナリオ:XML アクティビティの Flow で、キャンセルと構成変更から復旧します。
  • コマンド:cd examples/orbittasks-xml && ./gradlew :app:testDebugUnitTest
失敗からの復旧
  • シナリオ:コルーチンに関する依頼と、状態管理や WorkManager に関するプロンプトを区別します。
  • コマンド:python3 scripts/eval_triggers.py --skill android-coroutines-flow

完了チェックリスト

  • 実装の手順が明確かつ最小限で、適切な Android の対象箇所に対応しています。
  • 関連するサンプルコマンドとベンチマーク用プロンプトを実行するか、更新しています。
  • 依頼が関連スキルの境界をまたぐ場合は、引き継ぎを文書化しています。
  • 選択したパターンと、主な移行またはトラブルシューティングの手順を公式リファレンスで確認できます。

公式リファレンス

コメント