アルパカログ

Webエンジニア兼マネージャーがプログラミングやマネジメント、読んだ本のまとめを中心に書いてます。

gRPC サーバー・クライアント異なる言語間で通信するサンプル(Go言語/Ruby)

f:id:otoyo0122:20200921111931p:plain:w300

gRPCはGoogleが公開したRPCフレームワークで、gRPCを使うと、サーバー・クライアントで異なる言語間においてもローカルオブジェクトかのごとくメソッドを呼び出すことができます。

詳細は下記をご覧ください。

このエントリでは、公式サンプルを使ってGoで立てたgRPCサーバーのメソッドをRubyクライアントから呼び出してみます。

サンプルコードと準備

まずはRubyとGoのgRPCサンプルをそれぞれ動かしてみます。下記のページに従って準備します。

今回使用したバージョンはRuby 2.5.1とGo 1.11.0です。

動作確認をしたら、Goで立てたサーバーにRubyクライアントで接続してみます。

% go run greeter_server/main.go
% ruby greeter_client.rb
"Greeting: Hello world"
% ruby greeter_client.rb hoge
"Greeting: Hello hoge"

RubyクライアントからGoサーバーのメソッドが呼び出すことができました。

gRPCでの開発では、protoファイルが共有されていることと、protoファイルが変更されたときgRPCコードを再生成することを守る必要があります。

gRPCを使えば、例えばスマホアプリのクライアントで、データ操作やロジックに関するメソッドを全てサーバ側に寄せて、クライアントコードはブラウザに徹するなどすれば、コードの見通しが格段にアップしそうです。

以上です。

このエントリでは、公式サンプルを使ってGoで立てたgRPCサーバーのメソッドをRubyクライアントから呼び出す例を紹介しました。