messagepackを使ってみよう。 その1〜はじめに〜
messagepackを利用する機会に巡りあったので、勉強の成果を備忘録としてまとめてみます。
目標
というわけで、どのレベルまで頑張るのか決めてみました。
- messagepackの原理を大まかに理解する。
- messagepackの用途を理解する。
- messagepack-rpcを使って、サーバ・クライアント間通信を実現する。Javaで。
目標を更に細かく
もう少し目標を細かく設定してみます。
ん、これくらい細かいとやりやすいかな。
では、今回は目標1の1番「messagepackとは?」まとめてみます。
messagepackとは?
まずは、messagepackって一言でいうとなんでしょう。
中の人曰く、
- MessagePackは効率の良いシリアライズライブラリです。
- MessagePack is a binary-based efficient object serialization library.
なるほど、なるほど。
MessagePackはシリアライズのための機能をまとめたライブラリなのですね。
で、バイナリにシリアライズするから効率的だと。
あれ?シリアライズってなんだっけ?
それにバイナリにすると、何に比べてどう効率的なんだっけ?
シリアライズってなんだっけ?
wikiの説明だと、
また、Javaだと、
オブジェクト直列化は、オブジェクトとそこから参照されているオブジェクトをバイトストリームにコード化します。
とあります。
ああ、ファイルを保存する前や通信する前にデータを変換するあれですね。理解理解。
バイナリにすると、何に比べてどう効率的なんだっけ?
同じシリアライズライブラリでかつ公式での比較対象として、JSONがあげられています。
まず、「シリアライズとデシリアライズの速度」について比較し、messagepackの方が優れた結果を出していることを取り上げています。
そして、その理由として「データ形式」の違いを言及しています。
JSONがテキスト形式に対して、前述したようにmessagepackはバイナリ形式。
そのため、messagepackの方がデータ量が小さくなり、その結果として高速なシリアライズとデシリアライズを可能にしているようです。
今回のまとめ
messagepackとは?
- messagepackは、オブジェクトをバイナリ形式に変換してくれるシリアライズライブラリである。
- messagepackは、オブジェクトをバイナリ形式に変換することで変換後のデータが小さくなる。そのため、帯域を消費を抑制したり、CPUの負荷を低減したりと効率的な側面を持つ。
といった感じかな?
今回は、これくらいで。時間を見つけてまた続きを書きたいと思います。
参考リンク
この記事、そしてこれからの記事を書くにあたり、中の人の記事を参考にさせてもらいました。
私のを読むよりも、ずっと参考になるのでどうぞ。
The Messagepack Project
公式サイトです。
ここのLearn Moreに基礎的な話が書いてあります。一回は読んだ方がいいです。
Introducing the MessagePack
MessagePackの概要をまとめてくれています。
MessagePack for Java 作りかけリリース!
MessagePackのJava版についてまとめてくれています。
MessagePack-RPCのプロトコル仕様(ドラフト)と実装例
MessagePack-RPCの仕様についてまとめてくれています。
高速メッセージングシステムMessagePack - 楽天テクノロジーカンファレンス2010
楽天テクノロジーカンファレンスで発表してきた際の資料を公開してくれています。
MessagePackの全体像を知るためにとっても役立ちました。
発表の録画もあるのでぜひ見てください。