メインコンテンツへ移動

React Native 簡史

無料2019-08-25#Tool#react native history#history of react native#ReactNative history#the birth of react native#React Native演进史

誕生から現在までのReact Nativeの歩み

誕生

React Nativeは、2013年のFacebook内部ハッカソン(hackathon)から誕生しました:

Facebookのハッカー文化の本質に従い、React Nativeは2013年夏のハッカソンプロジェクトとして始まりました。

In the beginning: React Native’s roots より引用)

Reactから始まる物語

Reactの大規模な採用に伴い、FacebookはReactとWeb技術の優位性をさらに実感し、ネイティブ開発もWebのように「Move fast(素早く動く)」ことを望みました:

  • 高速なイテレーション(Rapid iteration cycle):Webは1日に2回リリース可能で、製品の更新サイクルが短い。

  • 素早いフィードバック(Immediate testing feedback):Webならリリース後すぐにユーザーに届き、A/Bテストなどの実験結果も即座に得られ、製品の進化が早まる。

  • 高速な開発(Rapid development velocity):Appを再ビルドすることなく、ブラウザをリロードするだけで変更が反映される。

この目的を達成するために、Facebookは3つのアプローチを試しました:

  • WebView:ネイティブがWebViewコンテナを提供し、業務ロジックをWeb技術で開発。Webの開発体験をそのまま持ち込めるメリットがあったが、Web技術の制約により体験がネイティブに及ばず、パフォーマンスと拡張性が期待に満たなかったため断念。

  • Porting React to native:Reactそのものをネイティブ実装に移植するという大胆なアイデア。2015年にiOS版(ComponentKit)、2017年にAndroid版(Litho)を完成させた。これによりネイティブ開発でもUIの予測可能性やFlexboxレイアウトといったReactの利点を享受できるようになったが、開発効率の向上という初衷(変更のたびに再ビルドが必要)は満たせず。またWeb版Reactとの互換性がなく、Webエコシステムで構築されたRelayなどの強力なツールを活用できなかった。

  • Scripting native:JavaScriptを通じてネイティブAPIを呼び出す。Webの高速イテレーション能力を持ちつつ、Web技術に縛られず、JavaScriptエコシステムとも共存できる、まさに完璧なソリューションに見えた。

そして、React Nativeこそが、この3つ目のアプローチの最終的な成果なのです

2015年

2015年1月のReact.js Confでこの内部プロジェクトが初めて公表され、5月のF8 Conferenceで正式にオープンソース化されました。当初はiOSのみでしたが、同年9月にはAndroidもサポートされました。

2016年

Microsoft UWPとSamsung Tizenのサポートにより、React NativeはモバイルからPC(Win 10)、ゲーム機(Xbox One)、リストバンド(Gear Fit 2)、スマートテレビ(SUHD)、さらにはホログラフィック・ゴーグル(HoloLens)へと広がりました。また、開発体験、パフォーマンス、API能力も高速なイテレーションの中で絶えず向上しました。

2017年

月次のイテレーション計画が確立され、コミュニティチームを含む定期的な会議が開催されるようになりました。パフォーマンスは引き続き重要なテーマであり、アニメーションやList Viewなどの重要な更新はいずれもパフォーマンス最適化に関連しています。また、Prepackなどを活用したビルド時のパフォーマンス最適化の探究も始まり、React Nativeコアの初期化時間を大幅に削減することを目指しました:

我々はPrepackのようなプロジェクトやビルド時の処理を増やすことで、React Nativeブリッジのコストをゼロに近づける計画です。

2018年

ネイティブとReact Nativeのハイブリッドアプリをより良くサポートするため、コアチームはアーキテクチャのアップグレード計画Fabric)を始動させました。これには、スレッドモデルのリファクタリング、React非同期レンダリングへの対応、React Nativeコアの簡素化などの大幅な改修が含まれます。同時に、FacebookはJSI(JavaScript Interface)を含むインフラのオープンソース化も計画しました(詳細は Open Sourcing Internals and Updated Tooling を参照)。また、バージョン管理、RFC、議論プロセスなど、オープンソースコミュニティの運営も正規化されました。

2019年

オープンソースコミュニティの参加によりアーキテクチャのアップグレード計画は急速に進展し、一部の非コアモジュールがReact Native本体から切り出されて独立してメンテナンスされるようになり、良い成果を上げています:

これらのモジュールはReact Native内部にいた頃よりも多くのサポートを受けており、これはコミュニティにとって大きな前進であることを示しています。

同時に、パフォーマンス最適化の手が止まることはありませんでした。Androidプラットフォームでは、さらなるパフォーマンス向上を求めて、従来のJavaScriptCoreから Hermes エンジンへと切り替えられました:

Hermesは、Android上でReact Nativeアプリを実行するために最適化されたオープンソースのJavaScriptエンジンです。多くのアプリにおいて、Hermesを有効にするだけで、起動時間の改善、メモリ使用量の削減、アプリサイズの縮小が実現できます。

参考文献

コメント

コメントはまだありません

コメントを書く