ネットワーク
上級

gRPC (Google 2015)(ジーアールピーシー)

Google 2015年公開のRPC (Remote Procedure Call) フレームワーク。Protocol Buffers + HTTP/2 ベースで双方向Streaming・低遅延・多言語対応、マイクロサービス通信の定番。

0 回閲覧
0 いいね
2026/5/15 更新
関連タグ
RPC
ネットワーク
Google

概要

gRPC はGoogle が2015年2月にオープンソース化したRPC (Remote Procedure Call) フレームワーク。Google 内部RPC「Stubby」(10年運用の社内システム) のオープンソース化、CNCF (Cloud Native Computing Foundation) 寄贈。Protocol Buffers (バイナリシリアル化) + HTTP/2 (多重化) ベースで4通信パターン (Unary / Server Streaming / Client Streaming / Bidirectional Streaming) を提供、多言語SDK (10+ 言語) でマイクロサービス間通信の定番に。

gRPC 主要マイルストーン

年月出来事
2015-02Google が gRPC 公開
2016-08gRPC 1.0 リリース
2017-03CNCF Incubating
2020-02CNCF Graduated
2021gRPC-Web 安定化 (ブラウザ対応)
2024バージョン 1.65+

通信パターン

パターン説明
Unary1リクエスト / 1レスポンス (通常RPC)
Server Streaming1リクエスト / N レスポンス
Client StreamingN リクエスト / 1 レスポンス
Bidirectional StreamingN リクエスト / N レスポンス (WebSocket類似)

Protocol Buffers (Protobuf)

gRPC のシリアル化フォーマット:

  • バイナリ形式 (JSON より3-5倍小・5-100倍高速)
  • スキーマ定義 (.proto ファイル)
  • 多言語SDK 自動生成
  • バージョン互換 (前方・後方互換性)
// my_service.proto
syntax = "proto3";

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}
# 自動コード生成
protoc --go_out=. --go-grpc_out=. my_service.proto

gRPC vs REST API 比較

項目REST API (JSON)gRPC (Protobuf)
シリアル化JSON (テキスト)Protocol Buffers (バイナリ)
サイズ1×1/3-1/5
速度1×5-100×
プロトコルHTTP/1.1 (主)HTTP/2 標準
Streaming限定 (SSE)4 パターン
Browser 対応標準gRPC-Web 必要
デバッグ容易 (Curl)困難 (バイナリ)
学習曲線低中
マイクロサービス標準主流
Cloud Native限定標準

主要利用先

プロダクト用途
KubernetesAPI 通信
Etcd分散KV ストア
TiKV / TiDB分散DB
CockroachDB分散SQL
VitessMySQL 分散
Apache Beamデータパイプライン
Apache Kafka (一部)ストリーミング
TensorFlow ServingML 推論
Netflix Conductorワークフロー
Google Cloud APIs全て
Microsoft Azure多数
HBase SpannerDB

サポート言語 (公式)

言語SDK
C++grpc-cpp
Javagrpc-java
Pythongrpc-python
Gogrpc-go (純Go)
Node.jsgrpc-js
Rubygrpc-ruby
C# / .NETgrpc-dotnet
Swiftgrpc-swift
PHPgrpc-php
Dartgrpc-dart

gRPC-Web

ブラウザJavaScript からgRPC を呼び出す変種:

  • gRPC-Web プロキシ (Envoy / nginx)
  • Envoy / Nginx で gRPC → gRPC-Web 変換
  • ストリーミングは Server Streaming のみ (Bidirectional 不可)
  • 2018年Google公開・2020年安定化

主要ツール

ツール用途
protocコード生成
EnvoygRPC プロキシ
BufProtobuf Lint / Build
grpcurlgRPC 用 curl
BloomRPCGUI クライアント
Postman gRPCAPI テスト

関連用語との違い

  • vs REST: 軽量バイナリ / テキスト
  • vs WebSocket: RPC 構造化 / 単メッセージ
  • vs GraphQL: クエリ言語 / RPC

FAQ

Q1: REST vs gRPC? A: 公開API・ブラウザ用途・人間可読性ならREST。マイクロサービス間・低遅延・大量通信ならgRPC。両者使い分けが現代主流。

Q2: HTTP/3 対応? A: gRPC はHTTP/2 が前提・HTTP/3 (QUIC) 直接対応は2024年実験的。Cloudflare等の Edge Proxy 経由でHTTP/3 接続可能。

Q3: 学習リソース? A: gRPC 公式チュートリアル (grpc.io)・「gRPC: Up and Running」(O'Reilly 2020)・YouTube CNCF プレゼン多数。

この記事について
カテゴリーネットワーク
難易度上級
作成日2026/5/15