Buffersでシリアライズ化することで高速な通信を実現させています。APIのデバッグでつかうcurlやPostmanのようなGUIツールでデバッグすることができません。そこで今回はgRPCで開発するときに役に立つデバッグの方法を紹介します。CLIクライアント一番基本となるデバッグ方法は自由にリクエストを送ることだと思います。以下のようにいくつかCLIからgRPCのリクエストを送ることができるツールがあります。grpc_cli公式が提供しているCLIクライアントgrpcurlcurl-likeなCLIクライアントgrpccREPLなCLIクライアント公式が提供しているツールを使うのもいいですが、curl-likeなほうが使い慣れた人が多いと思うのでgrpcurlがオススメです。このようにしてリクエストを送ることができます。Protocolというものがあります。通常は上記の例のように、リクエストを送ってレスポンスを表示するには関連する.protoファイルを指定する必要があります。Protocolを使えばサーバーから必要な情報を取得することができ、.protoファイルが無くても実行することができます。この機能を使うにはサーバーにReflectionの設定をする必要がありますが、数行に追加で済みます。Reflectionの対応は完了です。Reflectionに対応することで以下のようにサーバーに実装されているサービスの一覧や詳細も.protoファイルなしで確認できるようになります。サービスの一覧の表示は途中から開発に参加したプロジェクトなどではとても役に立つと思います。);環境変数サーバー側のデバッグ情報として環境変数を設定することで追加のデバッグ情報を出力することができます。これは各言語の実装により指定する項目が変わるので注意する必要があります。GoGoでは以下のように環境変数を設定すれば追加のログが出力されます。GRPC_GO_LOG_SEVERITY_LEVEL=infoドキュメントにも少しだけ記述があります。godoc.orgまた、Goの場合はGo自体に実装されたhttp2のデバッグ機能を使うのもオススメです。こちらはフレームの内容なども出力されるため、とても役に立つと思います。C#)の実装では以下のような環境変数を設定することで追加のログが出力できます。GRPC_TRACE=allCベースの場合は他にも設定できる項目があり、以下のドキュメントに書かれています。github.comまた、これらの環境変数はgRPCを内部で使用しているSDKなどでも有効です。GoogleのSDKではgRPCがたくさん使われているため、それらのデバッグでも有効活用できると思います。Reflection月別アーカイブはてなブログをはじめよう!akaimo3さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。