CLIツール
rive-app/rive-runtime avatar
rive-app/rive-runtime

RiveのC++ランタイム、rive-runtimeの実力と導入時の注意点

このプロジェクトは「Low-level C++ Rive runtime and renderer. Windows: Visual Studio 2022 with the C++ Clang Compiler for Windows and MSBuild support for LLVM (clang-cl) toolset individual components.」を基盤として、実践的に使えるオープンソース実装を提供し、再利用可能なツールチェーンと統合手段を備えています。

スター 1,178フォーク 120C++MIT
GitHub

ひと目でわかる

これは何?
rive-runtimeはRiveの最下層を担うC++17製ライブラリで、.rivファイルの読み込みから状態機械の進行、GPU描画までを抽象Renderer経由で処理する。MetalやVulkanなど複数バックエンドを持つ一方、Windowsでのビルドには特有の前提条件がある。
誰に向いている?
rive-runtimeは、Riveの公式ランタイムを自前のC++アプリに組み込みたい開発者、特にMetalやVulkan、D3D11/12といった低レベルAPIを直接扱うグラフィックスエンジンを構築しているチームに向いている。逆に、プラットフォームごとのラッパーが既に十分な機能を提供している場合や、Windows環境でVisual Studioの標準MSVCツールチェーンしか使えない場合は、ビルドの前提条件を満たすのが難しく、導入コストが高くなる。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 2 日前です。
何の言語で書かれている?
主に C++ です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

Riveの最下層、その役割と対象読者

rive-runtimeはRiveのC++ランタイムであり、RiveのApple、Android、Flutter、Unity、Unreal、Web向けランタイムすべてが内部で利用するライブラリだ。つまり、このライブラリ単体を触るのは、上位のラッパーでは足りないカスタム統合を考える開発者か、Riveの描画エンジンそのものを研究したい人に限られる。READMEには、.rivファイルの読み込み、アートボードの状態機械のクエリ、アートボード階層の変更とArtboard::advanceによる効率的な解決、そしてMetal、Vulkan、D3D11、D3D12、OpenGL/WebGL向けのベクターレンダラーが含まれるとある。対象はC++17を使える環境で、低レベルグラフィックスAPIを直接扱うエンジニアだ。

Renderer抽象とGPUバックエンドの構造

描画は抽象的なRendererインターフェースを通じて行われ、外部のベクターレンダラーをフックすることもできる。組み込みのGPUレンダラーはRiveRendererと呼ばれ、RenderContextImplバックエンドとしてMetal、Vulkan、D3D11、D3D12、OpenGL/WebGLをサポートする。この設計は、プラットフォームごとに描画コードを書き直す必要を減らす一方で、各バックエンドの初期化やリソース管理を理解するコストを開発者に課す。READMEからは、バックエンドの具体的な切り替え方法や初期化シーケンスは読み取れないが、ビルド時にターゲットのSDKが必須であることから、プラットフォーム固有の設定が前提となるのは明らかだ。

ビルド手順、Windowsでのclang-cl要件

ビルドはpremake5をラップしたスクリプトで駆動する。macOS/Linuxではbuild/build_rive.sh、Windowsではbuild_rive.ps1を使うが、後者はbashスクリプトに委譲するため、Git for WindowsかMinGWのbashがPATHに必要だ。macOS/Linuxの例として、リポジトリをクローンし、testsディレクトリに移動して../build/build_rive.sh releaseを実行する。Windowsでは..\build\build_rive.ps1 releaseだ。Windowsの前提条件はVisual Studio 2022にC++ Clang Compiler for WindowsとMSBuild support for LLVM (clang-cl) toolsetを追加すること。デフォルトはclang-clだが、--toolset=mscを指定すればMSVCのcl.exeでもビルドできる。この柔軟性は良いが、READMEが「lua warning suppressions cover MSVC too」と述べている通り、警告抑制は両ツールチェーンを想定している。

ビルド成果物とクロスコンパイルの種類

成果物はビルドしたディレクトリ(典型的にはtests/)のout/<config>/に出力される。設定名はOSとアーキテクチャを反映し、out/releaseやout/debugがホストビルド、out/ios_release、out/android_arm64_release、out/wasm_releaseがクロスコンパイルだ。コアライブラリはlibrive.a(Windowsではrive.lib)、GPUレンダラーはlibrive_pls_renderer.a(rive_pls_renderer.lib)として生成される。サンプルアプリのplayerは.rivファイルを読み込んで描画する。さらにgoldens、gms、benchというテスト用バイナリもビルドされる。クロスコンパイルのオプションはbuild_rive.sh ninja release wasmのように引数で指定でき、iOS、Android、WebAssemblyをカバーする。ただし、各ターゲットのSDKが事前にインストールされていることが前提で、READMEにはAndroidのデフォルトがarm64とあるが、x86_64向けの指定方法は明記されていない。

テスト戦略、goldenテストが主役

テストの中心はgolden testingだ。既知のシーンを描画し、チェックイン済みの参照画像と差分を取る。goldensとgmsというテストハーネスがその役割を担い、out/<config>/goldensやout/<config>/gmsにビルドされる。ユニットテストはCatch2フレームワークを使い、tests/unit_testsディレクトリで./test.shを実行する。ユニットテストはtests/unit_tests/runtime/とtests/unit_tests/renderer/に分かれ、xxx_test.cppというファイル名で追加するとハーネスが自動的に認識する。goldenテストのリファレンス画像の更新手順はREADMEからは詳細が読み取れないが、tests/ディレクトリに説明があるとされている。実際に描画結果が環境依存で変わる可能性を考えると、goldenテストの運用は慎重に行う必要がある。

macOS限定のメモリチェックと逆アセンブル機能

macOSではユニットテストをleaksツールでラップして実行できる。tests/unit_testsディレクトリで./test.sh memoryとすると、leaks --atExitがテストバイナリに適用される。この機能はmacOSに標準搭載のため追加インストール不要だが、LinuxとWindowsではmemoryフラグは無視される。また、macOS/Linux向けにDisassembly ExplorerというVSCode拡張を使った逆アセンブルタスクが用意されている。.vscode/tasks.jsonにdisassembleタスクがあり、clang++を直接呼び出すため、macOSのXcode CLIツールやLinuxのclang++がPATHにある必要がある。Windowsのデフォルト環境ではclang-cl.exeはあるがclang++.exeは提供されないため、このタスクはWindowsでは動かない。これは、クロスプラットフォームを謳いつつも、開発ツールの細部がmacOS/Linux偏重であることを示している。

ライセンスとメンテナンスの観点

ライセンスはMITで、商用利用や組み込みに柔軟な条件を提供する。ただし、READMEには依存ライブラリのライセンスについての言及はなく、premake5をビルド時にクローンする仕組みがある。このpremake5はピン留めされたバージョンが使われるため、再現性はある程度保証されるが、初回ビルド時にネットワークアクセスが必須だ。メンテナンスコストとしては、ビルドスクリプトがbashに依存している点が挙げられる。WindowsではPowerShellラッパーがあるものの、結局bashが必要で、Git for Windowsの設定を「Use Git and optional Unix tools from the Command Prompt」にしないとsh.exeがPATHに乗らない。この前提を忘れると、Windowsでのセットアップで無駄な時間を費やすことになる。

編集部の結論

rive-runtimeは、Riveの公式ランタイムを自前のC++アプリに組み込みたい開発者、特にMetalやVulkan、D3D11/12といった低レベルAPIを直接扱うグラフィックスエンジンを構築しているチームに向いている。逆に、プラットフォームごとのラッパーが既に十分な機能を提供している場合や、Windows環境でVisual Studioの標準MSVCツールチェーンしか使えない場合は、ビルドの前提条件を満たすのが難しく、導入コストが高くなる。導入前に、ターゲットとするプラットフォームのSDK(Vulkan SDKやWindows SDK)が揃っているか、clang-clがインストールされているかを確認し、まずtestsディレクトリでplayerサンプルが正しく描画できることを確かめるべきだ。また、goldenテストのリファレンス画像を更新する手順を理解しておくと、描画結果の回帰を防ぐのに役立つ。

公式情報源

  1. Official README
  2. Project repository
コミュニティノート

コミュニティノート