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が必要な場合があります。
注: gRPC
とProtobuf
をインストールし、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 プラグインを使用します。
- Qt Protobuf プラグインは、関連する protobuf メッセージのシリアライズとデシリアライズに使用できるクラスを生成します。
- Qt GRPCプラグインは、protoファイルからgRPCクライアントクラスを生成します。
この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 メッセージクラスを生成する必要があります。
最後に、MyGrpcClientとMyProtoMessageLibライブラリにリンクする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は、以下の許諾ライセンスの下でサードパーティモジュールを含むことができます:
Apache License 2.0 |
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。