LoginSignup
2
2

More than 3 years have passed since last update.

シリアライズ(serialize)とエンコード(encode)の違いについて

Posted at

シリアライズとエンコードの違いを学んだのでざっくりと概要まとめ。

厳密な定義というよりは用途の視点からまとめました。
間違いなどありましたら、ご指摘いただけると助かります...

エンコード

エンコードとは単なる形式変換のこと

「CDデータをMP3にエンコード」とかみたいに、単純に形式変換することです。

PHP では
json_encode($test)
でよく遭遇します。
(↑では $test データをJSON形式にに変換(エンコード)します。)

使用場面

自前のAPIとか。
たとえば、外側に「配列を配列として送りたい」時とかにJSON形式にして送ります。
JSON形式はブラウザとか、他の言語とかでも配列として解釈できるからです。(JSON形式になってると操作しやすいので嬉しい)

シリアライズ

シリアライズとは「保存するための」形式変換のこと

使用場面

配列とかオブジェクトを一旦どこかのファイルに保存しておきたいとき。
自分のファイルに配列を一時保存しときたい時とかに使います。
違う処理の時に、そのファイルから配列、オブジェクトを読み込んで使用できます。

自分が遭遇したのは、古いシステムでxmlファイルをシリアライズして保存 → 読み込む時にアンシリアライズしてxmlに戻すというものでした。
( json_encode() でできるじゃん(当時は json_encode() がなかったらしい))

プログラムA で PHP で配列を作る。これをシリアライズしたファイル「hoge」として保存。
プログラムB で「hoge」ファイルの読み込み。(文字列)
「hoge」ファイルをアンシリアライズして配列に戻す。

まとめ

シリアライズはエンコードの中でも特殊なパターンで、情報を保存可能な形にすること。
シリアライズでやってることはだいたい json_encode でできる(と思う。)

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2