🔄

シリアライズ vs デシリアライズ 迷わない完全攻略✨

2025/03/10に公開

プログラミングにおいてデータを扱う際に「シリアライズ」「デシリアライズ」「マーシャル」「アンマーシャル」という言葉を聞いて、「これどっちだっけ?」と思ったことありませんか?🙋‍♀️

この記事では、初心者でも直感的に理解できる覚え方 や、Go言語の具体例を交えながら、これらの概念をしっかりマスターできる方法を紹介します。🚀

🌀 シリアライズ vs デシリアライズ

シリアライズ(Serialize)って?

シリアライズとは、「プログラム内のデータを保存・転送可能な形式に変換すること」です。

例えば、構造体やクラスのデータをJSONやバイナリに変換することが該当します。

イメージ例

シリアライズを「データをフラットにする」と考えてみましょう。例えば:

📦 オブジェクト(箱) → 📜 JSONやバイナリ(フラットな形式)

デシリアライズ(Deserialize)って?

デシリアライズとは、「フラットなデータを元の構造に戻す」操作です。

🛠️ マーシャル vs アンマーシャル

Go言語でおなじみの json.Marshal と json.Unmarshal についても解説します!

マーシャル(Marshal)

「データを送信・保存可能な形式に準備する」こと。Goでは、Marshalを使って構造体をJSONに変換します。

覚え方

  • マーシャル = 整列:「データを整えて送り出す準備をする」イメージ!

アンマーシャル(Unmarshal)

マーシャルしたデータを「元の構造体に戻す」操作です。Goの Unmarshal がこれに該当します。

📊 シリアライズとマーシャルの関係を図解で理解!

以下の図は、シリアライズとマーシャルをつなげて視覚化したものです。

  • マーシャル: オブジェクトをJSONやYAML形式に変換する操作。
  • シリアライズ: JSONやYAML形式をバイナリに変換して転送可能な形にする操作。
  • アンマーシャル: JSONやYAMLを元のデータ構造に戻す操作。
  • デシリアライズ: バイナリ形式からJSONやYAMLに復元する操作。

4. コード例で学ぶ👩‍💻

以下にGo言語のコード例を示します。

マーシャルとシリアライズの例

package main

import (
	"encoding/json"
	"fmt"
)

type Fruit struct {
	Name  string `json:"name"`
	Color string `json:"color"`
	Price int    `json:"price"`
}

func main() {
	// 構造体を定義
	fruit := Fruit{
		Name:  "Apple",
		Color: "Red",
		Price: 150,
	}

	// マーシャル(構造体 → JSON)
	jsonData, _ := json.Marshal(fruit)
	fmt.Println("マーシャル:", string(jsonData)) // {"name":"Apple","color":"Red","price":150}

	// アンマーシャル(JSON → 構造体)
	var newFruit Fruit
	_ = json.Unmarshal(jsonData, &newFruit)
	fmt.Printf("アンマーシャル: %+v\n", newFruit) // {Name:Apple Color:Red Price:150}
}

一瞬で覚える方法まとめ!

用語 何をする? 覚え方
シリアライズ データを保存・転送形式に変換 Stream(流れる)
マーシャル JSONやYAML形式に整える 整列して送り出す準備をする

🎉まとめ

データ変換は、プログラム内で頻繁に行われる基本操作ですが、用語が混乱しやすいですよね。でも、今回の覚え方を使えば、直感的に思い出せるはずです!

これであなたもシリアライズ・デシリアライズマスター!Happy Coding 🌟

Discussion