# 実践: gRPC in Go

本章では、 「Wantedly で Go を使って gRPC Server/Client の開発をどう行なっているのか」について紹介します。

## Go で gRPC Server を作る

Wantedly では [grapi](https://github.com/izumin5210/grapi) という小さなフレームワークを使って gRPC server を実装します。 詳しくは下記のスライドおよび記事を参照してください。

* [grapi: Bulding JSON API server with grpc-gateway for microservices - Speaker Deck](https://speakerdeck.com/izumin5210/grapi-bulding-json-api-server-with-grpc-gateway-for-microservices)
* [grapi : #golang で interface driven かつボイラプレートに悩まされない API 開発](https://qiita.com/izumin5210/items/ed1c0100a45366c3b75e)

grapi が生成したコードに servicex の設定を組み込む必要があります。これは [servicex-go の README (internal)](https://github.com/wantedly/servicex-go) を参照してください。

## Go で gRPC Client を使う

基本的には [gRPC 公式の Quick start](https://grpc.io/docs/languages/go/quickstart/) と同じになります。 ただ、Ruby と同じくクライアントの初期化については servicex の実装を使う必要があります。

```golang
cc, err := grpcx.DialContext(ctx, apix.UsersGrpcBaseURLs.Default().String())
if err != nil {
	// ...
}
client := users_pb.NewProfileServiceClient(cc)
```

#### 話を聞きに行きたい

* Slack: [#gophers](https://wantedly.slack.com/archives/CA69S8BBP)
