android-coroutines-flow について
Android 開発者向けに、コルーチン、Flow の収集、構造化並行処理を扱うスキルです。ライフサイクルを考慮した収集やキャンセル安全性を重視し、Android と Kotlin の指針に沿った最小限の変更を促します。
主な機能
- 01ライフサイクル対応の Flow 収集
- 02ViewModel の構造化並行処理
- 03ディスパッチャーの注入
- 04キャンセル安全なエラー処理
- 05実装と検証を絞ったワークフロー
活用シーン
- 01コルーチンスコープとライフサイクルの問題修正
- 02Android 非同期パイプラインの構築
- 03キャンセルや構成変更への対応
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ krutikjain/ android-agent-skills --skill android-coroutines-flowインストール後、Claude Code で/android-coroutines-flowを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/official-links.mdpatterns.mdscenarios.mdscripts/run_examples.sh詳細
Android Coroutines Flow
使用する場面
- 次のような依頼でこのスキルを使用します:Android での Flow の収集、Android におけるコルーチンスコープの修正、ViewModel の構造化された並行処理。
- 主な目的:コルーチン、Flow、構造化された並行処理、ディスパッチャー、キャンセルに安全な Android 非同期パイプラインを使用します。
- 対応範囲が広がる場合は、次のスキルに引き継ぎます:
android-state-managementandroid-workmanager-notifications
ワークフロー
- 依頼を現在の Android スタック、モジュールの境界、最小サポート API レベルに照らして整理します。
- 既存の実装を調べ、暗黙の前提、重複するヘルパー、古くなったパターンを確認します。
- 正確性、読みやすさ、長期的な保守性を高める最小限の変更を適用します。
- 関連するショーケースアプリの手順とリポジトリのベンチマークに照らして結果を検証します。
- 基盤が安定してから、関連する作業を次の専門スキルに引き継ぎます。
ガードレール
- 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 の対象箇所に対応しています。
- 関連するサンプルコマンドとベンチマーク用プロンプトを実行するか、更新しています。
- 依頼が関連スキルの境界をまたぐ場合は、引き継ぎを文書化しています。
- 選択したパターンと、主な移行またはトラブルシューティングの手順を公式リファレンスで確認できます。
公式リファレンス
コメント
Markdown 対応