gRPC のサーバ・クライアントをゼロから構築するステップバイステップのチュートリアル。 題材は gRPC 公式 Python Basics の RouteGuide サンプル。
- 段階的に実装: 各章で小さな差分を書き足しながら学ぶ。公式は完成形コードが配布されているが、本チュートリアルは空のファイルから手で書くことで gRPC の構成要素を1つずつ体感できる。
- Python ベース + Go で異言語体験: サーバ・クライアントは Python。第6章で Go クライアントを同じ proto から生成し、gRPC の最大のメリットである「言語を超えた通信」を体験する。
- RouteGuide を4パターン網羅: Unary / Server streaming / Client streaming / Bidirectional streaming の4種類を1つの service で扱う。
- gRPC とは? — RPC / protobuf / REST との違い
- セットアップ — venv、
grpcio/grpcio-toolsのインストール - proto を書く(Unary 部分) —
Point/Feature/GetFeatureの定義 - protoc でコード生成 — 生成物の中身を確認
- サーバ最小実装(Unary) — Servicer /
GetFeature/ 起動 - Python クライアント — channel / stub / 呼び出し
- Go クライアントから Python サーバを叩く — 異言語間通信
- Server streaming —
ListFeaturesを追加 - Client streaming —
RecordRouteを追加 - Bidirectional streaming —
RouteChatを追加 - grpcurl でサーバを手軽に叩く — gRPC 版 curl でコマンド1行から RPC を試す
- 実運用向けの発展トピック — エラー処理 / DDL / メタデータ / インターセプタ(参考)
- 各章の
README.mdが手順書。好きな作業ディレクトリで ファイルを作りながら読み進める(本リポジトリのディレクトリ構成は意識しなくてよい)。 answer/は「詰まったときの参照用」。章ごとにその章までの完成形コードが入っている。- 章を追うごとに proto / server / client が同じプロジェクト内で育っていく。
- Python 3.10+(本チュートリアルは 3.14 で動作確認)
- Python の venv の基本(作成・activate)を使ったことがある
- (第6章のみ)Go 1.21+
このチュートリアルは Claude Code と Z.ai GLM-5.2 を使用して作成しました。