Craby: React Native向けのType-SafeなRust統合ツール
(craby.rs)React NativeでRustベースのモジュールを純粋なC++ TurboModuleと統合できるようにするツール、Crabyを紹介します。
ドキュメントはこちら: https://craby.rs
GitHub: https://github.com/leegeunhyeok/craby
Crabyとは?
Crabyは、Rustで高性能なネイティブモジュールを作成しながら、TypeScript - Rust - C++のフルスタック全体で型安全性を維持できる開発ツールです。React Native TurboModuleのプラットフォーム別レイヤー(ObjCTurboModule/JavaTurboModule)を使わず、純粋なC++ TurboModuleと直接統合することで、最高のパフォーマンスを引き出します。
パフォーマンス
他のソリューションとのベンチマーク比較(ベンチマーク参照):
- ExpoModulesと比べて20〜80倍高速
- 標準TurboModulesと比べて15〜20倍高速
- NitroModules(Swift/Kotlinベース、C++ではない)と比べて25〜30%高速
これは極端なスループットテスト(10万回呼び出し)であり、実際の利用環境では結果が異なる可能性があるため、参考程度にご覧ください。
主な機能
- 自動コード生成: TypeScriptでAPIを定義すると、Rust/C++バインディングを自動生成
- 型安全性: TypeScript、Rust、C++間でコンパイル時の型チェック
- Zero-Cost FFI: cxxを通じてRust-C++相互運用のオーバーヘッドを最小化
- シンプルなAPI: Rust実装にだけ集中すれば、残りはCrabyが処理
使用例
// モジュールスキーマ定義 (TypeScript)
interface Spec extends NativeModule {
add(a: number, b: number): number;
}
// 実際のモジュール実装 (Rust)
#[craby_module]
impl CalculatorSpec for Calculator {
fn add(&mut self, a: Number, b: Number) -> Number {
a + b
}
}
すべてのブリッジングコードはCrabyが自動生成するため、ユーザーは実際のモジュール(Rust)だけを実装すれば済みます。
詳しくはドキュメントやGitHubリポジトリをご参照ください。さまざまなフィードバックもいつでも歓迎します!
5件のコメント
良いプロジェクトですね。スターを付けました!!
怪物クンヒョクさん…
本当にすごい方々がたくさんいますね..
わあ……もしかして、このツールを作ることになったきっかけはあるのでしょうか? 私もこういうものを作ってみたいのですが、みなさんがどんなきっかけで作られるのか気になっていました。
最近、New Architectureへ移行しなければならない状況になり、TurboModuleの内部実装を見ながら「こうやってアプローチすれば十分に可能性がありそうだ」というアイデアから始まりました!