gRPC Go Quick Startで悩んだ点

gRPCサーバが起動できなくなるなんて聞いてない!

環境

go getの進捗がわからない!

Quick Startに書かれている通り下記のように go get を実行したところ、進捗が表示されないため、不安になってしまいました。

# go get -u google.golang.org/grpc
# go get -u -v google.golang.org/grpc
Fetching https://google.golang.org/grpc?go-get=1
...

パッケージのインストール先はどこ?

grpcパッケージはインストールされたものの、どこにインストールされたのかが気になります。おそらく $GOPATH の下だろうと思って調べたところ、下記にインストールされていました。

# ls -d /go/src/google.golang.org/grpc
/go/src/google.golang.org/grpc
# ls /go/pkg/linux_amd64/google.golang.org/grpc.a
/go/pkg/linux_amd64/google.golang.org/grpc.a

余談:GOPATHはGo 1.13でdeprecatedになる

$GOPATHGo 1.13でdeprecatedになるそうです。その際の挙動を先取りするには GO111MODULE=on を指定します。試してみると、下記のようにインストール先が変わりました。

# export GO111MODULE=on
# go get -u google.golang.org/grpc
# ls -d /go/pkg/mod/google.golang.org/grpc*
/go/pkg/mod/google.golang.org/grpc@v1.20.1

protocするとgRPCサーバが起動できなくなる!

grpcパッケージに同梱されているhelloworld.protoをQuick Start記載の通りに編集し、protoc を実行後、gRPCサーバを起動させようとすると、下記のエラーが発生しました。

helloworld/helloworld.pb.go:23:11: undefined: proto.ProtoPackageIsVersion3
# go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway

おわりに

というわけで、特に最後の問題には悩みましたが、なんとかQuick Startを終えられました。引き続きあれこれいじってみて、GoやgRPCの理解を深めていきたい所存です。わくわく。

VELTRA Engineering

Posts from the VELTRA Engineering team. www.veltra.com

Takashi Iwamoto

Written by

An Web engineer at VELTRA corporation, a member of JAPAN MENSA

VELTRA Engineering

Posts from the VELTRA Engineering team. www.veltra.com