BridgeとJSIとFabricについて調べてみた

React Nativeがどのように動いているかをすこし勉強してみました。

そうすると、『Bridge』と『JSI』『Fabric』という用語がでてきました。

 

下記HP参照にしてます。

qiita.com                                                                                                                   

 

flatirons.com

 

ここからの説明は、素人がこのように理解しましたということであり、正確には異なる部分もあり得ます。

 

従来のReact Nativeでは、Bridgeというものが存在し、JavaScript側のコードを、AndroidiOSのコードに変換しておりました。それぞれとBridge間の通信はJSONで行っております。どういうことかというと、JavaScriptからのJSONの情報でAndroidなどの方で、クラスなどを再構築していくで再現するということです。

JSIとは、JavaScript Interfaceの略です。Interfaceというのは、通常の用語でいうところのアダプターのことです。

これの誕生で、以下の2つの利点があり、それにより、React Nativeの動作速度を上げることができるようになったようです。

①従来のJSCというEngineだけでなく、他のEngineを使用することができるようになったようです。

②Bridgeを使用するとすべて非同期処理になるが、JSIを使用することで、『非同期すべき処理は非同期で、同期でよい処理は同期で』行うことができるようになる。これができるのは、JSIがC++コードを引いてきてその中で実行することができる点および、Object-CおよびAndroidもC++コードと容易に変換可能である点にある。

 

①については、最近React Nativeアプリ開発していると、Terminalでよく、『hermes』という用語が出てきませんでしょうか?某メーカーと同じなので覚えやすく、高級感があります。これです。軽量でスペックが低い端末でもさくさく動くようになるようです。

今や特に設定なくても、React Nativeアプリ作成の裏で、このhermes engineが動いてくれてます。

 

②について、JSIの仕組みを利用して、FabricやTurbo modulesとして、同期でよい処理は同期で行うことで、動作速度を上げているようです。

 

下記も参考になりました。

medium.com