Closed16
Protocol Buffer調べる
なんかCap'n Protoに似てる!と思っていたら、Protocol Buffer v2の作者の方がCap'n Protoもやっていた
これを読む
required
は互換性の観点から非推奨、後からoptional
にはできない
scalar numeric typesにrepeated
をつける場合は[packed = true]
オプションを入れる
アップデートして不要になったoptional
なフィールドの番号はreserved
に、突っ込んで誤って再利用することを防ぐ。
scalar numeric typesは複数あって、通常のint32
みたいなやつは可変長でエンコードされる。適切にfixed
とかを使う必要がある。
string
はutf8でエンコードされる。
フィールドには[default = value]
オプションをつけるとデフォルト値を設定できる。オプションをつけない場合型ごとのデフォルト値が指定される。
型ごとのデフォルト値だが、enumの場合は先頭の値になるので、先頭にフィールドを追加する際には気をつける必要がある。
import public
とimport
がある。
groups
という機能があるが、非推奨。普通に型をネストさせるべき。
既存フィールドに手をつけないことで、新しいコードで古いデータを、古いコードで新しいデータを読み取ることができる。
デフォルト値の変更はハマりそう
extension
面白い、サードパーティ向けに空の領域を用意しておく。
one_of
で「これらのフィールドのどれか1つだけ」を表せる
RPC systemというのがいまいち親しみがない。保留。
大事そうな仕様は大体読めた
このスクラップは2022/10/03にクローズされました