msgpack-java v0.7 の設計について

* Jackson の設計が参考になる * POJO のシリアライゼーションは msgpack の用途的にオマケ
2
Sadayuki Furuhashi @frsyuki

Q. Thanks Giving の予定は? A. MessagePack

2013-11-27 17:26:45
Sadayuki Furuhashi @frsyuki

JacksonのアノテーションAPIはかなり良くできているが、シリアライザ/デシリアライザと密結合している気がしてきた。MessagePackではAPIの設計はパクれるが、再実装が必要そう。 cc: @oza_x86

2013-11-28 10:00:59
Sadayuki Furuhashi @frsyuki

しかし非常に便利。かなりの究極手段として JsonDeserialize と JsonSerialize アノテーションが用意されているのは好印象。あるいは JsonCreator も良い設計。

2013-11-28 10:01:59
Sadayuki Furuhashi @frsyuki

staticメソッドに付与するJsonCreatorと、JsonValueの対応が使いやすい。

2013-11-28 10:02:37
Sadayuki Furuhashi @frsyuki

モデルクラスの実装が大幅に簡単になる。PlazmaDBでも使いたいけど、JSONはイヤなので、やっぱりMessagePack版が欲しい。

2013-11-28 10:03:18
わかめ@毎日猫がいる @vvakame

@frsyuki なんの話がまるでわかってないですが、API的にはJSR353を踏襲しておくとPOJOとのマッピングは別ライブラリに丸投げできる可能性があるように思います

2013-11-28 10:08:25
Sadayuki Furuhashi @frsyuki

JSONとかMessagePackは外部との接続インタフェースに使う可能性ケースが多いので、結構なケースにおいてPOJOにならない。例えば外部表現と内部表現(効率重視)は違ったりする。

2013-11-28 10:12:45
Sadayuki Furuhashi @frsyuki

ので、POJOを丸投げをできるのは嬉しいけども、結構なケースをカバーできないという点において、実装はオプションかなと思います。

2013-11-28 10:13:26
Taro L. Saito @taroleo

@oza_x86 @frsyuki そこを分離しておくのは良いですよね(と最近思うように)。pojoを丸投げするときに型のマッピングの情報も埋め込みたくなるけれど、それをmsgpackなどの仕様に入れると逆に用途が狭くなるというか

2013-11-28 11:04:30
Sadayuki Furuhashi @frsyuki

例えば今目の前にあるケースでは、Jacksonではクラスはmapにマッピングされるが、既存のREST APIがタプルでデータを返却する。こういうケースにはJsonValueとstaticメソッドにJsonCreatorが必要なのだけども、たぶんJSR-533では対応してくれない。

2013-11-28 10:23:08
Sadayuki Furuhashi @frsyuki

タプルというかJSONではarray。データがタプルで表現するかクラスで表現するかはアプリケーションの都合で、たぶんJavaだと全部クラスだけど、Rubyだと割と気軽にArrayで作ってしまうケースも多い。そんなわけでクライアントとサーバで内部表現が違うのは、たぶん結構ある。

2013-11-28 10:25:19