Gitrend

grpc-gateway: gRPCをJSON/RESTに変換!神ツール爆誕!

Go 2026/2/12
Summary
gRPCの爆速パワーはそのままに、REST/JSON APIとして公開したい?まさにそんな夢を叶えてくれるのが、このgrpc-gatewayなんだ!ブラウザからでも、curlからでも、いつもの感じでgRPCサービスが叩けるようになる、まさに魔法のツールだよ!

概要:なにこれ凄い?

うおおお!皆さん、こんにちは!アキラです!今回取り上げるのは、GitHubトレンドを爆走中の「grpc-ecosystem/grpc-gateway」!これ、僕マジで感動したんだよね!gRPCって、そのパフォーマンスと型安全性が最高なんだけど、ぶっちゃけブラウザからのアクセスとか、既存のRESTクライアントとの連携ってちょっと面倒だったじゃない?そこなんだよ!このgrpc-gatewayは、まさにその悩みを一瞬で解決してくれるんだ!.protoファイルにちょっとアノテーションを追記するだけで、自動でJSON/RESTプロキシを生成してくれるんだぜ?「定義は一つ、インターフェースは無限大!」って感じで、開発効率が爆上がりするに決まってるじゃん!もうね、初めて動かした時は「これ、マジで動くのか…?うおおおおお!」って叫んじゃったよ!

ここが推し!

サクッと試そう(使用例)

「まずこうやって動かしてみて!」

  1. go.modを準備して、必要なモジュールをインストールだ!
go get google.golang.org/grpc google.golang.org/protobuf github.com/grpc-ecosystem/grpc-gateway/v2/runtime github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway google.golang.org/genproto/googleapis/api
  1. こんな感じの.protoファイルを用意するんだ!google.api.httpアノテーションがポイントだぜ!
syntax = "proto3";

package helloworld;

import "google/api/annotations.proto";

option go_package = ".;helloworld";

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {
    option (google.api.http) = {
      get: "/v1/greeter/{name}"
    };
  }
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings.
message HelloReply {
  string message = 1;
}
  1. そして、protocコマンドでごりごりコードを生成だ!
# protocとprotoc-gen-go, protoc-gen-go-grpcのインストールは済ませておくんだぞ!
protoc -I. --go_out=. --go-grpc_out=. --grpc-gateway_out=. \
       --proto_path=$(go env GOPATH)/src/github.com/grpc-ecosystem/grpc-gateway/v2/third_party/googleapis \
       helloworld.proto

これで、helloworld.pb.gohelloworld.gw.goが生成されるはず!あとはGoのコードでgRPCサーバーとGatewayサーバーを立ち上げるだけ!めちゃくちゃ簡単だろ?

ぶっちゃけ誰向け?

まとめ

いやー、今回も興奮冷めやらぬまま語っちゃいましたけど、grpc-ecosystem/grpc-gateway、マジでヤバイです!gRPCのパワフルさとRESTの柔軟性をいいとこ取りできちゃうなんて、これからのAPI開発がめちゃくちゃ楽しみだぜ!君もぜひ試してみて、この感動を味わってほしい!これからもAkira’s Tech Logをよろしくね!