mcpField
A
android-kotlin

android-kotlin

github.com/alphaonedev開発47 回インストール
リポジトリ

android-kotlin について

Kotlin による Android 開発を支援するスキルです。UI 状態、非同期処理、ビルド設定を扱い、保守しやすいアプリの構築に役立ちます。

主な機能

  1. 01ViewModel による UI 状態管理
  2. 02LiveData または StateFlow でのデータ監視
  3. 03viewModelScope でのコルーチン実行
  4. 04Gradle KTS によるビルド設定
  5. 05KTX による Android API 拡張

活用シーン

  1. 01Activity や Fragment の UI 状態管理
  2. 02ネットワーク処理などの非同期実行
  3. 03Kotlin DSL によるビルドスクリプト設定

インストール

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

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill android-kotlin

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

詳細

android-kotlin

目的

このスキルでは、Android 開発で Kotlin を使用するためのガイダンスを提供します。状態管理に使う ViewModel、リアクティブなデータ処理に使う LiveData または StateFlow、非同期処理に使う viewModelScope とコルーチン、ビルド設定に使う Gradle KTS、Android 拡張機能に使う KTX など、主要なコンポーネントに焦点を当てています。堅牢で保守しやすい Android アプリの構築に役立ちます。

使用する場面

ViewModel による UI 状態の管理、コルーチンを使ったネットワーク呼び出しなどの非同期タスクの処理、LiveData または StateFlow によるデータ変更の監視、Gradle KTS によるプロジェクト設定、KTX 拡張機能によるコードの簡略化が必要な Kotlin 製 Android アプリの開発で、このスキルを使用します。ライフサイクル対応コンポーネントが必要となる、アクティビティ、フラグメント、サービスを扱う場面で適用してください。

主な機能

  • ViewModel:設定変更後も UI 関連データを保持します。androidx.lifecycle.ViewModel クラスを使用します。
  • LiveData/StateFlow:データ変更を監視します。LiveData はライフサイクルと連携し、StateFlow はリアクティブプログラミングに Kotlin フローを使用します。
  • コルーチン:viewModelScope.launch {} を使って非同期コードを管理します。スコープ付きコルーチンは ViewModel の破棄時にキャンセルされます。
  • Gradle KTS:型安全性を高めるため、build.gradle.kts などの Kotlin スクリプト形式でビルドスクリプトを記述します。
  • KTX:androidx.core の ContextCompat など、Android API の拡張関数を提供します。

使用パターン

MVVM アーキテクチャを実装するには、データとビジネスロジックを保持する ViewModel を作成し、アクティビティまたはフラグメントで監視します。非同期処理では、リークを防ぐため、必ず viewModelScope 内でコルーチンを起動します。単純な監視には LiveData を、より高度なフローには StateFlow を使用します。Gradle の設定を行う場合は、build.gradle の名前を build.gradle.kts に変更して構文を更新し、KTS に切り替えます。build.gradle.kts に依存関係を追加して KTX を組み込みます。例:implementation "androidx.core:core-ktx:1.7.0"。

主なコマンド/API

  • Gradle コマンド:デバッグには ./gradlew build --stacktrace でビルドを実行します。デバッグ APK のビルドには ./gradlew assembleDebug を使用します。
  • ViewModel API:ViewModel クラスを継承します。例:class MyViewModel : ViewModel() { val data = MutableLiveData<String>() }。
  • コルーチン API:kotlinx.coroutines をインポートします。遅延更新には viewModelScope.launch { delay(1000); data.value = "Updated" } を使用します。
  • LiveData/StateFlow:val liveData = MutableLiveData<String>() または val stateFlow = MutableStateFlow("") で作成します。
  • KTX 拡張機能:トーストを表示するには、androidx.fragment.app.Fragment の KTX にある requireContext().toast("Message") を使用します。
  • 設定形式:build.gradle.kts では、dependencies { implementation("com.android.tools.build:gradle:7.0.0") } のように依存関係を定義します。buildConfigField "String", "API_KEY", "\"$SYSTEM_ENV_API_KEY\"" のように、環境変数で API キーを設定します。

統合に関する注意

ViewModel を統合するには、build.gradle.kts に androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0 を追加し、ViewModelProvider(this).get(MyViewModel::class.java) を使って注入します。コルーチンを使用する場合は、org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0 を含め、ViewModel サブクラスで viewModelScope が使用されるようにします。StateFlow を使用する場合は、フラグメントで lifecycleScope.launchWhenStarted { viewModel.stateFlow.collect { updateUI(it) } } と組み合わせます。認証では、API キーを環境変数(例:$ANDROID_API_KEY)として設定し、BuildConfig.API_KEY からアクセスします。サポートライブラリから移行し、AndroidX との互換性を確保してください。

エラー処理

コルーチン内の例外は、try-catch ブロックで処理します。viewModelScope.launch { try { val result = apiCall() } catch (e: Exception) { data.value = "Error: ${e.message}" } }。LiveData では、ライフサイクルオーナーを指定して observe を使用し、null 値を処理します。viewModel.data.observe(this) { if (it != null) updateUI(it) else showError() }。Gradle では、--stacktrace または --debug フラグを指定してデバッグビルドを行います。例:./gradlew build --stacktrace。StateFlow のエラーを監視するには、収集時にエミッションを try-catch で囲みます。KTX 拡張関数では、必ず null を確認します。例:if (context != null) context.startActivity(intent)。

具体的な使用例

  1. LiveData を使った ViewModel:ユーザーデータ用の ViewModel を作成します。class UserViewModel : ViewModel() { val userData = MutableLiveData<String>() fun loadData() { userData.value = "Loaded" } }。アクティビティでは、次のようにします。val viewModel: UserViewModel by viewModels(); viewModel.userData.observe(this) { textView.text = it }。ボタンがクリックされたときに viewModel.loadData() を呼び出します。
  2. ViewModel 内のコルーチン:非同期でデータを取得します。class DataViewModel : ViewModel() { fun fetchData() = viewModelScope.launch { val result = withContext(Dispatchers.IO) { apiService.getData() } data.value = result } }。フラグメントで次のように監視します。viewModel.data.observe(viewLifecycleOwner) { if (it.isSuccess) showData(it) else handleError() }。

グラフ上の関係

  • 関連項目:モバイルクラスター(サブスキルとして)、kotlin-core スキル(言語基盤を共有)、android-core スキル(プラットフォーム領域が重複)、viewmodel スキル(直接依存)、coroutines スキル(非同期処理用)。
  • つながり:モバイルエコシステムと統合します。構文については kotlin に依存し、プラットフォーム固有の詳細については android と連携します。高度な機能では、viewmodel および coroutines タグと連携します。

コメント