概要
APIの構築におすすめなのがgRPCです。API作成は主にRest、gRPC、GraphQLの3種類あります。それぞれメリットデメリットがあります。
今回は特にgRPCについて解説していきます。
目次
gRPCの基礎知識
gRPCって何?
gRPCはGoogleが開発したRPC技術です。Protocol BuffersというGoogleが開発した(IDL)インターフェース定義言語で定義して、プログラミング言語でデータのやり取りを実装します。
RPCって何?
PRC(Remote Procedure Call)の略で通信プロトコルのことです。他のアプリと他のアプリの情報のやり取りをする時に通信する必要があります。その時に使う通信手段ということです。
IDLって何?
インターフェース定義言語と言われており、以下のことを定義します。gRPCの場合はProtocol BuffersというGoogleが開発した言語で定義します。
- APIにリクエストする時にどのような項目を送るのか
- APIから返ってくるレスポンスの項目をどうするのか
- APIをどこのURLに送るのか
gRPCのメリットデメリット
gPRCのメリット
Protocol BuffersというIDLでAPIの定義をすることができます。
双方向通信が高速です。
gRPCのデメリット
API構築する時の方法3つ
APIを構築する方法は3種類あります。メジャーな順に概要を解説していきます。
- REST
- gRPC
- GraphQL
REST
Representational State Transferの略です。API作成の定義に使用されるなかで最も有名な作成方法です。HTTPメソッドでアクセスし、データの送受信を行います。
gRPC
今回の本題であるgRPCはProtocol Buffersという定義言語を使った高速通信ができます。
GraphQL
クエリ言語と言われており、SQLのような命令文書を書くことで必要なデータを取得することができます。
スキーマ言語 Protocol Buffers
わかりやすく伝えるとAPIのエンドポイントとリクエスト、レスポンスを定義するための言語です。
スキーマ言語というのはXMLやJSONといったデータの型を入れる言語のことです。その一つにProtocol Buffersというのが存在します。
gRPCの確認方法
gRPCを開発していく上で必要なツールがあります。
- Evans
- gRPCurl
- BloomRPC
Evans
gRPCはcurlでリクエストを送信することができませんがEvansというデバッグツールを使うことでcurlのようにデータの送受信をコマンドで確認することができます。
gRPCurl
こちらもEvans同様curlのように利用することができます。EvansとgRPCurlは基本的に変わりません。
BloomPRC
私お一番のおすすめです。GUIで利用することができます。RESTの場合だったらPOSTMANというツールがあります。似たソフトウェアです。
対応言語
Python
JAVA
C#
C++
Go言語
Dart
PHP
Haskell
Ruby
Kotolin
Objective-C
Javascript
TypeScript
技術選定のアドバイス
言語の選定はエンジニアが集まりやすいかどうかという観点と言語スピード品質の観点があります。
エンジニアが集まりやすい観点
エンジニアが多いのはJAVAやPHPといった言語は昔からあるので人は集まりやすいです。その中でRESTで作成するAPIを選択すると人は多くスピード感のある開発が可能になります。
スピード・品質
Go言語を選択すると処理速度は早く型もしっかりしているので品質も高いです。エンジニアは少ないですがしっかりしたものは作成できます。またさらに新しい通信のgRPCも処理速度が速いのでこちらを選択することが正しいです。
まとめ
様々なAPI作成の方法があります。細かくいうとメリットデメリットはありますが、正直作り方が違うだけで機能は同じです。
データベースで言うSQLのようにProtocol Bufferというスキーマ言語があり、多少は複雑です。それぞれの企業でいろいろ模索しながら開発しているので全ての作成方法をマスターしておくことがエンジニアとして重宝されるので3つの使い方は勉強しておいた方がいいでしょう。