「Javaの鉱脈」でFlatBuffersの記事を書きました

Last updated on

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アプリケーションで採用されたようですね。