OSS探訪GitHubでログイン

Protocol Buffersでservice contractを定義しHTTP/2上で高性能RPCを実装するmulti-language framework

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
45,361
主要言語
C++
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/03
ページ内ナビ

概要

gRPCはclientとserver間のRPCを定義・実行するframeworkです。Protocol Buffersのservice definitionからstubを生成し、HTTP/2 transport、streaming、deadline、metadata等を利用して複数言語のservice間通信を構築できます。このrepositoryはshared C++ coreと複数language bindingを収録します。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

service definitionからtyped client/server APIを生成する

Protocol Bufferでserviceとmessageを定義し、language別toolchainからclient stubとserver interfaceを生成することでRPC contractをcodeへ反映できます。

出典:[1]

HTTP/2を基盤にunary・streaming RPCを扱う

gRPC runtimeはHTTP/2-based RPC frameworkとして提供され、service間通信をtyped APIとして扱えます。languageごとのruntimeはpackage manager経由で導入できます。

出典:[1][3]

shared C++ coreと複数language bindingを同一repositoryで開発する

このrepositoryにはC++ core、C++、Python、Ruby、PHP、Objective-C等が含まれ、Java、Go、Node、.NET等は別repositoryとして提供されます。

出典:[1]

向いている用途

service間で厳密なcontractと低latencyなRPCを共有したいdistributed systemに向く

schemaから生成したAPIを複数言語で共有し、streamingやmetadataを含むservice-to-service通信を統一したいmicroservicesやbackend systemに適します。

出典:[1]

導入前の確認

languageごとにpackage・repository・release cadenceが異なる

gRPC全体はmulti-language ecosystemですが、JavaやGoなどは別repositoryです。導入時は使用言語のruntime package、code generator、互換性matrixを個別に固定してください。

出典:[1]

1.84.0はxDS・subchannel・Python runtime等の変更を含む

v1.84.0ではCoreのxDS、weighted round robin、connection scaling、proxy handlingやPython AsyncIO/metadata等に修正が入っています。upgrade時は利用languageだけでなくcore側のrelease noteも確認します。

出典:[2]

参考にした公式資料

  1. [1]gRPC v1.84.0 README(2026-10-04)
  2. [2]gRPC v1.84.0 release(2026-10-04)
  3. [3]gRPC Python v1.84.0 package metadata(2026-10-04)
  4. [4]gRPC Python v1.84.0 version metadata(2026-10-04)
  5. [5]gRPC Apache 2.0 license(2026-10-04)
編集部からの補足

言語ごとにruntime repositoryとpackageが異なります。このrepositoryのrelease versionと、Java・Go・Node・.NET等の別runtime versionを同一視しないでください。

3ステップで試す

  1. 1

    gRPC Python 1.84.0用のvirtual environmentを作る

    repository releaseと同じ1.84.0へPython runtimeとProtocol Buffer code generatorを固定します。

    python3 -m venv grpc-demo && . grpc-demo/bin/activate && python -m pip install --upgrade pip && python -m pip install 'grpcio==1.84.0' 'grpcio-tools==1.84.0'
  2. 2

    最小service definitionからPython stubを生成する

    serverを起動せず、proto contractからmessage classとgRPC stubを生成します。

    mkdir -p grpc-demo/work && printf '%s\n' 'syntax = "proto3";' 'package demo;' 'service Greeter { rpc SayHello (HelloRequest) returns (HelloReply); }' 'message HelloRequest { string name = 1; }' 'message HelloReply { string message = 1; }' > grpc-demo/work/hello.proto && . grpc-demo/bin/activate && python -m grpc_tools.protoc -I grpc-demo/work --python_out=grpc-demo/work --grpc_python_out=grpc-demo/work grpc-demo/work/hello.proto
  3. 3

    runtime versionと生成moduleを確認する

    network接続を作らず、runtime versionと生成されたservice/stubだけを確認します。

    . grpc-demo/bin/activate && PYTHONPATH=grpc-demo/work python -c 'import grpc, hello_pb2, hello_pb2_grpc; print(grpc.__version__); print(hello_pb2.DESCRIPTOR.services_by_name["Greeter"].full_name); print(hasattr(hello_pb2_grpc, "GreeterStub"))'
公式READMEで確認

成長

成長の推移 · 直近30日

45,361 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
45,361
Forks
11,382
Watchers
45,361
Open Issues
1,355
所有者種別
Organization
主要言語
C++
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/03

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?