シリアライズコードが一応動いたがこのままではデータ量が膨大になってしまうと思うので、最適化をすることにした。最適化というのはたとえばVector2Dなどで考えると、{"x":10,"y":10}
とシリアライズするところを[10,10]
としたり、配列などは要素単位でオブジェクトに関するメタ情報を持たず、配列全体で1つのメタ情報をもち要素ごとには持たせないとかするのである。
実装を進めているとどのオブジェクトとでも似たようなシリアライズコードとなってくるのでひょっとするとこのあたりも自動生成できるのではないかなとも思ったりもするが、それは難しそうだ。
最近コードを書いていて学んだことは、コンストラクタ関数の名前を確実に得るのは難しいということ。constructor.name
とかconstructor.toString()
で得られるかというと必ずしもそうではない。コンストラクタの定義の仕方や継承の具合で実際とは違うものが返ってきたりする。コンストラクタ関数の名前を確実に得ることができればコードもかなり簡素にできる気もするのだがそれは難しそうだ。