7 ポイント 投稿者 leegeunhyeok 2025-11-05 | 5件のコメント | WhatsAppで共有

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件のコメント

 
bangdy 2025-11-07

良いプロジェクトですね。スターを付けました!!

 
gargoyle92 2025-11-05

怪物クンヒョクさん…

 
mindok 2025-11-05

本当にすごい方々がたくさんいますね..

 
skageektp 2025-11-05

わあ……もしかして、このツールを作ることになったきっかけはあるのでしょうか? 私もこういうものを作ってみたいのですが、みなさんがどんなきっかけで作られるのか気になっていました。

 
leegeunhyeok 2025-11-06

最近、New Architectureへ移行しなければならない状況になり、TurboModuleの内部実装を見ながら「こうやってアプローチすれば十分に可能性がありそうだ」というアイデアから始まりました!