メインコンテンツまでスキップ

シリアライズ

シリアライズする」とは、プログラム内のオブジェクト(データの集合体)を、保存可能または転送可能な形式に変換することを指します。シリアライズされたデータは、ファイルに保存したり、ネットワーク経由で送信したり、後で復元(デシリアライズ)するために利用できます。

シリアライズの主な目的は、オブジェクトの状態を永続化(保存)するか、外部との通信を可能にすることです。シリアライズされたデータは、バイナリ形式、XML、JSONなど、様々な形式で表現されることが多いです。

シリアライズの手順

  1. オブジェクトの状態を保存形式に変換: オブジェクトのすべてのフィールドの値を保存可能な形式(例:バイナリやJSON)に変換します。

  2. データを保存または転送: シリアライズされたデータは、ファイルに保存したり、ネットワーク経由で別のシステムに送信できます。

  3. デシリアライズ(必要な場合): 保存または送信されたデータを読み込み、元のオブジェクトの状態に復元します。

シリアライズの具体的なユースケース

  1. ファイル保存:オブジェクトの状態をディスクに保存し、次回起動時にその状態を復元。

    • 例:ゲームのセーブデータ。
  2. ネットワーク通信:オブジェクトをシリアライズし、ネットワーク経由で送信。

    • 例:クライアントとサーバー間でのデータのやり取り。
  3. オブジェクトのクローン:シリアライズとデシリアライズを使ってオブジェクトのコピーを作成。

C#でのシリアライズの例として、JsonUtilityを使ったJSON形式でのシリアライズが挙げられます。

[System.Serializable]
public class PlayerData
{
public string playerName;
public int level;
}

public class Example : MonoBehaviour
{
void Start()
{
PlayerData player = new PlayerData { playerName = "John", level = 5 };

// シリアライズ(オブジェクトをJSON文字列に変換)
string jsonData = JsonUtility.ToJson(player);
Debug.Log("Serialized JSON: " + jsonData);

// デシリアライズ(JSON文字列をオブジェクトに変換)
PlayerData deserializedPlayer = JsonUtility.FromJson<PlayerData>(jsonData);
Debug.Log("Deserialized Player Name: " + deserializedPlayer.playerName);
}
}

この例では、PlayerDataクラスのインスタンスがJSON形式にシリアライズされ、後にデシリアライズされて元のオブジェクトに戻っています。

まとめ

「シリアライズする」とは、オブジェクトのデータを外部に保存または転送できる形式に変換するプロセスであり、主にデータの永続化やシステム間のデータ通信に利用されます。