kotlinx.serializationのセットアップ
プラグインを追加します
「kotlinx.serializationのセットアップ」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
kotlinx.serializationとは
kotlinx.serialization は、オブジェクトをJSONなどの形式に変換したり、形式からオブジェクトに戻したりするためのKotlin公式ライブラリです。
- 純粋なKotlinで、マルチプラットフォームに対応
- コンパイル時のコード生成(リフレクション不要)
- JetBrainsが保守
コンパイラープラグインとランタイムライブラリを組み合わせて使用します。
コンパイラープラグインを使う理由
リフレクションベースのライブラリとは異なり、kotlinx.serializationはコンパイル時にシリアライザーを生成します。
- 高速で、実行時のリフレクションコストがない
- リフレクションが制限されるKotlin/NativeやJSでも動作する
- 型安全で、コンパイラーによって検証される
そのため、依存関係を追加するだけでなく、kotlin-serializationプラグインを適用する必要があります。
プラグインを適用する(Kotlin DSL)
build.gradle.kts で、Kotlinプラグインと同じバージョンのシリアライゼーションプラグインを適用します。
plugins {
kotlin("jvm") version "2.0.0"
kotlin("plugin.serialization") version "2.0.0"
}ランタイム依存関係を追加する
プラグインはコードを生成しますが、JSONランタイムライブラリも必要です。
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
}バージョンの整合性が重要
plugin.serialization のバージョンは、Kotlinコンパイラーのバージョンと一致していなければなりません。ランタイムライブラリには独立したバージョンがあります。
- プラグインのバージョン = Kotlinのバージョン(例:2.0.0)
- ランタイムのバージョンは別(例:1.7.1)
プラグインとKotlinのバージョンが一致していないと、原因の分かりにくいビルドエラーが発生します。
その他の形式
JSONが最も一般的ですが、kotlinx.serializationは追加のアーティファクトによって、さらに多くの形式をサポートしています:
kotlinx-serialization-json— JSONkotlinx-serialization-cbor— CBORバイナリkotlinx-serialization-protobuf— Protocol Buffers
必要な形式のアーティファクトだけを追加します。
Groovy DSLでの書き方
Kotlin DSLではなくGroovyの build.gradle を使用するプロジェクトでは、設定は次のようになります。
// build.gradle (Groovy)
plugins {
id 'org.jetbrains.kotlin.jvm' version '2.0.0'
id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.0'
}
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1'
}Jsonのエントリポイント
設定が完了したら、kotlinx.serialization.json の Json オブジェクトを、エンコードとデコードの主なエントリポイントとして使用します。
import kotlinx.serialization.json.Json
val format = Json
// format.encodeToString(...) / format.decodeFromString(...)最小限の動作例
プラグインとランタイムを設定した後に使える、最小限のエンドツーエンドの例を示します。
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
@Serializable
data class City(val name: String, val population: Int)
fun main() {
val city = City("Istanbul", 15000000)
val json = Json.encodeToString(city)
println(json)
}マルチプラットフォームの設定
Kotlin Multiplatformプロジェクトでは、すべてのターゲットで共有できるように、ランタイムを commonMain に追加します。
sourceSets {
val commonMain by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
}
}
}よくある設定ミス
次のよくある問題に注意してください:
- プラグインを忘れる —
Serializer has not been foundが発生する - プラグインのバージョンがKotlinのバージョンと一致していない
- ランタイムは追加したがプラグインを追加していない(またはその逆)
encodeToStringのインポートがない
理解度チェック
kotlinx.serializationにGradleコンパイラープラグインが必要なのはなぜですか?
まとめ
次の手順でkotlinx.serializationを設定しました:
- Kotlinのバージョンに合わせて
kotlin("plugin.serialization")プラグインを適用する kotlinx-serialization-jsonランタイム依存関係を追加するJsonオブジェクトをエントリポイントとして使用する
次は、モデルクラスに @Serializable を付けます。
よくある質問
「kotlinx.serializationのセットアップ」レッスンは無料ですか?
はい。「kotlinx.serializationのセットアップ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「kotlinx.serializationのセットアップ」で何を学びますか?
プラグインを追加します ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「kotlinx.serializationのセットアップ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- kotlinx.serializationのセットアップ
- Serializableクラス
- JSONのエンコードとデコード
- カスタムシリアライザー