Ruby Tips!

RubyのTipsを紹介します

オブジェクトのシリアライズとデシリアライズ

一般にオブジェクトを文字列化して保存できるようにすることをシリアライズ、逆に保存した文字列からオブジェクトを復元することをデシリアライズと呼ぶ。

Rubyでこのシリアライズとデシリアライズを担うライブラリがMarshalモジュールだ。Marshal.dumpでオブジェクトをシリアライズし、Marshal.loadでオブジェクトをデシリアライズできる。

str = Marshal.dump(Object.new) #=> "\x04\bo:\vObject\x00"
obj = Marshal.load(str) #=> Object

注意点としてMarshal.dumpでは、無名のクラス・モジュールのオブジェクト、システムがオブジェクトの状態を保持するIOなど、Procなどいくつかのインスタンス、特異メソッドを定義したオブジェクトはシリアライズできない。