「Kotlin Serialization ガイド」を訳してみた


#はじめに
　「[Kotlinブログ　「kotlinx.serialization 1.0 released」を翻訳してみた](https://qiita.com/guijiu/items/5e4b425b2e05be0b32ac)」に引き続き、「[Kotlin Serialization ガイド](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serialization-guide.md#kotlin-serialization-guide)」を訳してみました。
　なお、翻訳にはDeepLの力を９９％借りています。
　もし、一緒に翻訳をして下さる方がいらっしゃいましたら、コメント欄などから連絡をください。


#「[Kotlin Serialization ガイド](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serialization-guide.md#kotlin-serialization-guide)」 翻訳
Latest commit 728e220 on 24 Nov 2020版

　Kotlin Serialization は、クロスプラットフォームで、且つマルチフォーマットのデータシリアライズフレームワークで、更にオブジェクトのツリーを文字列、バイト配列、その他のシリアル表現に変換し、戻すことができます。Kotlin Serialization は Kotlin の型システムを完全にサポートしており、有効なオブジェクトのみがデシリアライズできるようになっています。
　Kotlin Serialization は単なるライブラリではありません。Kotlin コンパイラのディストリビューション自体にバンドルされているコンパイラプラグインです。ビルドの設定は[README.md](https://github.com/Kotlin/kotlinx.serialization/blob/master/README.md#setup)[(日本語)](https://qiita.com/guijiu/items/28cbe3ffdfb83c5fa484#%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97)に説明されています。プロジェクトのセットアップが完了したら、いくつかのクラスのシリアライズを開始します。


|Table of contents	|目次|
|:-----------|:------------|
|Chapter 1. [Basic Serialization](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/basic-serialization.md) (start reading here)|第1章 [基本的なシリアライゼーション](https://qiita.com/guijiu/items/4defa057b800a2348607#%E7%AC%AC1%E7%AB%A0-%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%8E%9F%E6%96%87) (ここから読み始める)|
|・[Basics](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/basic-serialization.md#basics)|・[基礎知識](https://qiita.com/guijiu/items/4defa057b800a2348607#%E7%AC%AC1%E7%AB%A0-%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%8E%9F%E6%96%87)|
|　　JSON encoding|　　JSON エンコーディング|
|　　JSON decoding|　　JSON デコーディング|
|・[Serializable classes](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/basic-serialization.md#serializable-classes)|・[シリアライゼーション クラス](https://qiita.com/guijiu/items/4defa057b800a2348607#%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-%E3%82%AF%E3%83%A9%E3%82%B9)|
|　　Backing fields are serialized|　　バッキングフィールドはシリアル化されている|
|　　Constructor properties requirement|　　コンストラクタのプロパティ要件|
|　　Data validation|　　データの検証|
|　　Optional properties|　　オプションのプロパティ|
|　　Optional property initializer call|　　オプションのプロパティイニシャライザ呼び出し|
|　　Required properties|　　必要なプロパティ|
|　　Transient properties|　　過渡特性|
|　　Defaults are not encoded|　　デフォルトはエンコードされていません。|
|　　Nullable properties|　　ヌル許容なプロパティ|
|　　Type safety is enforced|　　タイプの安全性が強化されている|
|　　Referenced objects|　　参照オブジェクト|
|　　No compression of repeated references|　　繰り返し参照の圧縮なし|
|　　Generic classes|　　ジェネリッククラス|
|　　Serial field names|　　シリアルフィールドの名前|
|Chapter 2. [Builtin Classes](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/builtin-classes.md)|第2章 [ビルトインクラス](https://qiita.com/guijiu/items/036e9169cb6c6a73214f)|
|・[Primitives](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/builtin-classes.md#primitives)|・[プリミティブ](https://qiita.com/guijiu/items/036e9169cb6c6a73214f#%E3%83%97%E3%83%AA%E3%83%9F%E3%83%86%E3%82%A3%E3%83%96)|
|　　Numbers|　　数字|
|　　Long numbers|　　長い数字|
|　　Long numbers as strings|　　文字列としての長い数字|
|　　Enum classes|　　列挙クラス|
|　　Serial names of enum entries|　　列挙エントリの連番名|
|・[Composites](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/builtin-classes.md#composites)|・[コンポジット](https://qiita.com/guijiu/items/036e9169cb6c6a73214f#%E3%82%B3%E3%83%B3%E3%83%9D%E3%82%B8%E3%83%83%E3%83%88)|
|　　Pair and triple|　　ペアとトリプル|
|　　Lists|　　リスト|
|　　Sets and other collections|　　セットとその他のコレクション|
|　　Deserializing collections|　　コレクションのデシリアライズ|
|　　Maps|　　マップ|
|　　Unit and singleton objects|　　ユニットオブジェクトとシングルトンオブジェクト|
|Chapter 3. [Serializers](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md)|第3章 [シリアライザ](https://qiita.com/guijiu/items/be7fa14c49cb7e3006dd#%E7%AC%AC3%E7%AB%A0-%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%B6-%E5%8E%9F%E6%96%87)|
|・[Introduction to serializers](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#introduction-to-serializers)|・[シリアライザの紹介](https://qiita.com/guijiu/items/be7fa14c49cb7e3006dd#%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%B6%E3%81%AE%E7%B4%B9%E4%BB%8B)|
|　　Plugin-generated serializer|　　プラグインで生成されたシリアライザ|
|　　Plugin-generated generic serializer|　　プラグインで生成された汎用シリアライザ|
|　　Builtin primitive serializers|　　組み込みのプリミティブシリアライザ|
|　　Constructing collection serializers|　　コレクション・シリアライザの構築|
|　　Using top-level serializer function|　　トップレベルのシリアライザ機能の使用|
|・[Custom serializers](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#custom-serializers)|・[カスタムシリアライザ](https://qiita.com/guijiu/items/be7fa14c49cb7e3006dd#%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%B6)|
|　　Primitive serializer|　　原始的なシリアライザ|
|　　Composite serializer via surrogate|　　サロゲートを介した複合シリアライザ|
|　　Hand-written composite serializer|　　手書き複合シリアライザ|
|　　Sequential decoding protocol (experimental)|　　逐次復号化プロトコル(実験)|
|　　Serializing 3rd party classes|　　サードパーティクラスのシリアライズ|
|　　Passing a serializer manually|　　シリアライザを手動で渡す|
|　　Specifying serializer on a property|　　プロパティでのシリアライザの指定|
|　　Specifying serializers for a file|　　ファイルのシリアライザを指定する|
|　　Custom serializers for a generic type|　　汎用型のカスタムシリアライザ|
|　　Format-specific serializers|　　フォーマット固有のシリアライザ|
|・[Contextual serialization](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#contextual-serialization)|・[コンテクストに応じたシリアル化](https://qiita.com/guijiu/items/be7fa14c49cb7e3006dd#%E3%82%B3%E3%83%B3%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A5%E3%82%A2%E3%83%AB%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BA)|
|　　Serializers module|　　シリアライザモジュール|
|・[Deriving external serializer for another Kotlin class (experimental)](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#deriving-external-serializer-for-another-kotlin-class-experimental)|・[別の Kotlin クラスのための外部シリアライザの導出 (実験的)](https://qiita.com/guijiu/items/be7fa14c49cb7e3006dd#%E3%82%B3%E3%83%B3%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A5%E3%82%A2%E3%83%AB%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BA)|
|　　External serialization uses properties|　　外部シリアライズはプロパティを使用します。|
|Chapter 4. [Polymorphism](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/polymorphism.md)|[第4章 ポリモフィズム](https://qiita.com/guijiu/items/b177808b03b59f76c8ee#%E7%AC%AC4%E7%AB%A0%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0)|
|・[Closed polymorphism](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/polymorphism.md#closed-polymorphism)|・[閉ざされたポリモフィズム](https://qiita.com/guijiu/items/b177808b03b59f76c8ee#%E9%96%89%E3%81%98%E3%81%9F%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0)|
|　　Static types|　　静的な型|
|　　Designing serializable hierarchy|　　シリアライズ可能な階層の設計|
|　　Sealed classes|　　シールドされたクラス|
|　　Custom subclass serial name|　　カスタムサブクラスのシリアル名|
|　　Concrete properties in a base class|　　基底クラスの具体的なプロパティ|
|　　Objects|　　オブジェクト|
|・[Open polymorphism](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/polymorphism.md#open-polymorphism)|・[開放的なポリモーフィズム](https://qiita.com/guijiu/items/b177808b03b59f76c8ee#%E9%96%8B%E3%81%8B%E3%82%8C%E3%81%9F%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0)|
|　　Registered subclasses|　　登録されたサブクラス|
|　　Serializing interfaces|　　インターフェイスのシリアライズ|
|　　Property of an interface type|　　インターフェース型のプロパティ|
|　　Static parent type lookup for polymorphism|　　ポリモフィズムのための静的な親型検索|
|　　Explicitly marking polymorphic class properties|　　ポリモフィズムクラスのプロパティを明示的にマークする|
|　　Registering multiple superclasses|　　スーパークラスを複数登録する|
|　　Polymorphism and generic classes|　　ポリモーフィズムとジェネリッククラス|
|　　Merging library serializers modules|　　ライブラリのシリアライザモジュールをマージ|
|　　Default polymorphic type handler for deserialization|　　デシリアライゼーションのためのデフォルトのポリモフィズム型ハンドラ|
|Chapter 5. [JSON Features](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/json.md)|[第5章 JSONの機能](https://qiita.com/guijiu/items/9bcbe7379026d88978da#%E7%AC%AC%EF%BC%95%E7%AB%A0json%E3%81%AE%E6%A9%9F%E8%83%BD)|
|・[Json configuration](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/json.md#json-configuration)|・[Json設定](https://qiita.com/guijiu/items/9bcbe7379026d88978da#json%E3%81%AE%E8%A8%AD%E5%AE%9A)|
|　　Pretty printing|　　きれいな印刷|
|　　Lenient parsing|　　簡潔な構文解析|
|　　Ignoring unknown keys|　　未知のキーを無視する|
|　　Coercing input values|　　入力値の強制|
|　　Encoding defaults|　　デフォルトのエンコーディング|
|　　Allowing structured map keys|　　構造化されたマップキーの許可|
|　　Allowing special floating-point values|　　特殊な浮動小数点値の許可|
|　　Class discriminator|　　クラス識別器|
|・[Json elements](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/json.md#json-elements)|・[Json要素](https://qiita.com/guijiu/items/9bcbe7379026d88978da#json%E8%A6%81%E7%B4%A0)|
|　　Parsing to Json element|　　Json要素へのパース|
|　　Subtypes of Json elements|　　Json要素のサブタイプ|
|　　Json element builders|　　Json要素のビルダー|
|　　Decoding Json element|　　Json要素のデコード|
|・[Json transformations](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/json.md#json-transformations)|・[Json の変換](https://qiita.com/guijiu/items/9bcbe7379026d88978da#json%E5%A4%89%E6%8F%9B)|
|　　Array wrapping|　　配列のラッピング|
|　　Array unwrapping|　　配列のアンラップ|
|　　Manipulating default values|　　デフォルト値の操作|
|　　Content-based polymorphic deserialization|　　コンテンツベースのポリモーフィックデシリアライゼーション|
|　　Under the hood (experimental)|　　ボンネットの下（実験)|
|　　Maintaining custom JSON attributes|　　カスタムJSON属性のメンテナンス|
|Chapter 6. [Alternative and custom formats](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/formats.md) (experimental)|第6章 [書き方の工夫 代替フォーマットとカスタムフォーマット](https://qiita.com/guijiu/items/9a312d54b20baffff3bf#%E7%AC%AC%EF%BC%96%E7%AB%A0%E4%BB%A3%E6%9B%BF%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A8%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E5%AE%9F%E9%A8%93)(実験) |
|・[CBOR (experimental)](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/formats.md#cbor-experimental)|・[CBOR (実験)](https://qiita.com/guijiu/items/9a312d54b20baffff3bf#cbor%E5%AE%9F%E9%A8%93)|
|　　Ignoring unknown keys|　　じっけん|
|　　Byte arrays and CBOR data types|　　未知のキーを無視する|
|・[ProtoBuf (experimental)]()|・[ProtoBuf (実験)](https://qiita.com/guijiu/items/9a312d54b20baffff3bf#%E3%83%97%E3%83%AD%E3%83%88%E3%83%90%E3%83%83%E3%83%95%E3%82%A1-%E5%AE%9F%E9%A8%93)|
|　　Field numbers|　　フィールドの番号|
|　　Integer types|　　整数型|
|　　Lists as repeated fields|　　繰り返しフィールドとしてのリスト|
|・[Properties (experimental)](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/formats.md#protobuf-experimental)|・[Properties (実験)](https://qiita.com/guijiu/items/9a312d54b20baffff3bf#%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E5%AE%9F%E9%A8%93)|
|・[Custom formats (experimental)](https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/formats.md#custom-formats-experimental)|・[Custom formats (実験)](https://qiita.com/guijiu/items/9a312d54b20baffff3bf#%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88-%E5%AE%9F%E9%A8%93)|
|　　Basic encoder|　　基本的なエンコーダ|
|　　Basic decoder|　　基本デコーダ|
|　　Sequential decoding|　　逐次復号化|
|　　Adding collection support|　　コレクションサポートの追加|
|　　Adding null support|　　nullサポートの追加|
|　　Efficient binary format|　　効率的なバイナリ形式|
|　　Format-specific types|　　フォーマット固有の型|