複数 gRPC クライアントの管理における Buf の導入事例 by miyamu

YAPC::Fukuoka 2025
トーク(20分)

複数 gRPC クライアントの管理における Buf の導入事例

KoyoMiyamura miyamu KoyoMiyamura
2

Web アプリケーションでマイクロサービス間通信に gRPC を採用するケースが増えています。

長年開発・運用されている、とある SaaS プロダクトでは、当初 Ruby で .proto ファイルから gRPC クライアントを生成する際、標準的な protoc コマンドベースの grpc_tools_ruby_protoc gem を使用し、生成手順を Makefile で管理していました。

しかし、システムの成長とともに複数の gRPC クライアント生成を管理する必要が生じ、Makefile が肥大化・複雑化し、新規追加・メンテナンスが困難になりました。
この課題を解決するため、YAML ベースで proto ファイル間の依存関係を管理できる Buf を導入し、より効率的かつ簡潔な gRPC クライアント管理を実現しました。

また、Ruby で生成されるコードの依存関係記述が Ruby on Rails のオートロードと相性が悪く、シェルスクリプトのワンライナーを使用していました。こちらをメンテナンス性向上のため Ruby の Rake タスクに変換するなどの運用改善も行いました。

本セッションでは、従来の protoc コマンドベースの管理から Buf への移行プロセスを実体験に基づいて紹介します。
移行時の互換性担保やチーム運用面での工夫、導入後の効果について具体的な事例とともにお話しします。

Buf について知り、proto ファイルからのコード生成における新たな選択肢を探求してみませんか?