ただ readme に従ってただけで特に困ることなく使えてしまったので大して書くことがない罠。
- protobuf - Protocol Buffers - Google's data interchange format - Google Project Hosting
- XMLよりもシンプル! Google、独自記述言語によるデータ交換ツールを公開 | マイナビニュース
Cygwinでやろうと思ったら、Cygwin版の Python だと駄目らしい?*1ので素直にWindowsで。って、別に gcc(Cygwin) と Python(win32)でも良かったか。まぁ、いいや。
Java は Maven 入れるのがめんどくさかったので触ってない。思わずスルーしそうになるけど、WindowsでもLinuxでも動いて、私のような英語力の乏しい*2ヌルプログラマでもアッサリ使えてしまうっていうのは、実はすっごいことだと思うんだ。
Pythonでのインストール手順での
$ python setup.py test
のとこで FAILED になる。既出っぽい。
‥‥気にしなくていいことにした(ちゃんと読め)。
protobuf-2.0.0beta/examples を特にいじらず、 一番シンプルっぽい形を Python で書いて、list_people_cpp.exe で確認できたところまではやった。
可変長の配列を含むバイトデータがシンプルに実装できるのはかなり嬉しいよなー。
あんまりちゃんと調べてないけど、エンディアンは使う側は特に気にしなくていいっぽい。int32 とかはそのまんまのバイト列での出力はされてない。0 と 0x12345678 を出力したときだとバイトサイズ変わってる。C++ でエンディアンの事を気にしなくていいだけでも結構うれしいな。
文字列はShift-JISだろうが、UTF-8だろうが、そのまま出力されてるけど、 UTF-8 を使っといたほうが良さげ? まぁ、メインの用途で使いやすいものに合わせてしまっていいような気はするけど。
Language Guide と 各種 Generated Code の翻訳版が欲しい‥‥。
とにかく、C++ で扱えるデータ形式としては抜群に使い勝手がいいんじゃないだろうか。これだけのためにちゃんと Python を勉強しようと思い始めた。JRuby 使うっていうのもあり?