gRPC の CUI のクライアントツールを調べてまとめてみた

こんにちは、松浦です。

最近業務にて gRPC を使ったアプリケーションの開発をしています。開発をしていて少し困るのは、動作確認を行うのにどうやって gRPC サーバの RPC メソッドを呼び出すか、という点です。REST のエンドポイントの場合、curl やブラウザや Postman のようなアプリケーションでリクエストを送れましたが、gRPC の場合は、新たなツールを導入する(あるいは、クライアント側のテスト用コードを書く)ことになります。そこで、業務の効率化も兼ねて、お手軽に動作確認を行うのにどのようなクライアントツールがあるのか、調べて、触って、まとめてみることにしました。

前提

  • 本記事では CUI のツールのみを取り上げます(GUI ツールもいくつかありますが、記事の分量と余力の問題で今回は取り上げません……)。
  • 動作確認を行った環境は Mac (OS X 10.14.4) です。
  • 動作確認用の gRPC サーバは 50051 番ポートを使用しています。
  • 動作確認用のサンプルの Protocol Buffers の定義は以下の通りです。

gRPC command line tool

gRPC command line tool は、gRPC のリポジトリ内にある CLI です。
ソースコードからビルドする必要があるため、インストールは少々手間がかかるのですが、It is desirable to have command line tools written in other languages roughly follow the same syntax and flags. とあるように、gRPC の CLI ツールの望ましいシンタックスやフラグが定義されていると言えるので、勉強として触ってみるのにも良いと思います。

動作確認したバージョン

1.23.0

インストール

ドキュメントの記述に従ってインストールしていきます。
まず、 gRPC のリポジトリを clone します。CLI ツールをビルドするにはサブモジュールをアップデートしておく必要があるので、それも行います。

ビルドには gflags のライブラリが必要なのでインストールしておきます。

ここまでで事前準備は完了なので、CLI をビルドします。

使い方

使い方は grpc_cli helpgrpc_cli <command> help で確認できます。
いくつかコマンドがありますが、RPC メソッドを呼び出すには grpc_cli call のコマンドを使用します。

gRPCurl

Like cURL, but for gRPC とあるように、gRPC 版 curl と言えるツールです。
GitHub のスターも執筆時点で 2000 を超えており、他の記事でもしばしば言及が見られるので、定評のあるツールと言っていいと思います。

動作確認したバージョン

1.3.2

インストール

Mac の場合は brew でインストールすることができます。
GitHub の releases のページにバイナリもアップロードされているので、そちらを直接取得することもできます。
go get でソース取得・ビルドすることも可能です。

使い方

使い方は grpcurl -help で確認できます。
RPC メソッドを呼び出すには、以下のように各種引数を渡していくことになります。

余談ですが、ソースコードを読む限り、Prototool の grpc コマンドは内部的には grpcurl を利用しているようです。

grpcc

gRPC 関連のツールは Golang で書かれているものが多い印象がありますが、grpcc は JavaScript (Node.js) で書かれています。
他のツールと比べると少し癖が強いですが、面白いツールだと思います。

動作確認したバージョン

1.1.3

インストール

README にあるように、npm でインストールします。

使い方

使い方は grpcc -h または grpcc --help で確認できます。
以下は、対話モードで RPC メソッドを呼び出すサンプルです。

対話モードの他にも、コマンドライン上に書いた JavaScript のコードを実行して結果を出力する --eval オプションや、JavaScript のファイルを実行して結果を出力する --exec オプションなどもあります。

evans

more expressive universal gRPC client と銘打っているように、かなり高機能で使いやすいツールです。
ちなみに、私が普段使っているツールです。

動作確認したバージョン

0.8.2

インストール

Mac の場合は brew でインストールすることができます。
GitHub の releases ページにバイナリもアップロードされているので、そちらを直接取得することもできます。
go get でソース取得・ビルドすることも可能ですが推奨されていません。

使い方

使い方は evans -h または evans --help で確認できます。
以下は、対話モードで RPC メソッドを呼び出すサンプルです。

対話モードだけでなく、コマンドライン上で RPC メソッドを呼び出すこともできます。

Polyglot

最後に、Java 版クライアントツールの polyglot を見てみます。
README を見ていると、かなり詳細な設定もできそうですが、今回は軽く見るにとどめます。

動作確認したバージョン

2.0.0

インストール

All you need to run Polyglot is a Java runtime.README の Requirements で言っているので、Java が実行できる環境で、GitHub の releases ページにある Jar をダウンロードする形になります。

使い方

使い方は java -jar polyglot.jar --help で確認できます。
以下では call コマンドを使って RPC メソッドを呼び出すサンプルです。

まとめ

以上、gRPC の CUI のクライアントツールを調べてみました。
調べている過程で GUI のクライアントツールもいくつか面白そうなものを見つけたので、いずれまとめてみたいところです。

Comments are closed, but you can leave a trackback: Trackback URL.