Protocol Buffers


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

概略

Protocol Buffersとは?

Googleが2008年に公開したシリアライザ。Interface Definition Language (IDL)でデータ構造を記述しておくことで、複数のプログラミング言語に対応したシリアライザを自動生成してくれる。ちなみに、これに対抗したソフト(Message Pack)が国内でも開発されている。

ライセンス

BSD。すばらしい。

性能

バイナリエンコーディングされるためXMLより速い。どこかの比較ページで見た感じだとデシリアライズ性能が優秀。

IDL

文法の概略

C/C++のstructっぽい書き方。タグ(後述)によって属性のデータ数を指定することができる。当然ネストも可能。
詳細は ここ を参照。

フィールドルール

属性には必ずルールを指定しておく必要がある。タグには次の三種類がある。
  • required
 要素数が必ず1となる属性。
  • optional
 要素数が0または1となる属性。
  • repeated
 要素数が0以上になる属性。

つまりrepeatedがC/C++の配列のような機能を提供してくれる。
また、repeatedするのが組み込みのデータ型ならば[packed=true] をつけることで高速となる模様。
ところでrequiredは本当に必要なものだけにつけるのがマナー?のよう。


タグ番号

各属性にはユニークなタグ番号を指定する必要がある。被るとコンパイル時に怒られる。

データ

詳しくは本家サイトを見るとよいが、符合付き/符合無しの整数、浮動小数、2値、文字列、バイト列など基本的なデータ型を指定できる。

継承?

extendを使うことで定義したデータを拡張したデータを作ることができる。
|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|


統計・機械学習


計算機


プログラミング



Raspberry Pi


その他



工事中


関係ない話題


管理者用



プロフィール

但馬慶行
(TAJIMA Yoshiyuki)

機械学習とロボットを趣味で勉強中。
連絡先はトップページ