Agent Skills by ALSEL
汎用ソフトウェア開発⭐ リポ 5品質スコア 67/100

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() }でプラットフォーム固有のエラーを処理し、共通コード内でキャッチします。

具体的な使用例

  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クラスタ経由(coding-javaなどのJVM相互運用性に関連する他のコーディングスキルにリンクします)。
  • 重複: tools-kmm(KMMマルチプラットフォーム機能経由)およびbuild-gradle(共有Gradle使用経由)。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
alphaonedev
リポジトリ
alphaonedev/openclaw-graph
ライセンス
MIT
最終更新
2026/3/13

Source: https://github.com/alphaonedev/openclaw-graph / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: alphaonedev · alphaonedev/openclaw-graph · ライセンス: MIT