web-dev-qa-db-ja.com

Reactネイティブvs.「実際の」ネイティブ

私は、モバイルアプリを主な製品とする消費者向けの会社で働いています。

私たちのモバイルアプリの月間アクティブユーザーは10万人で、Cordova + Kendo Mobile + Telerik Appbuilderを使用して開発されています(数日後に廃止されます)。コードをネイティブソリューション(実際のネイティブまたはReactネイティブ)に移行することを検討しています。

まず、Kendo Mobileを使用してCordova用のアプリを開発することは、私たちにとって地獄でした。

これは主に剣道によるものですが、さまざまなプラグインへの依存が原因でもあります(いくつかは素晴らしいプラグインで、他はそれほど多くありません。プラグインを使用するか、ネイティブコードとCordovaプラグインを自分で作成するかは自由です)。

もちろん、最大の問題はパフォーマンスです。そして、私たちのアプリにはいくつかの複雑な計算やアニメーションなどはありませんが、無限のリストをスクロールするときの違い、または画面間の高速切り替えは明らかです。そのため、ネイティブの場合はすぐに使用できるように最適化(またはコードをゼロから作成)するために多くの時間を費やしてきました。このため、新機能のリリースを簡単に見積もることができず、開発プロセス全体が遅くなっています。

ビジネスの観点からは、React Nativeを使用する方が良いでしょう。なぜなら、すでに3人のJS開発者がいて、ネイティブ開発者は不足していて高価だからです。

一方、私たちはハイブリッド開発の経験全体から少し心を傷つけられており、Reactネイティブが本当に宣伝されているとおりに良い成熟していることを確信できず、間違いをする時間はありません。

私たちの最大の恐れは次のとおりです。

  • Reactネイティブは誇大広告であり、「次の大きなこと」が発生すると、誰もがそのワゴンに飛びつきます(例:Google Flutter)
  • オープンソースプラグインへの依存(いつでも破棄できます)
  • 開発は理論的には高速です(コードの大部分が共有されているため)。ただし、アプリが本当にネイティブに見える/感じられるようにするには、さまざまなものの最適化に多くの時間を費やす必要があり、最終的にはかなり遅くなります。
  • 私はiOSでネイティブの実行を完璧に反応するいくつかの記事を読みましたが、Androidは別の話です-遅く、さまざまなAndroid=の間に癖があります(eg 。5.1.0ではうまくいくが5.1.1ではうまくいかない)
  • アップルは何かを変えるでしょう。 (ノッチを導入するなど)、テクノロジーの制限により、変化に適応するには長い時間がかかります

私の頭の上にあるのは、私たちのアプリが持っているいくつかの要件であり、それらすべてがReactネイティブで適切にカバーされているかどうかはわかりません:

  • 無限のフィードをスクロールしている間のネイティブの感触(フィードはFBのフィードに似ています)
  • アプリ内購入
  • ネイティブのオーディオおよびビデオ再生
  • バックグラウンドストップウォッチ
  • 国際化
  • ディープリンク
  • AnalyticsおよびCrashレポートシステム(GAおよびCrashlyticsなど)
  • SQLiteまたはその他のDB/Storageソリューション
  • 画面間のネイティブのようなナビゲーション
  • グラフとチャート(D3.jsと同様)

あなたの考えや経験をいただければ幸いです。

5
hyperN

以前はBlombergアプリをネイティブのreactのサンプルとして使用していました。概念実証が必要な場合は、それを確認できます。無限のフィードと複雑なUIがあります。スクロールとタブの切り替えはそれほど高速ではありませんが、それでも機能します。そして、ネイティブ開発を使用してこのすべてのUIを作成することは困難です。

現在、AndroidおよびiOS上のReact Native)でネイティブでプロジェクト(無限フィードも含む)を開発しています。ネイティブバージョンはAndroidで実行され、2つのバージョンを比較しました。スクロールパフォーマンスは同等です。Reactネイティブはすべてのアプリロジックをバックグラウンドスレッドで実行しているため、UIスレッドは無料です。私たちのAndroidネイティブアプリは、はるかに多くのUIスレッドを使用しました。

ネイティブはまだ安全な賭けであり、パフォーマンスに問題が発生した場合は、修正できると確信しています。

多くの要件があり、とにかくプログラミングのネイティブ部分も必要になります。

1
dmitrdem