【シリアライズ】と【デシリアライズ】の違いとは?例文付きで使い方や意味をわかりやすく解説
シリアライズとデシリアライズの分かりやすい違い
「シリアライズ」は、プログラムの中にあるデータを、保存したり送ったりできる一続きの形(文字列やバイト列)に変換すること。「デシリアライズ」は、その一続きの形を読み取って、プログラムが扱えるデータへ戻すこと。
向きが逆の一対の操作で、書き出しがシリアライズ、読み込みがデシリアライズにあたる。保存や送信の前にシリアライズし、受け取った側がデシリアライズして使う、という流れで対になって現れる。
シリアライズとは?
シリアライズは、日本語で直列化とも呼ばれ、プログラムが持っているデータ構造を、ファイルに保存したり通信で送ったりできる一続きの形へ変換する処理を指す。プログラムの中のデータは、あちこちの場所を指し示す形で保持されていることが多く、そのままの姿では外へ持ち出せない。
そこで、決められた書式に沿って並べ直す。書式には、人が読める文字列の形式もあれば、機械が扱いやすいバイト列の形式もある。
どの項目を含め、どの項目を含めないかは設計しだいで、鍵やパスワードのように外へ出すべきでない値を含めない配慮も必要になる。書き出した後で項目が増減することもあるため、古い形のデータでも読めるようにしておくかどうかを、あらかじめ決めておくと後々の手戻りが減る。
シリアライズの例文
- ( 1 ) 設定の内容をシリアライズして、ファイルに保存する。
- ( 2 ) 通信で送る前に、データをシリアライズする。
- ( 3 ) シリアライズの書式を決めておかないと、受け手が読めない。
- ( 4 ) パスワードは、シリアライズの対象から外している。
- ( 5 ) 大きなデータのシリアライズには、それなりの時間がかかる。
- ( 6 ) 人が読める形式でシリアライズすると、後の確認が楽になる。
シリアライズの会話例
デシリアライズとは?
デシリアライズは、シリアライズされた一続きのデータを読み取り、プログラムが扱えるデータ構造へ復元する処理を指す。ファイルから読み込んだ内容や、通信で受け取った本文を、元の形へ組み立て直す場面で使われる。
復元にあたっては、受け取った内容が期待どおりの形かを確かめることが重要で、想定外の値や壊れたデータをそのまま組み立てようとすると、処理が異常終了したり、意図しない動作を招いたりする。外部から届いたデータを無条件に復元する作りは攻撃の入り口になり得るため、扱う型を限定する、内容を検証してから復元する、といった備えが求められる。
読み込む側は、書き出した側と同じ書式を前提にしている点も見落とせない。書式が食い違えば、正しいデータであっても組み立てられない。
デシリアライズの例文
- ( 1 ) 受け取った本文をデシリアライズして、中身を取り出す。
- ( 2 ) 壊れたデータをデシリアライズしようとして、処理が落ちた。
- ( 3 ) デシリアライズの前に、形式が正しいかを検証する。
- ( 4 ) 外部から届いたデータの無条件なデシリアライズは避ける。
- ( 5 ) 保存しておいた設定を、起動時にデシリアライズして読み込む。
- ( 6 ) 項目が増えても、古いデータをデシリアライズできるようにしておく。
デシリアライズの会話例
シリアライズとデシリアライズの違いまとめ
シリアライズはプログラム内のデータを保存・送信できる一続きの形に変換すること、デシリアライズはその形を読み取って元のデータ構造へ戻すこと。向きが逆の一対の操作で、書き出す側と読み込む側で対になって現れる。語の使い分けに迷うことは少ないが、実務上の勘所は左右で異なる。
シリアライズでは、何を含めて何を含めないか、どの書式を選ぶかが問われる。デシリアライズでは、届いたものが期待どおりかを確かめてから復元することが問われる。外部から受け取ったデータの復元は、検証を欠くと不具合や攻撃の糸口になり得る。
書き出しは持ち出す作業、読み込みは受け入れる作業。そう捉えると、どちらで何に注意すべきかが見えてくる。
シリアライズとデシリアライズの読み方
- シリアライズ(ひらがな):しりあらいず
- シリアライズ(ローマ字):shiriaraizu
- デシリアライズ(ひらがな):でしりあらいず
- デシリアライズ(ローマ字):deshiriaraizu