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
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。