「Javaの鉱脈」でFlatBuffersの記事を書きました
WEB+DB PRESS の Vol.86 で、オブジェクトシリアライゼーションの記事を書いたので是非読んでくださし。
2015/4/23 発売ですので、既に購入頂いてる方も多いと思います。
電子書籍版もありますので物理的な媒体に興味がない方は PDF を買って下さい。
今回の記事における対象読者について
Java プログラマとしてそれなりに技術力が付いてくると気になるのがロギングで、そこは分かってる。ってエンジニアの皆様に向けて、じゃあシリアライゼーションどうよ?と言うのが今回の主題となっております。
記事の内容について
データベースとの I/O とかネットワーク I/O とかが遅すぎるので、シリアライゼーションフォーマットの変更による速度の改善なんつーものは、大体が妄想の類なんですけども、いざって時に対応できないのはまずいですよね。
なので記事の中でリキ入ってるのはシリアライゼーションフォーマットをどうやって選ぶか?話です。その極端な結論としてFlatBuffersの紹介ってつもりで書いております。
正直に申し上げて単純な比較表作るとProtocolBuffersマジ強いなーって気持ちになります。この記事書き始めてから気づいたんですけども、Thriftってまだ v0.9.2 なんですよね、v1.0.0 は来ないって事なのかな…。そして、ドキュメントがマジ少ない。
紹介しませんでしたが、僕として最近注目しているシリアライザは Microsoft のbondです。Java 対応が無いんでアレですけども。
MS から表立って出てきたプロダクトなんですけども Haskell ゴリゴリってトコロが興味深いです。言語の特性としては Haskell 向いてるかもしれませんねーって気持ちです、はい。
勿論、軽量で濃厚な c++のコードもありますよ。味わい深いなーって僕がオススメしたいコードはsimple_binary_impl.hですかね。
最後に
バイナリプロトコル使いこなしてるのみるとカッコよく見えるかもしれねぇけど、テキストベースプロトコルであるところの JSON にしとけーって気持ちで一杯です。
JSON ベースで何でも積んでるavroが最高のフォーマットなのでは?とか、そういう話は書いてないです。
追記
Facebook の Android アプリケーションで採用されたようですね。