gRPC開発メディアチーム2022.10.04IT技術gRPCを用いたAPIサーバー開発gRPCはgoogle社が開発したRPC通信のひとつで、マイクロサービス間での通信や速度が求められる場合によく使用されます。Buffersを採用しており、protoファイルというIDLを記述しコンパイルすると、任意の言語のクライアント・サーバー用のコードを自動で生成してくれる優れものです。スキーマファーストの開発となるため、API仕様書が無くてもprotoファイルを見れば分かるといった開発ができることもメリットの1つとなります。APIであれば動作確認する場合にCurlやPostmanなどを使って簡単に動作確認ができますが、gRPCの場合はバイナリベースのため人間が目視して確認するには専用のクライアントツールを使う必要があります。APIサーバーに対して、EvansというgRPCクライアントツールを使って動作確認をする方法を説明していこうと思います。Evansとは改めてEvansとはgRPC向けサードパーティクライアントツールになります。https://github.com/ktr0731/evans他にもgRPC公式のgrpc_cliや特に有名なgRPCurlなどがあります。その中でもEvansは他と比べて特徴的なのが、REPLモードとCLIモードの2つを提供していることが挙げられます。REPLモード最大の特徴であるREPLモードは他のクライアントツールにはない、インタラクティブなUIでサーバーとやりとりをすることが出来ます。公式Github使い方は後ほど説明しますが、実際に使ってみると非常に使いやすいです。予測補完機能が優秀で次に何を入力すればいいか、選択肢は何があるかなどを画面上に従って入力するだけで使用することができます。そのためAPI名なんだっけ...といったことはなく使い慣れていない場合でもサクサクと動作確認をすることができます。CLIモードCLIモードは他のgrpc_cliやgRPCurlと同じような、非インタラクティブなUIによる操作モードになります。公式Github使い方としてはコマンドラインからサービスやAPI名を入力してリクエストを送るとJSON形式でレスポンスを取得することができます。ある程度慣れていればこちらの方が素速く使うことができますし、レスポンスがJSONで手に入るため他のコマンドラインを組み合わせることで様々な加工がしやすくCLIモードを使うことも非常に多いかと思います。今回使うAPIサーバーのサンプルここからは簡単なgRPCのAPIサーバーを作って、実際にEvansを使って動作確認をしてみたいと思います。従業員取得API今回は従業員(Employee)のデータを返すAPIを作成しました。gRPCの開発は本記事の主旨ではないためどのようなAPIを作ったのかだけ簡単に説明いたします。protoファイルは以下の通りです。1;44}また従業員データはダミーデータとして以下のようにべた書きしています。4つの情報を持ちます。雇用形態はEnum型で正社員とパートの2パターンあります。取得の3種類となります。(EmployeesByTypeResponse);5}Evansを使ってAPIコールするでは早速Evansを使って実際に動作確認をやってみようと思います。EvansのインストールまずはEvansをHomebrewを使ってインストールします。evansバージョン確認をして表示されればインストール完了となります。0.10.9また本記事ではEvansバージョン0.10.9を使っていきます。コマンドとオプションEvansに準備されている代表的なコマンドとオプションの一覧です。Buffersファイルを指定する必要があるのですが、実際の開発現場では大量のファイルが作られることがほとんどです。なってくると毎回個別に指定するのは非常に面倒になります。BuffersのIDLを直接的に読み込まずにメソッドを呼び出すことが出来るようになります。オプションを指定して実行していきます。REPLモードまずはREPLモードを使って動作確認してみます。REPLモードとリフレクションオプションを指定して実行すると、このようにインタラクティブモードで立ち上がります。client1011proto.employee.EmployeeService@127.0.0.1:50051>RPCの実行をするためにはpackageとserviceを指定し、最後に実行するRPCメソッドを選びます。Employee途中はこのように入力の補完候補が出てくるため覚えたりコピペしてくる必要さえありません。}9}このように従業員情報を取得することができました。引数がEnum型の場合は選択肢が出てきます。PartTime他にもshowコマンドやdescコマンドで一覧や詳細情報を表示することも可能です。|18+-------+------------+----------+CLIモード今度は同じようにCLIモードで実行していきます。method]のフォーマットで実行するメソッドを指定します。全従業員情報を取得する場合はこのようになります。]21}もし引数が必要なAPIの場合はechoとパイプを使って渡すことが出来ます。}8}これでモード別の動作確認は以上となります。さいごに今回はEvansというgRPCクライアントツールを使ってgRPCのAPIを動かしてみることができました。REPLモードとCLIモードを使ってみた感想としては、どちらを使うかは一長一短あるためケースバイケースかなと思いました。PRを出してレビュアーに動作確認をして欲しい場合は、CLIモード用にコマンドを準備してあげた方がより早く確認することができるかと思いますし、自分で開発中に動かすのであればREPLモードの方が柔軟で楽に確認ができるため状況に応じて使い分けたらいいかと思います。技術力で世の中をもっと面白くエンジニア積極採用中!ライトコードでは、エンジニアを積極採用中!ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。4拠点で事業展開するIT企業です。現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。インターンや新卒採用も行っております。Studioモリ(エンジニア)2024.10.31immichを知ってほしいIT技術immichキムくん(エンジニア)2024.10.31ブログ一覧エンジニア大募集中!ライトコードでは、エンジニアを積極採用中です。WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!また、フリーランスエンジニア様も大募集中です。