gRPCの概要
gRPC(ジーアールピーシー)はGoogleが2015年に開発したオープンソースのRPCです。RPC(Remote Procedure Call/遠隔手続き呼び出し)とは、ネットワーク上の他端末と通信するための仕組みのことで、これによって他端末のプログラムをリモートで実行することができます。
gRPCは、Google社内で10年以上利用されていた独自のRPCであるStubbyをもとにしており、SPDYやHTTP/2、QUICの台頭に連動して標準化されました。
gRPCの主な特徴
gRPCは、クライアントアプリケーションが他端末上のサーバーアプリケーションのメソッドを直接呼び出せるため、分散アプリケーションやサービスを容易に作成できます。
リモートで実行できるメソッドはクライアントのスタブに記載されています。スタブからメソッドを指定すると、サーバー側にて指定されたメソッドを処理します。
引用元:https://grpc.io/docs/what-is-grpc/introduction/
他のコンポーネントとのやりとりを記述するIDL(Interface Definition Language)としてProtocol Buffersを利用しています。
Protocol Buffersとはオープンソースのバイナリシリアライズプロトコルであり、サービスの定義やクライアントライブラリの自動生成を容易に実施できます。
そのため、異なる言語やプラットフォーム同士であっても効率よくデータのやりとりができます。
またgRPCはHTTP/2上で動作するため、双方向ストリーミングや1つのTCP接続に対する多重リクエストを実現します。これにより、gRPCを用いてレスポンシブでリアルタイム性のあるアプリを開発することができます。
gRPCのユースケース
gRPCはiOSおよびAndroid用のライブラリを生成でき、HTTP/2を使用してプロキシやファイアウォールを容易に通過できるため、モバイルクライアントやWebクライアントをバックエンドサービスと繋げる際に利用されています。ブラウザで使用するJSライブラリを開発する際にも利用されています。また、マイクロサービスの相互接続として理想的であり、Googleでもマイクロサービスを接続するためにgRPCを使用しています。
下記URLに具体的なユースケース例の記載があります。
https://grpc.io/showcase/
gRPCの動作環境
gRPCはC++やJava、python、Go、Rubyなどさまざまな言語に対応しています。
言語ごとの公式サポート状況は下記の表の通りです(※202211月現在)。
C/C++ |
Linux,Mac:GCC 6.3以上、Clang 6以上 Windows (10以降):Visual Studio 2017以上 |
C# |
Linux,Mac:.NET Core, Mono4以上 Windows (10以降):.NET Core, NET4.5以上 |
Dart |
Linux,Mac,Windows:Dart:2.12以上 |
Go |
Linux,Mac,Windows:Go 1.13以上 |
Java |
Linux,Mac,Windows:Java 8以上(Android:Kitkat以上) |
Kotlin |
Linux,Mac,Windows:Kotlin:1.3 以上 |
Node |
Linux,Mac,Windows:Node v8 以上 |
Objective-C |
macOS (10.10以上)、iOS(9.0以上):XCode 12以上 |
PHP |
Linux,Mac:PHP:7.0以上 |
Python |
Linux,Mac,Windows:Python:3.5以上 |
Ruby |
Linux,Mac,Windows:Ruby:2.3以上 |
最新の情報は、下記URLをご参照ください。
https://grpc.io/docs/
gRPCのライセンス
gRPCのライセンスは、「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。
参考情報
公式サイト
https://grpc.io/
ソースコードのダウンロード
https://github.com/grpc/grpc/releases
gRPCのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。
・オープンソース年間サポートサービス