2023年3月9日木曜日

iOS & Android 用 React Native離れは進んでいる?特徴や他の技術との違いを解説。WEB用はReact.js(React)で御座います。

https://mid-works.com/columns/freelance-wordlist/freelance-engineer-knowhow/1138156


React Native離れは進んでいる?特徴や他の技術との違いを解説
「モバイルアプリ開発にも興味があるけど、また一から言語を学ぶのって気が重い」
「クロスプラットフォームはいくつかあるけど、React Nativeってどうなんだろ」
「サジェストにはReact Nativeオワコン、って出るけど、本当にReact Native離れは進んでるのかな。将来性はないのかな」
React Nativeに興味はあるけれど、調べると「オワコン」や「React Native離れ」などネガティブなワードが出てきて不安を覚えていませんか。

この記事ではReact Nativeがオワコンと言われた理由やメリットデメリット将来性の高さなどを紹介します。

この記事を読むことでReact Nativeの特徴や、メリットデメリットを知ることができます。ぜひご一読ください。

React Nativeの基礎知識

React Native離れは進んでいる?特徴や他の技術との違いを解説
React NativeはJavaScript使用し、AndroidおよびiOS用のネイティブアプリを開発できるクロスプラットフォームです。

React Nativeは2015年にMeta Platforms(旧Facebook)が発表しました。FacebookやSkype、UberEatsなどがReact Nativeを採用しています。

React Nativeはアプリ開発用フレームワーク

React NativeはAndroidおよびiOS用のネイティブアプリを開発するためのクロスプラットフォームです。

Web開発向けの言語、JavaScriptを用いて、AndroidおよびiOSの両方で動作するネイティブアプリを作成できます。

JavaScriptを使うことでWebエンジニアでもネイティブアプリ開発ができます。また、AndroidおよびiOSのアプリ一つのプラットフォームで作れるので、個別に開発するよりも工数が削減できます。

それにより人材確保や工数削減といった利点が生まれます。

React.jsとの違い

React.jsとはUI構築のためのJavaScriptライブラリです。ReactやReact.JSとも表記されます。

React.jsはUIを作るために特化したJavaScriptライブラリで日本のみならず世界的に人気のあるオープンソースライブラリです。主にWebアプリのために設計されています。

一方、React Nativeは、JavaScriptライブラリであるReactを使用し、ネイティブアプリを開発するクロスプラットフォームとなり、モバイルUIを構築するために設計されました。

React Native離れと言われ始めた理由

React Native離れは進んでいる?特徴や他の技術との違いを解説
2019年ごろから「React Nativeオワコン」言われ始め、React Native離れが囁かれています。

その理由として、2018年宿泊予約プラットフォームのAirbabがReact Nativeの使用を中止したことが大きな要因として挙げられます。

また、GoogleがリリースしたFlutterが台頭してきたこと、さらに、Apple社のSwiftUIの発表されたことなどもReact Native離れが囁かれる要因です。

AirbabはReact Nativeの機能の未成熟さなどの技術面の問題を理由に使用を中止、ネイティブアプリを選択すると発表しました。翌年、Apple社のSwiftUIが発表され、iOSネイティブアプリが作りやすい環境へ変わりました。

また、React Nativeと同じクロスプラットフォームであるFlutterの人気が急上昇し、Flutter優位の状態が続いています。

React Nativeには技術的に不便な点もあり、このことから、React Native離れと言われるようになったようです。

React Nativeに将来性はある?

React Native離れは進んでいる?特徴や他の技術との違いを解説
React Native離れと囁かれていますが、React Nativeの将来性は高いでしょう。技術的な面からReact Native離れと言われていますが、Meta platformsはReact Nativeの再設計を行い、技術的な問題の解決への道を歩んでいます。

また、React Nativeの技術はReactにも転用可能です。Reactを使う企業も増えているので、React Nativeの需要がなくなるという可能性は少ないでしょう。

統合的にネイティブアプリの開発ができるReact Nativeは現状の開発ニーズに合っている、Webにも技術転用ができるということからReact Nativeの将来性は高いと言えます。

React Nativeのメリット

React Native離れは進んでいる?特徴や他の技術との違いを解説
React Nativeには多くのメリットがあります。大きなメリットは、JavaScriptでの記述のため、JavaScriptを使うWebエンジニアならばiOSやAndroidに対応したアプリ開発が可能ということです。

そのほかにも、React Nativeを導入するメリットを紹介します。

簡単にアプリ作成ができる

React Nativeはモバイル端末により書き換えるコードが少なくてすみます。異なる二つの言語で開発しなければならないiOSとアンドロイドのコードの大部分を共通化できるため、工程の削除や時間の短縮が行え、負担を大幅に軽減できます。

また、Webエンジニアに馴染み深いJavaScriptwを使用しているため、Web開発の経験を活かすことも可能です。

コードの修正が容易

React Nativeではコードの修正が容易となるホットリロード機能があります。コード変更後、再コンパイルが必要なく、すぐに新しいコードが反映されるため、修正が効率的に進められます。

Webアプリケーション開発との互換性が高い

React Nativeの開発言語は汎用性が高く、Webアプリ開発にも使われているJavaScriptです。また、React NativeはWebサイト上のUIパーツを構築するためのライブラリであるReactを用いてアプリ開発をします。

そのため、JavaScriptを利用してWeb開発を行なっているエンジニアには扱いやすく、Webエンジニアもネイティブアプリ開発に参加できるようになり、人材の確保が容易になります。

React Nativeのデメリット

React Native離れは進んでいる?特徴や他の技術との違いを解説
React Nativeのデメリットは継続的なアップデートのための作業の煩雑さが挙げられます。また、Webエンジニアだけでの開発が難しい点もデメリットと言えるでしょう。

そのほかのデメリットも紹介します。

エラー箇所の特定が大変

React Nativeクロスプラットフォームです。一つの言語で、異なる複数のOSで動作するものを作るためデバックが必要な場合、「どこの層でエラーが起きているか」をまず特定しなければいけません。

JavaScriptレイヤーなのか、それともネイティブレイヤーなのか、さらに、AndroidかiOS
なのかなど、確認箇所が多いため、簡単に特定、解決できない場合もあるため注意が必要です。

学習コストが高い場合がある

もともとSwiftやJavaなど言語を使い、ネイティブアプリを開発していたエンジニアには、学習コストが高くなってしまいます。

JavaScriptの習得をしなければいけないためです。

しかし、もともとJavaScriptを使いWebアプリ開発をしていた場合には学習コストは低くすみます。

リスト構造の取得が難しい

React Native ではリスト構造の取得と描画が非同期です。リスト構造の取得が少々難しく、さらに、非同期のためリストのデザインや取得のタイミングが実装に委ねられることになります。

実装に慣れていない場合、意図しない動作が発生してしまいます。

高度な設定が必要になる場合がある

ReactNativeで開発している中で、ネイティブ機能を使いたくなった時、ネイティブ設定が必要です。これには、Web技術以外の高度な設定が必要になる場合があります。

ReactNativeでは、NativeModuleにより、JavaScript内から任意のネイティブコードを実装したり、ネイティブモジュールを直接構築する方法などもチュートリアルで公表されています。

アプリケーション開発ができる3つの技術の違いをチェック

React Native離れは進んでいる?特徴や他の技術との違いを解説
アプリケーション開発にはさまざまなプラットフォームがあります。iOSに特化したSwiftUI、新しいDartという言語でiOS、Android両方で動作するアプリが作れるクロスプラットフォームであるFltter、そしてReact Nativeなどが挙げられます。

どのプラットフォームも一長一短があり、どれが優れているかというのは個人の見解によるところが大きいです。まずは、自分が開発をしたいものに対して、どのプラットフォームが使いやすいのか考えましょう。
Raect NativeSwiftuIFlutter
開発会社Meta Platforms,lnc(旧Facebook,lnc)AppleGoogle
開発言語JavaScript・TypeScriptSwiftDart
作れるアプリiOS・Android・WebiOSiOS・Android・Web
UIネイティブUIネイティブUIネイティブUI
実装のしやすさ
技術の転用×
コミュニティの大きさ×

実装のしやすさを比較

React Nativeは公式チュートリアルがわかりやすいと評価されています。また、フレームワークもわかりやすく開発がしやすいです。

使用言語がJavaScriptとWebエンジニアが取得している多い言語が使われているため実装もしやすいでしょう。

一方、同じクロスプラットフォームのFlutterは、公式チュートリアルがわかりにくいという声があります。言語はGoogleが開発したDartです。Dartは新しい言語のため、学び直しが必要となります。

SwiftUIもチュートリアルがわかりやすく、なおかつ、資料や情報がYouTube上に多くあるため、実装しやすくなっています。

技術転用の可否を比較

React NativeはReactとの技術転用が可能です。React経験者であれば、React Nativeでのアプリ開発が容易にできるでしょう。また、React Nativeを学べば、ReactでのWebアプリの開発ができます。

一つの技術で複数のことができるようになるのは大きな強みでしょう。

FlutterはAndroidのみ転用可能です。iOSとAndroidの実装ならば技術転用できますが、Webへの技術転用はできません。

SwiftUIはiOSに特化しており、技術転用はできません。

コミュニティの大きさを比較

React Nativeのコミュニティはまだ規模が小さいと言わざるを得ません。React Nativeのオープンコミュニティの利用者はまだ少なく、問題が起きた時、検索しても問題解決案が出てこない、聞ける人が少ないといった問題が出てきます。

しかし、React Nativeの開発は2015年とまだ新しく、今はまだ発展途上であると言えます。これから需要が増えることを考えると、コミュニティが大きく育つ可能性は高いです。

Flutterも新しいプラットフォームですので、コミュニティ規模はまだ未発達ですが、利用者の増加とともにその規模も大きくなっています。

互換性の高いReact Nativeを学んで技術の幅を広げよう

React Native離れは進んでいる?特徴や他の技術との違いを解説
React Native離れと言われていますが、React Nativeでの開発ノウハウがWebアプリ開発にも転用できるという点で強みがあります。また、Reactを採用する企業も多くあり、それを見込んでもReact Nativeの需要はまだあるものと考えられるでしょう。

クロスプラットフォームはGoogleが開発したFltterの方が人気があります。しかし、React Nativeの母体であるReactの需要は高く、また、Webエンジニアであれば学習コストが少なくていいという利点もあることから、React Nativeを学ぶメリットは大きいでしょう。
初回公開日:2022年11月10日
更新日:2023年01月18日
記載されている内容は2023年01月18日時点のものです。現在の情報と異なる可能性がありますので、ご了承ください。また、記事に記載されている情報は自己責任でご活用いただき、本記事の内容に関する事項については、専門家等に相談するようにしてください。

0 コメント:

コメントを投稿