Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Python3でgRPCをつかう その3: Protocol Bufferファイルについてもう少し詳しく

実際のところ

型チェックつきのバイナリである

その1でやったように、異なる機器間を高速で通信するために作られた規格です。
バイナリなのでJSONのようなテキストベースと比べてデータ量が軽いです。
加えてエンコード・デコードともに高速なのでオーバーヘッドも最小。

バイナリにする過程で型チェックもあるので変な定義をしたデータは早めにエラー潰しができて素敵。

途中で要素を追加しても後方互換性がある

message Person {
  string name = 1;
  int32 age = 2;
}

これに新たに"email"という要素を追加しても、要素毎に通し番号振っている構成なので後方互換性が確保されるという中々Goodな仕様。

message Person {
  string name = 1;
  int32 age = 2;
  string email = 3;  // 新しいフィールドを追加しても、古いコードは影響を受けない
}