Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Ruby で gRPC を使おう / ruby-grpc

Avatar for nakaryo nakaryo
December 17, 2025

Ruby で gRPC を使おう / ruby-grpc

Avatar for nakaryo

nakaryo

December 17, 2025
Tweet

More Decks by nakaryo

Other Decks in Technology

Transcript

  1. なかりょー @株式会社ギフティ 
 
 自己紹介 • バックエンドエンジニア 
 • 前職はバックオフィス

    ERP ベンダーで上流メイン 
 • Go / Ruby / Java
 • AI に翻弄される今日この頃 
 @nakaryo79
  2. • RPC で通信するためのフレームワーク 
 • Google が開発して、2015年に OSS 化した 


    • L7 プロトコルは HTTP/2 を使う 
 • JSON などのテキストベースの通信ではなく、Protocol Buffers を使用してシリアライズしたデータ フォーマットでやり取りするのが特徴 
 • JSON などを生でやり取りするより 通信効率がいい 
 • ちなみに、gRPC の “g” の意味はバージョンによって変わる(Google の “g” ではない) 
 gRPC とは
  3. • データがシリアライズされるのでとにかく通信効率がいい
 ◦ つまり、速い!!
 ◦ JSON ベースでの通信と比べて2倍速いというベンチマークも
 ▪ もちろんワークロードやペイロードの内容にも依る
 ◦

    マイクロサービスのようにリモートコールが増えるアーキテクチャでは価値が大きい
 • スキーマファーストでの開発を強制できる
 • JSON Schema と比べて IDL が読みやすい(と思う)
 • ボイラープレートがあるので、慣れれば API を叩く開発が楽
 • ストリーミング機能もある
 gRPCを使うメリット
  4. • gRPC そのもののエコシステムと Protocol Buffers の仕様を覚えないといけない 
 ◦ OpenAPI スキーマや

    GraphQL スキーマほど浸透していないので学習コスト... 
 • 既存のツールが使えない場面がある 
 ◦ curl で叩けない
 ◦ HTTP クライアントツールが対応していないなど 
 ▪ とはいえ、Postman など有名どころは対応している 
 • 公式にサポートされている言語に縛られる 
 gRPCを使うデメリット
  5. • C# / .NET
 • C++
 • Dart
 • Go


    • Java
 • Kotlin
 • Node
 • Objective-C
 • PHP
 • Python
 • Ruby
 • Swift
 公式サポートのある言語 ※ 2025年時点
  6. • grpc gem、grpc-tools gem が公式から提供されている 
 • Protocol Buffers の定義ファイルを書いて

    Ruby のコードを自動生成 
 • あとはサーバーとクライアントを実装するだけ 
 Ruby での gRPC 開発
  7. • service: 関数を束ねる概念
 • rpc: 関数定義
 • message: 構造体定義
 Protocol

    Buffers による IF 定義 yaml と違ってクラスや関数定義の ように書けるので読みやすい
  8. • 実際に使ってみた(サーバー側は Go、クライアント側が Ruby という構成)
 • Protocol Buffers の IDL

    記法にさえ慣れれば楽に開発できる
 • Ruby には型がないので、自動生成コードの挙動を追うのが大変だった
 ◦ レスポンスからエラーの詳細を取り出すためにキャストやデシリアライズなど色々しないといけなく、ドキュメン トも少なかったため苦労した
 • rails サーバーに組み込むには工夫が必要
 ◦ gruf などのライブラリを使うのが良さそう
 ▪ https://github.com/bigcommerce/gruf
 • 巷に知見が少ない...
 実際にプロダクションで使ってみての感想
  9. • gRPC には色々辛い点があって、Buf という企業が Connect という RPC FW を開発、提供している
 ◦

    https://github.com/connectrpc
 ◦ 2025年末時点だと Go、TypeScript、Python、Swift、Kotolin、Dart がサポートされている
 ◦ 新しい言語のサポート予定もあるそうなので Ruby もサポートされるといいですね...
 よもやま
  10. • gRPC は高速 & 型安全な RPC フレームワーク 
 • Ruby

    での実装は難しくない 
 • Rails サーバーに組み込むのはややハードルがある 
 • Connect RPC も要チェック 
 まとめ
  11. Fin