msgpack-erlangとかその辺りのアップデート

昨年の6月くらいに論文を書こうと思っていじりまくっていたのだが、それも諦めてしばらく完全放置していた。しかし最近古橋君がMessagePackそのものの位置づけを整理してレポジトリもついでに整理しちゃうことにした挙句、Vが遊びはじめたことに刺激をうけてしばらくいじって、結果msgpack-rpc-erlangの 0.0.4 をリリースできたのでアップデートをば。

レポジトリの整理

今のところこんな感じ:

リアライザ・デシリアライザ github.com:msgpack/msgpack-erlang.git
RPC github.com:kuenishi/msgpack-rpc-erlang.git

そもそもは github.com:msgpack/msgpack.git の中のerlangというディレクトリに入れて各言語でレポジトリを共有していたんだけどもいくらなんでもなぁ、ということで早めに github.com:msgpack/msgpack-erlang.git というレポジトリに分かれていた。この時点ではシリアライザとRPCは同じレポジトリに入っていて、古きよきRPCとかIDLの世界観でいえばまあそういうもんだろうと思っていた。で、シリアライザだけ独立してもいいかぁ、ということでまずはmsgpack-erlangからRPCのコードを消して、msgpack-rpcのorganizationはまだできてないのでとりあえず自分のところに作っておいた。

リアライザの改善

コード自体は特になにもしていないけど、V氏に教えてもらったPropErのテストを追加。さっそくバグを見つけてしまうなど。

RPCの改善: 自前からcowboyベースのものへ

MessagePack-RPCには、トランスポートを適当に切り替えられるようにしたいという思想がある*1。しかしまあこの辺りの設計は面倒だし、開発にそれほど時間をかけられないので適当なサーバーフレームワークないだろうかと思っていたらcowboyというよいものを知ったので勉強がてらmsgpack_protocolを実装してみた。案外シンプルに書けてサーバー側のソースファイルはひとつだけ、クライアント側のソースファイルはふたつだけで済んでいる。他のトランスポートを追加するとどうなるか分からないけど。。。

IDLによるコードジェネレータ

Haskellで書かれたmsgpack-idl実装が最近はよくできてきた*2ので、Erlangのところも書いてみた。結構汚いのだがまあそれっぽいコードが短く生成されているのでよしとしよう。

Jubatusとつないでみた

まだ {error, 2} が出るorz

*1:今はどーなってるんだろう?

*2:割とステマに近い