【簡単解説】なぜアプリ開発で React Native が選ばれるのか?

React Native は Facebook 社が開発しているオープンソースのアプリケーションフレームワークです。
モバイルアプリを開発するにあたり、なぜ私達がReact Nativeを使うことにしたのか。
今回はその理由を解説すべく、React Nativeの特徴や、メリット・デメリットについて
分かりやすく紹介していきます。

【そもそも知識】フレームワークって何?

フレームワークってよく聞くけど実際なんなんだ?という方のために軽く解説です。
「そんな基本的なこと知ってらあ!」という方は、読み飛ばしてもらって大丈夫です!

・フレームワークは開発に欠かせない!

まずフレームワークというのは、簡単に言えば開発の「土台」や「枠組み」となるソフトウェアのことです。そもそもの土台があるとないとでは、開発のコストはぐんと変わります。
フレームワークは開発に必要な便利な機能も提供してくれたりするので、大幅な工数の削減に繋がり、開発者がだいぶ楽になります。
ただその分、各フレームワークによって特有のコードや使い方が合ったりするので、フレームワークを使うとなったらまずそのフレームワークについてある程度の知識をつける必要があります。が!
学習コストを考えたとしても、やはりフレームワークを導入した方が楽に開発できるのです。

・フレームワークってどんな種類があるの?

フレームワークは大きく分けて以下の種類があります。

  • Nativeフレームワーク
  • クロスプラットフォームフレームワーク
    • Native型
    • Hybrid型

ひとつずつ簡単に紹介していきます。

・Nativeフレームワーク

NativeフレームワークはあるOSに特化したフレームワークです。
基本的に他のOSには対応しておらず、OS独自の言語で開発します。

:Swift(iOSに特化、つまりAndroidは非対応)、Kotlin(Androidに特化、つまりiosは非対応)

ですので今回のユニコーンチームの開発のように、「ios,Android両対応のアプリを作るぞ!」
という場合、これだと二重に開発することになってしまうので、今回の開発には適しません。

・クロスプラットフォームフレームワーク

クロスプラットフォームフレームワークとは、
異なるプラットフォーム(OS)上で同じ仕様のものが動かせるフレームワークのことです。
これならOSごとに別に開発・・・なんて無駄なコストがかかりません。

ちなみにクロスプラットフォームフレームワークの中にも、2つの種類があります。

—-[Native型]—-

iOS、Androidの両方のOSで作動するフレームワーク。
ReactNativeフレームワークもここの分類です。
OSの機能を活用できるため、きめ細かな処理も実現します。
また、フレームワークが直接 OSのUIシステムに働きかけに行くので、
後述のHybrid型よりも処理が早いです。

React Native、Flutter

—-[Hybrid型]—-

WebViewを利用したフレームワークです。
フレームワークが直接 OSのUIシステムに働きかけるのではなく、
フレームワーク⇨WebView⇨OSのUIシステム という
WebViewを介在する形になります。
ですので、OSの機能を直接使って開発することは難しいですが、Web上の機能を利用できます。

iOS、Android、Windowsで作動します。

:Ionic、monaca

【本題!】React Nativeの特徴

ここからはReact Native について詳しく触れていきたいと思います。

先ほども少し書いたように、React NativeはFacebookが開発したReactというJavaScriptのフレームワークをモバイルで使えるようにしたフレームワークです。クロスプラットフォームフレームワークで、iOSとAndroidの両方のプラットフォームで動くアプリが作れます。

メリット

  • アプリ開発が効率的
    React Nativeはクロスプラットフォームフレームワークなので、AndroidとiOSのアプリを同時に開発できます。OSによって書き分ける部分もありますが、大部分のコードが共通で使え、開発時間の短縮や開発コストの削減に繋がります。
  • ホットリロード機能で修正時の手間がない
    ホットリロードとは、コードに修正が入った際、自動的にリロードしてくれる機能のことです。
    何が便利なの?と思う方もいるかもしれませんが、逆にこの機能がないSwiftなどで開発をしていた場合、どんな些細な修正でも、コードが変わったらイチから再コンパイルする必要があります。
    時間も手間もかかりますし、何よりだんだん疲れてきます。(心が・・・笑)
    この機能があることで、見た目や文章など軽微な修正をすぐに反映、確かめることができるので、作業のリズムがよくなるのです。
  • JavaScript経験者には学習コストが低い
    React Nativeはネイティブ言語を用いず、JavaScriptでアプリ開発ができます。
    なので、JavaScript経験者には学習コストが低くなります。
    JavaScriptでいけるなら・・・とハードルが低いのも人気の理由かもしれません。
  • OSに準拠したデザインを使用
    React NativeではネイティブなUIが使われ、OSに準拠したデザインを使えます。
    iosとAndroidで独自のデザインがある部分など、動かすOSによって準拠したデザインで適応できます。

デメリット

  • アップデート対応が大変
    React Nativeは頻繁にアップデートが行なわれていて、その都度、アップデートの対応が必要になってきます。そしてそれをさらに大変にさせているのが次の項目。
  • 公式ドキュメントが英語
    まだ出始めのフレームワークということもあり、日本語の資料や事例が少ないです。
    また、公式ドキュメントも英語のみで記載されているので、英語での情報収集が必須となります。

・・・とは言いつつも、アップデートはだんだん落ち着くだろうという声もありますし、
時間が経てば経つ程日本語での事例や記事もどんどん増えていきます。(このブログみたいに!)
この辺りのデメリットはいずれ解消されるのではないかと個人的には思っています。

【まとめ】アプリ開発にReact Nativeを選んだ理由

以上のことを踏まえ、チームユニコーンがアプリ開発にReact Nativeを選んだ理由は以下になります。

  • React Nativeはこれから進化していく技術であること
  • クロスプラットフォームで効率的であること
  • JavaScript言語を使用できること
  • Reactの開発にいずれ役に立つこと

アプリ開発のフレームワークを決める際に、ぜひ参考にしていただければと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です