Qt GRPC

Qt GRPC は、Qt Protobufモジュールとともに、.proto ファイルでメッセージとサービスを定義できるクライアント側の実装で、提供されるコードジェネレータを使用して、Qt フレームワークのフィールドと gRPC サービスにアクセスできるクライアントコードを生成します。Qt GRPCによって生成されたコードによって、クライアントサイドはgRPCサーバーと(サーバーがQtを使用しているかどうかに関係なく)コールやストリーミングメッセージを送信して通信することができます。

概要

gRPCはクロスプラットフォームの高性能リモートプロシージャコール(RPC)フレームワークで、多くの言語のクライアント/サーババインディングを生成します。通常は、マイクロサービススタイルのアーキテクチャでサービスを接続したり、モバイルアプリケーションやブラウザをバックエンドサービスに接続するために使用します。gRPCクライアントとサーバは、様々な環境で動作し、互いに対話することができ、gRPCがサポートする言語で記述することができます。詳細はgRPC入門を参照してください。

モジュールの使用

モジュールの前提条件

  • protoc .proto の仕様ファイルからコードを生成するには、Google プロトコルバッファコンパイラがインストールされている必要があります。Protocのインストールを参照してください。
  • gRPC ライブラリもインストールすると、ネイティブ gRPC チャンネルを使用できるようになります。詳細はgRPC for C++を参照してください。
  • OpenSSL Toolkitが必要な場合があります。

注: gRPCProtobuf をインストールし、Qt GRPC のサンプルを実行する方法については、vcpkg を使用した Windows 用のインストール例を参照してください。

Qt GRPC の機能を使い始めるには、.proto ファイルで必要なサービスとメッセージを定義する必要があります。helloworld.proto の例を参照してください:

// The service definition.
service Salutation {
  // Sends a greeting
  rpc SendHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

Qt ベースのプロジェクトに.proto ファイルを追加し、必要なソースコードを生成するには、protoc コンパイラとqtgrpcgen およびqtprotobufgen Qt プラグインを使用します。

このproto ファイルのソースコードへの処理は、Qt が提供する以下のコマンドを使用して CMake で自動化できます:

その結果、Qt GRPC機能を使用するCMakeプロジェクトファイルの完全な例は次のようになります:

cmake_minimum_required(VERSION 3.16...3.22)
project(MyProject)

find_package(Qt6 REQUIRED COMPONENTS Protobuf Grpc)
qt_standard_project_setup()

qt_add_protobuf(MyProtoMessageLib
    PROTO_FILES
        path/to/helloworld.proto
    PROTO_INCLUDES
        path/to/proto/include
)

qt_add_grpc(MyGrpcClient CLIENT
    PROTO_FILES
        path/to/helloworld.proto
    PROTO_INCLUDES
        path/to/proto/include
)

qt_add_executable(MyApp main.cpp)

target_link_libraries(MyApp PRIVATE MyGrpcClient MyProtoMessageLib Qt6::Protobuf)

上記の例では、MyGrpcClient というライブラリを生成するためにqt_add_grpc() CMake 関数を呼び出しています。

注意: .proto ファイルの API にメッセージが含まれている場合は、qt_add_protobuf() CMake 関数を呼び出して、プロジェクトの protobuf メッセージクラスを生成する必要があります。

最後に、MyGrpcClientMyProtoMessageLibライブラリにリンクするMyAppという実行可能ファイルのターゲットを作成します。

QML API

このモジュールのQML型は、QtGrpc のインポートから利用できます。この型を使用するには、.qml ファイルに以下の import 文を追加します:

import QtGrpc

C++ API

Qt モジュールの C++ API を使用するには、モジュール・ライブラリを直接リンクするか、他の依存関係を通 してリンクする必要があります。CMakeや qmakeなど、いくつかのビルドツールはこのための専用サポートを持っています。

CMake でのビルド

find_package() コマンドを使用して、Qt6 パッケージの中から必要なモジュール・コンポーネントを探します:

find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)

詳細については、CMakeによるビルドの概要を参照してください。

記事とガイド

参考文献

ライセンスと商標

Qt GRPC はThe Qt Company の商用ライセンスで利用できます。また、GNU General Public License バージョン 3 の下でも利用可能です。詳細はQt Licensingを参照してください。

gRPC®は The Linux Foundation の登録商標です。詳しくはhttps://grpc.io/をご覧ください。

ライセンスと帰属

Qt GRPC モジュールはThe Qt Company の商用ライセンスで利用できます。さらに、フリーソフトウェアライセンスでも利用可能です:GNU General Public License, version 3.詳細はQt Licensing を参照してください。

さらに、Qt 6.8.0のQt GRPCは、以下の許諾ライセンスの下でサードパーティモジュールを含むことができます:

gRPC, version 1.50.1

Apache License 2.0

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。