mcpField
C
coding-kotlin

coding-kotlin

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

coding-kotlin について

coding-kotlin は、Kotlin コードの生成、デバッグ、最適化を AI 向けに支援するスキルで、Android とマルチプラットフォーム開発を対象とします。コルーチン、データクラス、シールドクラス、拡張関数、Gradle、KMM を扱います。

主な機能

  1. 01Kotlin コードの生成とデバッグ
  2. 02コルーチンによる非同期処理
  3. 03データクラスとシールドクラスでのモデル化
  4. 04拡張関数によるロジック再利用
  5. 05Gradle ビルドと KMM モジュールの管理

活用シーン

  1. 01Android の非同期ネットワーク呼び出し
  2. 02API レスポンスのモデル化と処理
  3. 03Gradle の依存関係とビルドの設定
  4. 04KMM プロジェクトでのコード共有

インストール

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

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

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

詳細

coding-kotlin

目的

このスキルは、非同期処理のためのコルーチン、不変データの扱いに適したデータクラス、型安全な階層構造を実現するシールドクラス、再利用可能なコードのための拡張関数、プロジェクトのビルドに使う Gradle、マルチプラットフォーム開発のための KMM に重点を置き、Kotlin コードの生成、デバッグ、最適化を AI が行えるようにします。

使用する場面

ネットワーク呼び出しなどの非同期タスクを必要とする Android アプリの開発、API のデータモデリング、共有ロジックを使うクロスプラットフォームプロジェクトで、このスキルを使用します。スレッドのブロックを避けるためにコルーチンを使う場合や、KMM で依存関係を管理するために Gradle を設定する場合など、パフォーマンスが重要な場面で適用してください。

主な機能

  • コルーチン:構造化並行性を使って非同期コードを処理します。ブロッキングしない I/O には kotlinx.coroutines を使用します。
  • データクラス:equals、hashCode、toString を自動生成します。data class User(val name: String, val id: Int) のように定義します。
  • シールドクラス:クラスの継承を制限し、すべてのケースを網羅する when 式を実現します。例:sealed class Result { data class Success(val data: String) : Result() }。
  • 拡張関数:継承せずに既存のクラスへメソッドを追加します。例:fun String.reverse() = this.reversed()。
  • Gradle:依存関係やタスクを記述する build.gradle.kts などのスクリプトを使ってビルドを管理します。
  • KMM:Android/iOS 間でコードを共有します。Gradle の共有モジュールを設定して使用します。

使用パターン

タスクを実行する際は、まず必要なパッケージをすべてインポートします(例:import kotlinx.coroutines.*)。非同期処理では、runBlocking { } のようなコルーチンスコープでコードをラップし、結果を待たない処理には launch、結果を待つ処理には async を使用します。データをモデル化する際は、POJO にはデータクラス、状態機械にはシールドクラスを使用します。Gradle タスクではプロジェクトのルートからコマンドを実行し、デバッグには --info などのフラグを指定します。KMM プロジェクトでは、コードを共有モジュールとプラットフォーム固有モジュールに分け、Gradle の設定を通じて連携させます。クラッシュを防ぐため、? を使った null 許容性のチェックを必ず行ってください。

主なコマンド/API

  • Gradle コマンド:コンパイルとデバッグには gradle build --stacktrace を実行します。Android ビルドには gradle assembleDebug を使用します。KMM では、implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") のように build.gradle.kts に依存関係を追加します。
  • コルーチン API:遅延実行には launch { delay(1000L); println("Task completed") } を使用します。または、並行タスクには val deferred = async { someFunction() }; deferred.await() を使用します。
  • データクラス:変更を加えたコピーを作成するには、data class Person(val name: String); val p = Person("John"); println(p.copy(name = "Jane")) のように定義して使用します。
  • シールドクラス:網羅性を確認するには、when (result) { is Result.Success -> process(data); is Result.Error -> handleError() } で処理します。
  • 拡張関数:組み込み型を拡張するには、fun Int.isEven() = this % 2 == 0; val num = 4; println(num.isEven()) のように実装します。
  • KMM のセットアップ:マルチプラットフォーム設定には、build.gradle.kts に kotlin { android { compilations.all { kotlinOptions.jvmTarget = "1.8" } } ios { binaries { framework() } } } を追加します。
  • API エンドポイント:Kotlin で外部サービスを利用するには Ktor などのライブラリを使用します。例:HttpClient().get("https://api.example.com/data") を呼び出し、ヘッダーには $KOTLIN_API_KEY のような環境変数を使って認証情報を渡します。

統合に関する注意

SDKMAN を使った sdk install kotlin などで Kotlin SDK が環境にインストールされていることを確認し、このスキルを統合してください。Android では、build.gradle に plugins { id("org.jetbrains.kotlin.android") } のような Kotlin プラグインを追加し、コルーチンを使用するには minSdk を 21 に設定します。KMM プロジェクトでは、共有モジュールを連携させるため、共通コードに expect fun platformFunction() を記述し、プラットフォーム固有のファイルに actual fun platformFunction() = ... を記述します。リポジトリにアクセスするための $GRADLE_API_KEY を gradle.properties に apiKey=$GRADLE_API_KEY として設定するなど、シークレットには環境変数を使用します。./gradlew test で統合をテストし、System.getProperty("os.name") で OS を確認してプラットフォーム間の違いに対処します。

エラー処理

コルーチンでは、常に構造化されたエラー処理を使用します。コードを try { launch { riskyOperation() } } catch (e: CancellationException) { log("Coroutine cancelled") } finally { cleanup() } で囲みます。データクラスでは、生成時に入力を検証します。例:data class User(val name: String) { init { require(name.isNotBlank()) { "Name cannot be blank" } } }。シールドクラスでは、when 式ですべてのサブクラスを処理し、UnreachableCode エラーを回避します。Gradle では、--stacktrace を付けて出力を解析し、gradle dependencies を実行して依存関係の競合など、よくある問題を確認します。KMM では、expect class PlatformException() { actual constructor() } を使ってプラットフォーム固有のエラーを処理し、共通コードで捕捉します。

具体的な使用例

  1. 例:コルーチンを使用した非同期ネットワーク呼び出し
    コルーチンをインポートしてスコープを起動します:import kotlinx.coroutines.*; suspend fun fetchData() = "Data"; fun main() = runBlocking { val result = async { fetchData() }.await(); println(result) }。これにより、メインスレッドをブロックせずにデータを取得できます。

  2. 例:シールドクラスとデータクラスを使用した API レスポンスのモデル化
    構造を定義します:sealed class ApiResult { data class Success(val data: String) : ApiResult(); data class Error(val message: String) : ApiResult() }; fun process(result: ApiResult) = when (result) { is Success -> println(result.data); is Error -> println(result.message) }。これを使うと、KMM の共有コードでレスポンスを安全に処理できます。

グラフの関係

  • 関連:coding-android(「android」などのタグを共有し、Kotlin の統合に重点を置いています)。
  • 接続:coding クラスター(JVM 相互運用性に関する coding-java など、ほかのコーディングスキルにリンクしています)。
  • 重複:tools-kmm(KMM のマルチプラットフォーム機能を通じて)および build-gradle(Gradle の共通利用に関して)。

コメント