Qt GRPC
Qt GRPCでは、 Qt Protobuf モジュールと連携して、 gRPC™ サーバーとの高速かつメモリ効率に優れた通信を可能にします。gRPC のサービスをQtフレームワークにシームレスに統合し、サーバーがQtベースであるかどうかにかかわらず、異なるプログラミング言語や環境間での通信を可能にします。
概要
gRPC は、クロスプラットフォームで高性能なリモートプロシージャコール(RPC)フレームワークです。Protobufコンパイラ(protoc )を使用して、さまざまなプログラミング言語向けに、Protobufスキーマ内のservice セクションからクライアントおよびサーバーのインターフェースを生成します。 これは、マイクロサービス型アーキテクチャにおけるサービス間の接続や、モバイルアプリケーションやブラウザとバックエンドシステムを連携させるために広く利用されています。詳細については、gRPCの概要を参照してください。
Qt GRPC は、よく知られたシグナル&スロット(Signals & Slots)メカニズムを用いて、リモートプロシージャコール(RPC)の非同期性を処理する C++ およびQt Quick API で構成されています。また、protoc を使用した Qt 独自のインターフェース生成を効率化するためのコマンドラインツールや CMake API も提供しています。
Qt GRPC 現在はクライアント側の機能をサポートしています。つまり、gRPC互換のサーバーと通信することが可能です。対象となるサーバーには、独自のprotobuf APIを備えたサーバーや、Google APIなどの公開APIが含まれます。
モジュールの使用方法
モジュールの前提条件
protocであるProtocol Buffersコンパイラは、Qtコードジェネレータプラグインを実行するために必要です。「Protocol Buffersのインストール」を参照してください。- オプション:SSLサポート。
- オプション:サンプルを実行するためのgRPC C++。
注: gRPC およびProtobufの インストール方法、ならびにQt GRPC のサンプル実行方法については、「vcpkgを使用したWindowsへのインストール例」を参照してください 。
C++ API
Qtベースのプロジェクトにprotobufファイルを追加し、必要なソースコードを生成するには、protoc コンパイラと、qtgrpcgen およびqtprotobufgen のQtプラグインを併用してください。
- qtprotobufgen ツールは、protobufメッセージ定義からQt クラスを生成します。このプロセスを自動化するには、qt_add_protobufCMake コマンドを使用します。
- qtgrpcgen ツールは、protobufサービス定義からインターフェースを生成します。このプロセスを自動化するには、CMake コマンド `qt_add_grpc` を使用してください。
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_executable(MyApp main.cpp)
qt_add_protobuf(MyApp
PROTO_FILES
path/to/messages.proto
)
qt_add_grpc(MyApp CLIENT
PROTO_FILES
path/to/service.proto
)
target_link_libraries(MyApp PRIVATE Qt6::Protobuf Qt6::Grpc)QML API
モジュールの QML 型は、QtGrpc によるインポートを通じて利用可能です。これらの型を使用するには、.qml ファイルに次のインポート文を追加してください:
import QtGrpc記事とガイド
参考文献
例
ライセンスおよび帰属表示
Qt GRPC モジュールは、The Qt Companyによる商用ライセンスの下で提供されています。さらに、このモジュールはフリーソフトウェアライセンスである「GNU General Public License(バージョン3)」の下でも利用可能です。詳細については、「Qtのライセンス」を参照してください。
さらに、Qt 6.12.0 に含まれる `Qt GRPC ` には、以下の許容的なライセンスに基づくサードパーティ製モジュールが含まれている場合があります:
Apache License 2.0 |
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.