moai-lang-kotlin について
Kotlin 2.0以降、コルーチン、Ktor、Exposed、Spring Boot、Compose Multiplatformを扱う開発スキルです。実装とテストのパターンを示し、Context7で関連ライブラリのドキュメントを参照するための情報も含みます。
主な機能
- 01Kotlin 2.0とK2コンパイラーを網羅
- 02コルーチンとFlowの開発ガイド
- 03Ktor、Exposed、Spring Bootのパターン
- 04Compose Multiplatformとテストを網羅
- 05Context7のドキュメント対応表
活用シーン
- 01Ktorで非同期サービスやクライアントを構築
- 02Exposedによるデータベースアクセスの実装
- 03Compose MultiplatformのUI開発
- 04コルーチンとFlowのテスト作成
MCP 対応
Context7を使ってKotlin、Ktor、Exposed、コルーチンなどのドキュメントを参照する連携を説明し、ライブラリ対応表を示します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ modu-ai/ moai-adk --skill moai-lang-kotlinインストール後、Claude Code で/moai-lang-kotlinを入力して読み込まれたか確認します。
同梱ファイルreferences/examples.mdreferences/reference.md
詳細
クイックリファレンス(30秒)
Kotlin 2.0 以降に精通しており、K2 コンパイラー、コルーチン、Ktor、Compose Multiplatform と Context7 を統合できます。
自動トリガー:Kotlin ファイル(.kt、.kts)、Gradle Kotlin DSL(build.gradle.kts、settings.gradle.kts)
主な機能:
- Kotlin 2.0:K2 コンパイラー、コルーチン、Flow、シールドクラス、値クラス
- Ktor 3.0:非同期 HTTP サーバー/クライアント、WebSocket、JWT 認証
- Exposed 0.55:コルーチンをサポートする Kotlin SQL フレームワーク
- Spring Boot(Kotlin):WebFlux を使った Kotlin らしい Spring
- Compose Multiplatform:デスクトップ、iOS、Web、Android の UI
- テスト:JUnit 5、MockK、Kotest、Flow テスト用の Turbine
実装ガイド(5分)
Kotlin 2.0 の機能
コルーチンと Flow:並列処理には async を使った coroutineScope を使用します。async で遅延値を作成し、それぞれに await を呼び出して結果を取得します。結果をデータクラスにまとめます。リアクティブストリームでは、while ループ内で emit を呼び出す flow ブロックを作成します。間隔には delay を使い、flowOn でディスパッチャーを指定します。
シールドクラスと値クラス:型パラメーターを持つ sealed interface を定義します。成功を表す data class の実装と、Loading のような状態を持たないケースを表す data object を作成します。プリミティブ型をラップする値クラスに @JvmInline アノテーションを付けます。検証には require を含む init ブロックを追加します。
Ktor 3.0 サーバー
アプリケーションのセットアップ:Netty、ポート、ホストのパラメーターを指定して embeddedServer を呼び出します。ラムダ内で、Koin、セキュリティ、ルーティング、コンテンツネゴシエーションの設定関数を呼び出します。wait を true にして start を呼び出します。
Koin の設定では、Koin プラグインをインストールし、シングルトン用の single 宣言でモジュールを定義します。セキュリティの設定では、Authentication プラグインをインストールし、レルム、検証器、検証コールバックを使って JWT を設定します。コンテンツネゴシエーションの設定では、json を設定して ContentNegotiation をインストールします。
認証を使ったルーティング:Application にルーティング関数を定義します。routing ブロック内で、パスのプレフィックスに route を使います。post と call.receive を使って、認証不要のエンドポイントを作成し、リクエスト本文を受け取ります。保護されたルートには、検証器名を指定した authenticate ブロックを使います。route ブロック内で、パス/クエリパラメーターに call.parameters を使った get エンドポイントを定義します。ステータスコードとレスポンス本文を指定して call.respond を使います。
Exposed SQL フレームワーク
テーブルとエンティティ:テーブル名を指定して、LongIdTable を継承するオブジェクトを定義します。varchar、enumerationByName、timestamp 関数でカラムを宣言します。デフォルト値には uniqueIndex() と defaultExpression を使います。
エンティティクラスを作成し、LongEntity を継承して、LongEntityClass を継承するコンパニオンオブジェクトを持たせます。テーブルのカラム参照を使い、by 構文でプロパティを宣言します。エンティティをドメインモデルに変換する toModel 関数を作成します。
コルーチンを使ったリポジトリ:Database パラメーターを受け取るリポジトリ実装を作成します。Exposed の処理を dbQuery ヘルパーでラップした suspend 関数を実装します。単一のエンティティを検索するには findById を使います。挿入には Entity.new を使います。I/O ディスパッチャーを指定した newSuspendedTransaction を使い、プライベートな dbQuery 関数を定義します。
Kotlin による Spring Boot
WebFlux コントローラー:クラスに @RestController と @RequestMapping を付けます。エンドポイント用の suspend 関数を作成し、@GetMapping と @PostMapping を付けます。エンティティを変換するために map を使い、コレクションには Flow を返します。ステータスコードを指定した ResponseEntity を返します。リクエストの検証には @Valid を使います。
高度なパターン
Compose Multiplatform
共有 UI コンポーネント:ViewModel とコールバックのパラメーターを受け取る @Composable 関数を作成します。collectAsState を使い、uiState を状態として収集します。シールド状態に対する when 式を使い、Loading、Success、Error に応じて異なるコンポーザブルを表示します。
リスト項目には、Modifier.fillMaxWidth と clickable を使った Card コンポーザブルを作成します。パディングを指定した Row を使い、アバターには CircleShape でクリップした AsyncImage、テキストコンテンツには MaterialTheme.typography を使った Column を使用します。
MockK を使用したテスト
依存関係をモック化したテストクラスを作成します。宣言時にモックを使ってサービスを初期化します。コルーチンのテストには、runTest を使用する @Test を使います。非同期処理のモック化には、遅延処理を伴う coAnswers と coEvery を使用します。アサーションには assertThat を使用します。Flow のテストでは、toList を使って値を収集し、サイズと内容を検証します。
Gradle ビルド設定
plugins ブロックで、バージョン文字列を指定した kotlin("jvm") と kotlin("plugin.serialization") を使用します。ktor.plugin の ID を追加します。kotlin ブロックで jvmToolchain を設定します。dependencies ブロックに、Ktor のサーバーモジュール、kotlinx coroutines、exposed のモジュール、PostgreSQL ドライバーを追加します。テスト用の依存関係として、mockk、coroutines-test、turbine を追加します。
Context7 との連携
最新ドキュメントを参照するためのライブラリマッピング:
/ktorio/ktor- Ktor 3.0 のサーバー/クライアント向けドキュメント/jetbrains/exposed- Exposed SQL フレームワーク/JetBrains/kotlin- Kotlin 2.0 言語リファレンス/Kotlin/kotlinx.coroutines- コルーチンライブラリ/jetbrains/compose-multiplatform- Compose Multiplatform/arrow-kt/arrow- Arrow 関数型プログラミング
使用方法:context7CompatibleLibraryID、特定の領域を指定する topic 文字列、およびレスポンスのサイズを指定する tokens パラメーターを指定して、mcp__context7__get_library_docs を呼び出します。
Kotlin を使用する場面
Kotlin を使用する場面:
- Android アプリケーションを開発する場合(公式言語)
- Ktor で最新のサーバーアプリケーションを構築する場合
- 簡潔で表現力豊かな構文を好む場合
- コルーチンと Flow でリアクティブサービスを構築する場合
- マルチプラットフォームアプリケーション(iOS、デスクトップ、Web)を作成する場合
- Java との完全な相互運用性が必要な場合
代替手段を検討する場面:
- 変更を最小限に抑える必要があるレガシーな Java コードベース
- ビッグデータパイプライン(Spark を使う Scala を推奨)
相性の良いもの
moai-lang-java- Java との相互運用性と Spring Boot のパターンmoai-domain-backend- REST API、GraphQL、マイクロサービスアーキテクチャmoai-domain-database- JPA、Exposed、R2DBC のパターンmoai-quality-testing- JUnit 5、MockK、TestContainers との統合moai-infra-docker- JVM コンテナーの最適化
トラブルシューティング
K2 コンパイラー:gradle.properties に kotlin.experimental.tryK2=true を追加します。完全にビルドし直すには、.gradle ディレクトリを削除します。
コルーチン:suspend コンテキスト内で runBlocking を使用しないでください。ブロッキング処理には Dispatchers.IO を使用します。
Ktor:ContentNegotiation がインストールされていることを確認します。JWT 検証機能の設定を確認します。ルーティングの階層を確認します。
Exposed:すべての DB 操作がトランザクションコンテキスト内で実行されることを確認します。トランザクション外での遅延エンティティ読み込みに注意してください。
詳細ドキュメント
包括的なリファレンス資料:
- reference.md - エコシステム全体、Context7 マッピング、テストパターン、パフォーマンス
- examples.md - 本番環境向けコード例、Ktor、Compose、Android のパターン
最終更新日:2026-01-11 ステータス:本番環境対応(v1.1.0)