coding-kotlin
Kotlinの主要機能として、コルーチンによる非同期処理、データクラスによる型安全なデータ管理、シールドクラスによるパターンマッチング、拡張関数による既存クラスの機能拡張に対応しています。また、ビルドツールのGradleや、KMM(Kotlin Multiplatform Mobile)を使用したマルチプラットフォーム開発も実装できます。
description の原文を見る
Kotlin: coroutines, data classes, sealed classes, extension functions, Gradle, KMM multiplatform
SKILL.md 本文
coding-kotlin
目的
このスキルはAIにKotlinコードの生成、デバッグ、最適化を可能にします。非同期操作用のコルーチン、イミュータブルなデータ処理用のデータクラス、型安全な階層構造用のシールドクラス、再利用可能なコード用の拡張関数、プロジェクトビルド用のGradle、マルチプラットフォーム開発用のKMMに焦点を当てています。
使用時機
非同期タスク(ネットワーク呼び出しなど)が必要な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設定でリンクします。クラッシュを防ぐため、常に?でヌル可能性をチェックします。
一般的なコマンド/API
- Gradleコマンド:
gradle build --stacktraceを実行してコンパイルおよびデバッグします。Androidビルドの場合はgradle assembleDebugを使用します。KMMでは、build.gradle.ktsでimplementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4")のように依存関係を追加します。 - コルーチン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などの環境変数でヘッダー経由の認証を行います。
統合メモ
このスキルを統合するには、環境にKotlin SDKがインストールされていることを確認します(例: SDKMAN経由: sdk install kotlin)。Androidの場合、build.gradleにKotlinプラグインを追加します: plugins { id("org.jetbrains.kotlin.android") }。コルーチン用にminSdkを21に設定します。KMMプロジェクトでは、共通コード内のexpect fun platformFunction()と、プラットフォーム固有ファイル内のactual fun platformFunction() = ...でリンクします。環境変数をシークレット用に使用します。例えば、gradle.properties内でリポジトリアクセス用に$GRADLE_API_KEYを設定します: 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() }でプラットフォーム固有のエラーを処理し、共通コード内でキャッチします。
具体的な使用例
-
例: コルーチンを使用した非同期ネットワーク呼び出し
コルーチンをインポートしてスコープを起動します:import kotlinx.coroutines.*; suspend fun fetchData() = "Data"; fun main() = runBlocking { val result = async { fetchData() }.await(); println(result) }。これはメインスレッドをブロックせずにデータを取得します。 -
例: シールドクラスとデータクラスを使用した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クラスタ経由(coding-javaなどのJVM相互運用性に関連する他のコーディングスキルにリンクします)。
- 重複: tools-kmm(KMMマルチプラットフォーム機能経由)およびbuild-gradle(共有Gradle使用経由)。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- alphaonedev
- ライセンス
- MIT
- 最終更新
- 2026/3/13
Source: https://github.com/alphaonedev/openclaw-graph / ライセンス: MIT