0Pricing
Kotlin Academy · レッスン

Serializableクラス

モデルにアノテーションを付けます

「Serializableクラス」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

@Serializableアノテーション

クラスをシリアライズ可能にするには、@Serializable を付けます。するとコンパイラープラグインが、そのクラス用のシリアライザーを生成します。

import kotlinx.serialization.Serializable

@Serializable
data class User(val id: Int, val name: String)

データクラスでの利用

どのクラスにもアノテーションを付けられますが、モデルにはデータクラスを使うのが一般的です。equals、hashCode、toString が自動生成されるためです。

コンストラクターのすべてのプロパティがシリアライズされるフィールドになります。

デフォルト値

デフォルト値を持つプロパティは、デコード時に省略可能になります。JSONに含まれていない場合は、デフォルト値が使用されます。

@Serializable
data class Config(
    val host: String,
    val port: Int = 8080,
    val secure: Boolean = false
)

Nullableプロパティ

Nullable型はJSONの null に対応します。デフォルト値のないNullableプロパティは、JSONでは必須です(ただし値はnullにできます)。

@Serializable
data class Profile(
    val name: String,
    val bio: String? = null
)

@SerialNameでフィールド名を変更する

JSONのフィールド名は、Kotlinの命名規則と異なることがよくあります。@SerialName を使って対応付けます。

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class Account(
    @SerialName("user_id") val userId: Int,
    @SerialName("full_name") val fullName: String
)

@Transientでプロパティを無視する

プロパティに @Transient を付けると、シリアライゼーションの対象外になります。Transientプロパティには必ずデフォルト値を指定する必要があります。

import kotlinx.serialization.Transient
import kotlinx.serialization.Serializable

@Serializable
data class Session(
    val token: String,
    @Transient val cachedAt: Long = 0L
)

ネストしたシリアライズ可能なクラス

シリアライズ可能なクラスには、ほかのシリアライズ可能なクラスを含められます。プラグインが構造全体を自動的に処理します。

@Serializable
data class Address(val city: String, val zip: String)

@Serializable
data class Company(val name: String, val address: Address)

モデルでのコレクション

List、Set、Map などの標準コレクションは、要素がシリアライズ可能であれば、そのままシリアライズできます。

@Serializable
data class Team(
    val name: String,
    val members: List<String>,
    val scores: Map<String, Int>
)

Enumをサポートする

Enumクラスには @Serializable を付けられ、デフォルトでは名前にシリアライズされます。エントリの名前を変更するには、各エントリに @SerialName を使用します。

@Serializable
enum class Role {
    @SerialName("admin") ADMIN,
    @SerialName("user") USER
}

必須と省略可能のまとめ

プロパティは、デフォルト値がない限りJSONで必須です。主なルールは次のとおりです:

  • デフォルト値なし → 必須
  • デフォルト値あり → 省略可能
  • @Transient → 無視される。デフォルト値が必要
  • デフォルト値のないNullable → 必須だがnullにできる

直接シリアライズできないもの

組み込みシリアライザーのない型(例:java.util.Date、java.time.Instant、UUID)には、後で学ぶカスタムシリアライザーが必要です。

カスタムシリアライザーなしでこれらをシリアライズしようとすると、コンパイルエラーになります。

理解度チェック

@Transient について正しい説明はどれですか?

まとめ

モデルにアノテーションを付ける方法を学びました:

  • クラスに @Serializable を付ける
  • デフォルト値によってフィールドが省略可能になる
  • @SerialName でJSONキーの名前を変更する
  • @Transient でフィールドを除外する(デフォルト値が必要)

次は、JSONを実際にエンコードおよびデコードします。

よくある質問

「Serializableクラス」レッスンは無料ですか?

はい。「Serializableクラス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「Serializableクラス」で何を学びますか?

モデルにアノテーションを付けます ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Serializableクラス」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. kotlinx.serializationのセットアップ
  2. Serializableクラス
  3. JSONのエンコードとデコード
  4. カスタムシリアライザー
← Kotlin Academyに戻る