protobuf による一撃

Google の protobuf をちょっと試してみました。可変長の数値表現である Base 128 変形とか、符号付き数値をコンパクトにシリアライズするための ZigZag エンコーディング等の面白そうな詳細はさておき、まあ、普通に使えそうです(当たり前)。文字列は UTF-8 をサポート、というか std::string をコンテナと割り切って使っています。この点は AquaSKK と一緒。protobuf で自動生成されたクラスは getter/setter を備えた単純なデータ転送用なので、Object 指向社会の一級市民とは言えない。まあ、ラップして使ってくれよ、というスタンスのようです。

全体的にドキュメントがキチンと揃っていてかつ平易で読みやすい。これは素晴らしい。ただ、protobuf のようなある意味地味なライブラリを、わざわざ公開する理由はどこにあるのだろうか、という素朴な疑問がありました。Google 内部でこっそり使っているだけではいけなかったのか。

protobuf が生まれた経緯を考えれば、XML へのアンチテーゼという側面があることはわかります。XML は役に立つけど万能ではないよ、ということを Google は良くわかっている。彼らは彼らの解決すべき問題を良く吟味して、その解決策として XML はふさわしくないと結論し、protobuf を作った。How to solve it をストレートに実行している。

ひょっとすると Google がそのブランドイメージでもってさわやかに、しかし決然と「No」ということで、新鮮なショックを与える効果を狙っていたのかなぁ。猫も杓子も XML と言うが、扱いは面倒出し直感的でもないだろ? 他にもやり方はあるんだぜ、と。protobuf の拍子抜けするほど簡素な仕様を見るにつけ、そう思えてきます。あるいは、Google は意外とオープンじゃないという批判をかわすためにピックアップされた手頃なプロジェクトが protobuf だった、ということもありそうですが。

でもまあ、protobuf のようなプロジェクトが生まれるということは、Google では現実的で虚心坦懐な風土があるということですよね。そうありたいけど、これはなかなか難しいことです。

新エンジンの進捗

停滞しています。ひー。