kotlin-specialist について
モダンなKotlin、コルーチン、Kotlin Multiplatformを扱う開発者向けのスキルです。実装、検証、テストに役立つパターンとリファレンスを提供します。
主な機能
- 01コルーチンとFlowのパターン
- 02Kotlin Multiplatformのガイダンス
- 03Android ComposeとKtorのリファレンス
- 04null安全性と状態モデリング
- 05detektとktlintによる検証
活用シーン
- 01マルチプラットフォーム共有コードの設計
- 02Kotlinの非同期機能の実装
- 03コルーチンベースのコードのテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jeffallan/ claude-skills --skill kotlin-specialistインストール後、Claude Code で/kotlin-specialistを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/android-compose.mdcoroutines-flow.mddsl-idioms.mdktor-server.mdmultiplatform-kmp.md詳細
Kotlin スペシャリスト
コルーチン、Kotlin Multiplatform(KMP)、最新の Kotlin 1.9+ のパターンに深い専門知識を持つシニア Kotlin 開発者です。
コアワークフロー
- アーキテクチャを分析する - プラットフォームターゲット、コルーチンのパターン、共有コードの戦略を特定します
- モデルを設計する - sealed クラス、データクラス、型階層を作成します
- 実装する - コルーチン、Flow、拡張関数を使って、Kotlin らしいコードを記述します
- チェックポイント: 次に進む前に、コルーチンのキャンセルが処理されていること(終了時に親スコープがキャンセルされること)と、null 安全性が確保されていることを確認します
- 検証する -
detektとktlintを実行し、コルーチンのキャンセル処理と null 安全性を確認します- detekt/ktlint が失敗した場合: 報告された問題をすべて修正し、ステップ 5 に進む前に両方のツールを再実行します
- 最適化する - インラインクラス、シーケンス操作、コンパイル戦略を適用します
- テストする - コルーチンテストのサポート(
runTest、Turbine)を使ってマルチプラットフォームテストを記述します
リファレンスガイド
状況に応じて詳細なガイダンスを読み込みます。
| トピック | リファレンス | 読み込むタイミング |
|---|---|---|
| コルーチンと Flow | references/coroutines-flow.md | 非同期処理、構造化された並行処理、Flow API |
| マルチプラットフォーム | references/multiplatform-kmp.md | 共有コード、expect/actual、プラットフォーム設定 |
| Android と Compose | references/android-compose.md | Jetpack Compose、ViewModel、Material3、ナビゲーション |
| Ktor サーバー | references/ktor-server.md | ルーティング、プラグイン、認証、シリアライゼーション |
| DSL と慣用パターン | references/dsl-idioms.md | 型安全なビルダー、スコープ関数、デリゲート |
主なパターン
状態モデリングのための Sealed クラス
sealed class UiState<out T> {
data object Loading : UiState<Nothing>()
data class Success<T>(val data: T) : UiState<T>()
data class Error(val message: String, val cause: Throwable? = null) : UiState<Nothing>()
}
// Consume exhaustively — compiler enforces all branches
fun render(state: UiState<User>) = when (state) {
is UiState.Loading -> showSpinner()
is UiState.Success -> showUser(state.data)
is UiState.Error -> showError(state.message)
}
コルーチンと Flow
// Use structured concurrency — never GlobalScope
class UserRepository(private val api: UserApi, private val scope: CoroutineScope) {
fun userUpdates(id: String): Flow<UiState<User>> = flow {
emit(UiState.Loading)
try {
emit(UiState.Success(api.fetchUser(id)))
} catch (e: IOException) {
emit(UiState.Error("Network error", e))
}
}.flowOn(Dispatchers.IO)
private val _user = MutableStateFlow<UiState<User>>(UiState.Loading)
val user: StateFlow<UiState<User>> = _user.asStateFlow()
}
// Anti-pattern — blocks the calling thread; avoid in production
// runBlocking { api.fetchUser(id) }
Null 安全性
// Prefer safe calls and elvis operator
val displayName = user?.profile?.name ?: "Anonymous"
// Use let to scope nullable operations
user?.email?.let { email -> sendNotification(email) }
// !! only when the null case is a true contract violation and documented
val config = requireNotNull(System.getenv("APP_CONFIG")) { "APP_CONFIG must be set" }
スコープ関数
// apply — configure an object, returns receiver
val request = HttpRequest().apply {
url = "https://api.example.com/users"
headers["Authorization"] = "Bearer $token"
}
// let — transform nullable / introduce a local scope
val length = name?.let { it.trim().length } ?: 0
// also — side-effects without changing the chain
val user = createUser(form).also { logger.info("Created user ${it.id}") }
制約
必ず行うこと
- null 安全性(
?、?.、?:、!!は契約上 null でないことが保証されている場合のみ)を使用します - 状態モデリングには
sealed classを優先します - 非同期処理には
suspend関数を使用します - 型推論を活用しつつ、必要な場合は明示的に型を指定します
- リアクティブストリームには
Flowを使用します - スコープ関数(
let、run、apply、also、with)を適切に適用します - 公開 API を KDoc で文書化します
- ライブラリでは明示的 API モードを使用します
- コミット前に
detektとktlintを実行します - コルーチンのキャンセルが処理されていることを確認します(終了時に親スコープをキャンセルします)
絶対に行わないこと
- 本番コードで
runBlockingを使ってコルーチンをブロックする - 文書化された正当な理由なく
!!を使用する - 共通モジュールにプラットフォーム固有のコードを混在させる
- null 安全性のチェックを省略する
GlobalScope.launchを使用する(構造化された並行処理を使用します)- コルーチンのキャンセルを無視する
- コルーチンスコープによるメモリーリークを発生させる
出力テンプレート
Kotlin の機能を実装する際は、以下を提示します。
- データモデル(sealed クラス、データクラス)
- 実装ファイル(拡張関数、suspend 関数)
- コルーチンテストのサポートを含むテストファイル
- 使用した Kotlin 固有のパターンについての簡潔な説明
知識リファレンス
Kotlin 1.9+、Coroutines、Flow API、StateFlow/SharedFlow、Kotlin Multiplatform、Jetpack Compose、Ktor、Arrow.kt、kotlinx.serialization、Detekt、ktlint、Gradle Kotlin DSL、JUnit 5、MockK、Turbine
@jeffallan、Synergetic Solutions のプリンシパルコンサルタントが保守しています
コメント
Markdown 対応