BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース React Native 0.64でHermes JavaScriptエンジンがiOSで利用可能に

React Native 0.64でHermes JavaScriptエンジンがiOSで利用可能に

原文(投稿日:2021/03/20)へのリンク

React Nativeの最新バージョンでは、iOSでのHermes JavaScriptエンジンのサポートを追加し、React 17に移行する

Hermesは、AndroidでのReact Nativeアプリの実行を最適化するためにFacebookが作成した軽量のJavaScriptエンジンである。Hermesが約束する主な利点は、アプリ起動の高速化と事前のコード最適化である。これは、バイトコードサイズと実行時パフォーマンスの改善が目的である。

Hermesは、React Nativeを実行するために最適化されたオープンソースのJavaScriptエンジンです。メモリ使用率を減らし、ダウンロードサイズを小さくし、アプリが使用可能になるまでの時間、あるいは「操作可能になるまでの時間」(TTI)を減らすことで、パフォーマンスを改善しています。

以前はAndroidでのみ利用可能であったが、HermesはiOSのReact Nativeアプリでも使用できるようになった。既存のプロジェクトをHermesに切り替える前に、React Native 0.64を使用するようにプロジェクトをアップグレードし、すべてが期待どおりに機能することを確認する必要がある。その後、ポッドファイルでhermes_enabledtrueに設定することで、iOSでHermesを有効にできる。Androidでは、android/app/build.gradleファイルにenableHermes: trueを追加することで、Hermesを有効にできる。

React NativeアプリをHermesに移動する前に、すべての依存関係に互換性があり、サポートされていない機能を使用していないことも確認する必要がある。この点でも、React Native 0.64では、react-native-firebaseや状態管理パッケージmobxなどのパッケージとの互換性に必要なProxyのサポートが追加されており、改善されている。

最後の注意として、Hermesリリースは特定のReact Nativeバージョンに厳密に関連付けられているため、常に対応するバージョンを使用する必要がある。

起動時間を改善することを目的としたReact Native 0.64におけるもう1つの変更は、デフォルトでインラインrequireが有効になることである。このオプションは以前のMetroバージョンにすでに存在していたが、オプトインとして利用可能であった。つまり、インライン要求は、JavaScriptモジュールの実行を、起動時にロードするのではなく、実際に使用される瞬間まで遅らせる。

前述のように、React Native 0.64はReact 17に移行する。そこには開発者向けの新しい機能の追加はない。React 17は主に、既存のアプリを新しいReactバージョンにアップグレードするプロセスを簡素化するための基盤を構築している。これは、1つのページで2つの異なるバージョンのReactを混在させることで実現される。これにより、アプリのコンポーネントをコンポーネントごとにアップグレードできる。内部的には、React 17では、イベント移譲の動作方法が変更されている。その方法は、documentレベルではなく、ReactがレンダリングされるルートDOMコンテナーにイベントハンドラーをアタッチするように変更されている。この変更により、異なるReactバージョンを共存させることができるが、一部のアプリでは後方互換性がなくなる可能性もある。

この記事に星をつける

おすすめ度
スタイル

BT