【しりあらいぜーしょん】
シリアライゼーション(直列化) とは?
最終更新:
💡 データを、保存や通信に使える形へ梱包する
データ構造やオブジェクトを、保存・通信に使える文字列やバイト列へ変換する処理。読み取ってデータにする逆の処理はデシリアライゼーションと呼ぶ。
📌 このページのポイント
- データを文字列やバイト列にして保存・送信する
- JSONやProtocol Buffersなど、形式を選ぶ
- 読み取れる型や情報は、形式や設定で異なる
- 受け取る形式・内容・サイズと、復元方法を検証する
プログラムのデータを、そのまま送れないの?
具体的には、どう変わるの?
戻せば、完全に元どおり?
形式が表現できる情報だけだよ。JavaScriptのJSON.stringifyでは、オブジェクトの関数やundefinedのプロパティは省かれ、循環参照はそのまま扱えない。元のクラスやすべての振る舞いまで自動で戻ると考えず、必要なデータを決めよう。
JSONとProtocol Buffersは、どちらがいいの?
JSONは文字列として読めるので、中身を確認しやすい。Protocol Buffersは.protoで構造を定義し、生成されたコードなどでバイト列を扱う仕組みだよ。対応言語・形式の変更・扱うデータを考えて選ぶ。「外部は必ずJSON、内部は必ずprotobuf」という決まりではないんだ。
受け取ったデータを読むのは、危険なの?
まとめ:ざっくりこれだけ覚えればOK!
「シリアライゼーション」って出てきたら「データを、保存や通信に使える形に変換すること」と思えばだいたいOK!
📖 おまけ:英語の意味
「serialization」 = 直列にすること・連続化
💬 serialは「連続した・一列の」という意味。データを一列に並べて送れる形にするイメージだよ