Tutorialをやってみた前回のgRPCのクイックスタートをやったときにサーバーリフレクションのことがよくわからなかった。サーバーリフレクションにもチュートリアルがあったのでやってみた。TL;DRサーバーリフレクションを使うと実行中のサーバからプロトコルバッファーの定義を取得したり、実行出来るようになる。Goで利用するには、grpc.NewServer()のあとで通常のプロトコルバッファーのRegisterをした後reflection.Registerメソッドを呼ぶだけチュートリアルの手順通りに行うとc++のクライアントからサーバのプロトコルバッファーを確認することができる。Protocolhttps://github.com/grpc/grpc/blob/master/doc/server-reflection.mdサーバーリフレクションはクライアントのコマンドラインからgRPCの定義の取得あるいは実行を可能にするgRPCサーバの拡張機能。サーバーリフレクションによってcurlライクなことがgRPCサーバでも実現できる。Reflection情報を確認するためのクライアントツールを用意する。実装はc++のみ提供されているようだ。grpc/grpcリポジトリを取得してクライアントツールをビルドする。grpc_cliサーバーリフレクションのチュートリアルにはこれしか書かれていないが、依存ライブラリがあるのでそちらのインストールもする。自分の場合はMacOSなので以下を行ったあとビルドできた。run_dep_checksコマンドでビルド環境が整っているか確認する。以下のページで他に依存しているものが無いか確認する。https://github.com/grpc/grpc/blob/master/INSTALL.mdサーバーに対してgprc_cliを使ってみるgrpc_cliのビルドが終わったりgoogle.golang.org/grpcリポジトリで、サンプルのhelloworldサーバーを立ち上げておく。cloneした直後でも、reflection.Registerが既に呼ばれている。lsコマンドを実行すると、プロトコルバッファーが取得できる。{}}callオプションでメソッドを実行させることもできた。statusチュートリアルを終えてreflectionパッケージにはRegisterメソッドしかない。lsコマンドの結果にも含まれている)。後々Goのコードからでも扱えるようになるのかな?https://godoc.org/google.golang.org/grpc/reflection/grpc_reflection_v1alphagrpc_cliのコマンドのusageでオプションを見ると、もろもろの認証情報も付加できるようなので、本番用に構築したgRPCサーバでも利用できそう。Startをやってみた。Startをやってみた。Goについて書いています。