見出し画像

gRPCについて語りたい

先週1週間gRPC,gRPC Webについて学習してきたので学習してみての感想について語ろうと思います。実は以前にもメリット・デメリットについて書いたのですがそちらは事実に基づいて書いている部分が多いです。

今回は事実を書いていくというよりかは自分の視点から感想を語っていきたいと思います。

どのような知識がついたか

まず1週間でどのような知識がついたかについて書いていきます。

・基本的な開発の流れ→一週間という短い期間でしたが開発の流れは頭に入れることができました。

・grpc-webに関する知識→ブラウザでgrpcを使いたい時に使うみたいです。grpc-gatewayといった選択肢もあるみたいです。

・grpc-middlewareの知識→認証やロギング、バリデーションができるようになるミドルウェアです。

以上のような知識がついきました。結構いろんなことを学ぶことができたということがわかると思います。

感じたメリット

コード生成によって実装が楽、ドキュメント生成もできる→上の記事でも書いたのですが自分の視点から見てもこれはものすごく大きなメリットがあると感じます。一部なのですが以下のようなドキュメントが出来上がります。makefileを駆使することでコマンド一つでフロント、バック用のコード、ドキュメント生成までさせることもできます!

スクリーンショット 2021-04-11 10.25.51

ミドルウェアが便利→ミドルウェアでは認証や認証に関して関数一つ書くことによって認証の仕組みを実装できたりルートによって上書きすることができます。バリデーションはprotoファイルに書いて実装するのですがこちらもミドルウェアに一行追加すれば自動的に適用されます。

感じたデメリット

とにかく情報量が少ない→情報がかなり限られているような気がします。ドキュメントもそこまで詳しくないです。ミドルウェアに関してはさらに情報が少なくなります。ソースコードを読んだりgitのissueを漁りながら問題を解決する必要もありました。

envoyが必要→どうやらgrpc-webを使う場合にはプロキシが必要みたいです。設定自体も公式が用意しているテンプレートでほぼ対応可能(一部修正が必要)ですが使い方の勉強が必要だったり思いの外めんどくさい気がします。

まだ機能が不十分な箇所がある→こちらはgrpc-webに関してですがrestの時はクッキーを自動送信するためにwith credentialsといったオプションがあると思います。grpc-webでもそのような機能があるのですが機能が不十分なのか送ることができませんでした。エラーを見た感じcorsの問題ではなく純粋に送られていない気がします。生成されたコードに関しても存在しないものをimportしている行があって手動でコメントアウトする必要がありました。

まとめ

grpc,grpc-webを1週間使ってみての感想や自分の視点から感じたメリット・デメリットを挙げてみました。思っていた以上に簡単に開発することができドキュメントの生成機能やルートの名前を気にする必要がなかったりとrestと比べて考えるべき点が少ない気がします。

今後アプリケーションを作っていく時は使ってみたいと思います!

いいなと思ったら応援しよう!