本文へスキップ

シリアライズとは?

しりあらいず

シリアライズとは、プログラム内のデータ構造やオブジェクトを、保存や通信に適したバイト列や文字列の形式に変換する処理のことです。

シリアライズ直列化)とは、プログラムが扱うオブジェクト配列クラスインスタンスなどの複雑なデータ構造を、ファイルへの保存やネットワーク経由の送受信が可能なバイト列・テキスト列に変換する処理です。逆の操作、すなわちシリアライズされたデータを元のデータ構造に復元する処理は「デシリアライズ」と呼ばれます。

シリアライズが必要になる理由は、プログラムのメモリ上に存在するオブジェクトは、ポインタや参照を多用した複雑な構造であり、そのままでは外部に持ち出すことができないからです。一方、ファイルやネットワークパケットは連続したバイト列として扱われるため、構造を「直列化」して表現する必要があります。

代表的なシリアライズ形式には以下のものがあります。

  • JSON:人間が読みやすいテキスト形式。WebAPIで広く利用
  • XML:タグ構造のテキスト形式。設定ファイルやSOAPで使用
  • Protocol Buffers(protobuf):Googleが開発したバイナリ形式。高速・コンパクト
  • MessagePack:JSONをバイナリ化した形式で、処理効率が高い
  • pickle(Python固有):Pythonオブジェクトをそのままバイト列に変換

シリアライズはAPIの設計、データベースへのオブジェクト保存、キャッシュの実装、プロセス間通信など、ソフトウェア開発の広い場面で用いられます。セキュリティ面では、信頼できないソースからのデシリアライズは任意コード実行の脆弱性につながる場合があり、入力の検証が重要です。

使い方・例文

例えば、PythonのオブジェクトをJSON文字列に変換してHTTPレスポンスとして返したり、ゲームのセーブデータをファイルに書き出したりする処理がシリアライズにあたります。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語