#author("2025-09-18T09:10:02+00:00","default:iseki","iseki") #author("2025-09-18T09:11:52+00:00","default:iseki","iseki") * gRPC - Google製 RPC (HTTP/2を使用) - 異なる言語間でも簡単に使用可能 *** 参考サイト - https://qiita.com/gold-kou/items/a1cc2be6045723e242eb - https://grpc.io/ *** 構成 **** RPC - 言わずと知れた RPC (データはバイナリ) **** Protocol Buffers - 言語に依存しない RPC用データフォーマット - proto ファイルに,データと通信情報等を記述する. **** HTTP/2 *** 通信方法 - 1リクエスト,1レスポンス (Unary RPC) - 1リクエスト,多レスポンス (Server streaming RPC) - 多リクエスト,1レスポンス (Client streaming RPC) - 多リクエスト,多レスポンス(Bidirectional streaming RPC) ** 実装 *** .NET (C#) - grpc-dotne (HTTP/2 by .NET) -- Unity では HTTP/2 by .NET のサポートなし *** Unity - Unity の Package Manager (UnityPM) では未対応 **** YetAnotherHttpHandler - Unity用のHTTP/2(gRPC) Client - https://github.com/Cysharp/YetAnotherHttpHandler - Unity 2022 以降では既にインストール済み? **** [[NuGetForUnity]] (Unity のパッケージをソースで管理) - [[NuGet]] を使用 - https://github.com/GlitchEnzo/NuGetForUnity - パッケージのインストール -- gRPC, Protobuf 関連をインストール -- MQTT 関連をインストール(必要なら) *** Linux (Rocky Linux) <pre> dnf config-manager --set-enabled crb # CRBリポジトリの有効化 dnf install grpc grpc-* dnf install protobuf-* </pre> **** Rust <pre> dnf install dotnet-* dnf install cargo </pre> *** めも ** 未整理 yum install cargo yum install grpc yum install grpc-* yum protobuf-* 647 yum install dotnet-* 651 dnf config-manager --set-enabled crb 652 yum install protobuf-compiler cmake -G "Unix Makefiles" \ -DCMAKE_INSTALL_PREFIX=$PREFIX \ -DCMAKE_CXX_COMPILER=$CXX \ -DCMAKE_CXX_FLAGS="-I$PREFIX/include $COMMON_CFLAGS" \ -DCMAKE_CXX_COMPILER_TARGET=$TARGET_TRIPLE \ -DCMAKE_C_COMPILER=$CC \ -DCMAKE_C_FLAGS="-I$PREFIX/include $COMMON_CFLAGS" \ -DCMAKE_C_COMPILER_TARGET=$TARGET_TRIPLE \ -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ -DCMAKE_BUILD_TYPE=Release \ -DLIBCXX_CXX_ABI=libcxxabi \ -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$BASEDIR/llvm-project/libcxxabi/include" \ -DLIBCXX_CXX_ABI_LIBRARY_PATH="$PREFIX/lib" \ -DLIBCXX_ENABLE_EXCEPTIONS=False \ -DLIBCXX_ENABLE_FILESYSTEM=False \ -DLIBCXX_ENABLE_MONOTONIC_CLOCK=False \ -DLIBCXX_ENABLE_RTTI=False \ -DLIBCXX_ENABLE_THREADS=False \ -DLIBCXX_ENABLE_SHARED=False \ -DLIBCXX_ENABLE_STATIC=True \ $BASEDIR/llvm-project/libcxx bolt;clang;clang-tools-extra;compiler-rt;cross-project-tests;libc;libclc;lld;lldb;mlir;openmp;polly;pstl;flang. Did you mean to enable it as a runtime in LLVM_ENABLE_RUNTIMES? mkdir build_unwind cd build_unwind cmake -DCMAKE_BUILD_TYPE=Release ../libunwind/ make -j$(nproc) make install ldconfig cmake -G "Unix Makefiles" \ -DCMAKE_CXX_COMPILER=g++ \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_CXX_FLAGS="-I/opt/GIT/llvm-project/libcxx/include -I/usr/local/include" \ -DCMAKE_CXX_COMPILER_TARGET=$TARGET_TRIPLE \ -DCMAKE_C_FLAGS="-I/opt/GIT/llvm-project/libcxx/include -I/usr/local/include" \ -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_MAIN_SRC_DIR="/opt/GIT/llvm-project/llvm" \ -DLIBCXXABI_LIBCXX_INCLUDE_DIRS="/opt/GIT/llvm-project/libcxx/include" \ -DLIBCXX_HEADER_DIR="/opt/GIT/llvm-project/libcxx/include" \ -DLLVM_ENABLE_RUNTIMES="libunwind" \ -DLIBCXXABI_ENABLE_EXCEPTIONS=False \ -DLIBCXXABI_ENABLE_THREADS=False \ -DLIBCXXABI_TARGET_TRIPLE=$TARGET_TRIPLE \ -DLIBCXXABI_ENABLE_SHARED=False \ -DLIBCXXABI_ENABLE_STATIC=True \ ../libcxxabi LLVM_MAIN_SRC_DIR=/opt/GIT/llvm-project/llvm -DCMAKE_BUILD_TYPE=Release \ c++: error: unrecognized command-line option ‘--print-resource-dir’; did you mean ‘--print-search-dirs’? -DCMAKE_CXX_FLAGS=-Wno-error=aggressive-loop-optimizations" cmake -G "Unix Makefiles" \ -DCMAKE_CXX_FLAGS="-I/opt/GIT/llvm-project/libcxx/include -I/usr/local/include" \ -DCMAKE_C_FLAGS="-I/opt/GIT/llvm-project/libcxx/include -I/usr/local/include" \ -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ -DCMAKE_BUILD_TYPE=Release \ -DLIBCXXABI_LIBCXX_INCLUDE_DIRS="/opt/GIT/llvm-project/libcxx/include" \ -DLIBCXX_HEADER_DIR="/opt/GIT/llvm-project/libcxx/include" \ -DLLVM_ENABLE_RUNTIMES="libunwind" \ -DLIBCXXABI_ENABLE_EXCEPTIONS=False \ -DLIBCXXABI_ENABLE_THREADS=False \ -DLIBCXXABI_TARGET_TRIPLE=$TARGET_TRIPLE \ -DLIBCXXABI_ENABLE_SHARED=False \ -DLIBCXXABI_ENABLE_STATIC=True \ ../libcxxabi