シリアライズ 【serialize】 シリアル化 / 直列化 / シリアライゼーション / serialization
概要
シリアライズ(serialize)とは、複数の要素を一列に並べる操作や処理のこと。単にシリアライズといった場合には、プログラムの実行状態や複雑なデータ構造などを一つの文字列やバイト列で表現する「直列化」を指すことが多い。様々な要素を組み合わせた複合的なデータや、コンピュータで実行中のプログラムがメインメモリ上に展開しているオブジェクトなどを、一定のデータ形式や変換規則に従って文字列やバイト列に変換し、保存したり送受信できるようにすることを指す。
プログラムが処理している複雑なデータやオブジェクトなどのある瞬間の状態(スナップショット)を丸ごと固定することができ、ストレージに永続的に保存したり、ネットワークを通じて他のコンピュータに送ったりすることができる。
シリアライズされたデータを元の状態や形式に復元する作業や処理のことは「デシリアライズ」(deserialize)という。プログラムの実行状態をシリアライズした場合にはデシリアライズによってシリアライズ時点の状態から処理を再開することができる。
逐次化
マルチタスクやマルチスレッドで複数のプログラムが並行に動作している環境で、同じ資源へのアクセスが同時に行われないよう順番にアクセス要求を処理する「逐次化」の仕組みをシリアライズということがある。
ある資源への書き込みが行われている最中に別のプログラムが同時に書き込みを行うと、内容が矛盾したり破壊されてしまうことがある。このような競合を避けるため、資源にアクセスしようとするプログラムを列に並ばせるように待機させ、一つずつ順番にアクセスさせる仕組みを指す。
よく用いられる手法としては、資源の利用中に他の主体のアクセスを拒否する排他制御(exclusive control)や、資源を利用するための「列」を明示的に用意し、先頭に登録した主体から順番にアクセスさせるキューイング(queueing)などがある。
(2018.10.2更新)