KisaragiEffective.github.io

Yeet.

View on GitHub

Protocol Buffersについてのメモ書き

前準備

公式ページ: https://github.com/protocolbuffers/protobuf/releases

やること

スキーマを定義する

(以下の例は https://developers.google.com/protocol-buffers/docs/javatutorial より引用)

syntax = "proto2";

package tutorial;

option java_package = "com.example.tutorial";
option java_outer_classname = "AddressBookProtos";

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phones = 4;
}

message AddressBook {
  repeated Person people = 1;
}

和訳:

  • C++とかJavaにシンタックスがにてるね
  • 右辺値はIDで、これが同じだったら同じキーとしてみなされるよ
  • requiredは必須、optionalは任意だよ
  • repeatedは繰り返されることもあるよ (一つもないときもあるよ)

コンパイルする

# $SRC_DIR : ソースコードのフォルダ
# $DST_DIR : 出力先?
# $NAME : protoファイルの名前
protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/$NAME