Go言語でgRPCに入門してみた
自己紹介
河邑俊輝

株式会社LIFULL 

CoEユニット開発推進グループ所属

新卒1年目

興味のある分野

・ブロックチェーン

・Fintech

言語

Node/Solidity/PHP/Apex/Go



gRPCとは何か
• Googleが開発したRPC呼出プロトコル

• メッセージはProtocolBuffersを用いて通信

• HTTP/2を用いて並列呼出、双方向呼出、ストリーミング
などが可能

• .protoファイルからコードが自動生成できる

• Googleのサービスでも実際に使われいる
gRPCとは何か
クライアントとサーバで複数の言語をサポートしている

→マイクロサービスなどと相性がいい
4つのRPC方式
• Unary(Simple)

→1 request-1 response

• ServerStreaming

→1 request-N response

• ClientStreaming

→N request-1 response

• BidirectionalStreaming

→N request-N response
メリット
• REST APIよりURL設計が楽

→protoファイルでAPI仕様を明文化できる

→表側と裏側が仕様のすり合わせが楽

• HTTP/2で並列呼出などができるため、高速

• パラメーターの型付けができる
作成の流れ
1. protoファイルの作成

2. ①で作成したファイルをコンパイルして、自動で雛形
コードを生成

3. 雛形コードを元にサーバー&クライアントを実装する
実際にやってみる

(一番シンプルなUnary)
protoファイル作成
コマンド実行
コマンドで生成される雛形ファイル
https://github.com/waytkheming/calculator-proto/blob/master/proto/calculator.pb.go
Server側
Client側
実行
MongoDBを使ってCUIのTwitterみたいなのを作ってみた
https://github.com/waytkheming/gwitter-proto
参考URL
• gRPC Documentation

https://grpc.io/docs/

• クックパッドがgRPCを採用するまでサービス間通信で抱えて
いた課題と、RubyでgRPCを運用するための工夫

https://logmi.jp/tech/articles/320715

• gRPCって何?

https://qiita.com/oohira/items/63b5ccb2bf1a913659d6

• gRPCにおけるRPC方式の整理

https://qiita.com/yuzo777/items/046910c95559cf0fff68
Gopher道場の感想
ご静聴ありがとうございまし
た。

gRPC入門