コンテンツにスキップ

Protocol Buffer

はじめに

本サイトにつきまして、【IT技術の知見】はじめに - 俺の技術ノート をご認識のほど宜しくお願いいたします。


01. Protocol Buffer とは

異なる言語間やサーバー間で変換できるデータ記述型言語である。

RPC-API (例:gRPC) の仕様を実装により説明するためのインターフェース定義言語でもある。.proto ファイルに実装する。


02. 文法

enum

enum 型のデータを設定する。

enum GenderType {
  UNKNOWN = 0;
  MAN = 1;
  WOMAN = 2;
}

message Person {
  optional int32 id = 1;
  optional string name = 2;
  optional GenderType gender_type = 3;
}


map

キーと値の組合せからなる連想配列型のフィールドを設定する。


message

リクエストメッセージで送信するデータ構造を設定する。

syntax = "proto3";

message Person {
  optional int32 id = 1;
  optional string name = 2;
}


oneof

複数のフィールドのうち、いずれか 1 つのフィールドだけに値を設定できるグループを設定する。


package

pb ファイルに自動的に定義するパッケージ名を設定する。

例えば Go の場合、pb.go ファイルでパッケージ名を自動的に定義する。

package foo;


service

▼ service とは

関数 (rpc) とそのグループ (service) を設定する。

gRPC の API 仕様である。

service GreetingService {
    rpc Hello (HelloRequest) returns (HelloResponse);
}


syntax

Protocol Buffer コンパイラーのバージョンを設定する。

Protocol Buffer コンパイラーは、proto ファイルから pb ファイルを自動的に作成する。

syntax = "proto3";