ReactNativeとは何かの概要、何が良いのか、SwiftやJava/Kotlinで開発するのと何が異なるのかなどを解説していきます。
ReactNativeとは何か
ReactNativeとは、Facebookが開発したフレームワークで、iOSアプリ開発に必要な言語のSwiftやAndroidアプリ開発に必要な言語のJava(Kotlin)を使わずにJavaScriptでモバイルアプリを開発をすることができるものです。
2013年にReactというJavaScriptライブラリを開発し、のちにモバイルアプリ開発でも利用できるように生まれました。
SwiftやJava(Kotlin)以外の言語でモバイルアプリを作れる、いわゆるクロスプラットフォームフレームワークは多く存在していますが、その中で1つで人気があります。
クロスプラットフォームとは、異なるプラットフォーム上で、同じ仕様のものを動かすことが出来るプログラムのことを言います。
類似フレームワーク
他のクロスプラットフォームフレームワークと、ReactNativeとの比較表です。
React Native | Flutter(フラッター) | Xamarin(ザマリン) | |
---|---|---|---|
開発元 | Microsoft | ||
開発言語 | JavaScript, TypeScript | Dart (独自) | C#, F# |
開発環境 | Nuclide, Visual Studio Code | Android Studio, IntelliJ IDEA, Visual Studio Code | Visual Studio |
GitHub スター数 | 89k | 97.8k | 4.3k |
プラットフォーム | iOS, Android, Web(Windows) | iOS, Android, Web, Windows, Mac, Linux | iOS, Android, Windows, Mac(Web, Linux, Tizen) |
UI | ネイティブ | 独自 | ネイティブ/独自 |
利用サービス | Instagram, Facebook, Facebook Ads, Skype, Tesla, メルカリ, クックパッド, Pinterestなど | Xianyu, Hamilton, Google Adsなど | 新型コロナウイルス接触確認アプリ, NHK 紅白, Nintendo Switch Onlineなど |
人気
Githubスターで判断すると、現在はReactNativeとFlutterが人気です。
Flutterは、Googleが開発しているフレームワークで独自の言語(Dart)を用いて開発したりと、独自の路線を走っています。
プラットフォーム
ReactNativeは、iOS/Android/WEB/Windowsアプリケーション開発ができます。
WEBはReactがありますが、ReactNative for Webが出てきたりしています。
モバイルとWEBでコードを使いまわせる点が利点です。
TwitterやUberなども利用しています。
UI
ReactNativeは、ネイティブのUIを採用しています。
例えば、ボタンを表示する時にiOSアプリであればiOSのボタンを表示し、AndroidアプリであればAndroidのボタンを表示します。
ReactNativeの良い点
ReactNativeとは何かがわかってきたところで、
具体的にReactNativeを使うと何が良いのかを説明します。
ネイティブアプリ体験を実現できる
上で説明した通り、ReactNativeはネイティブのAPIを使ってUIを描画しているのでパフォーマンスがよく、ネイティブ同様の体験をアプリに組み込むことができます。
ほぼネイティブと遜色ないレベルまでパフォーマンスがでるので、心配せずに使えます。
Learn once, Write anywhere
Reactは、「Learn once, Write anywhere」の思想の元作られています。
これは、1度学べばどのプラットフォームでも使えるよという意味です。
React自体も非常に人気があり実績もあるライブラリですし、Reactが使えるエンジニアはReactNativeも抵抗なく実装ができる点は大きいです。
それによって、開発メンバーも集めやすくプロジェクトをよりスムーズに進めやすくなります。
コードの共通化ができる
ネイティブ言語でアプリを開発する場合は、iOSとAndroidそれぞれで開発する必要がありますが、ReactNativeはコードの再利用が可能です。
例えば、ログイン画面があったとして、ReactNativeで実装してしまえばiOSとAndroid共通で使うことができます。
すぐにリリースしてユーザーの反応をみたい場合など開発を素早くできるので便利です。
開発が早い
SwiftやJava(Kotlin)で開発する場合、コードを修正するごとにコンパイルを行うので時間がかかったりしますが
ReactNativeの場合は、ホットリローディングが使えるので、すぐに動かすことが可能です。
コンパイル: 実行できるようにコードを変換すること
ホットリローディング: コンパイルなしで変更が反映されること
SwiftやKotlinを使って開発することも多いですが、
この点に関しては、ReactNative素晴らしいなと特に思います。
まとめ
ReactNativeについて解説しました。
実際アプリの要件によっては、ネイティブで実装した方がいい場合もあります。(複雑なUIやOSレベルでやりたいことが多い場合など)
ReactNativeとネイティブとのBridgeなんかもできるので、一部はネイティブで実装するケースも多いです。
ぜひReactNativeでアプリを作ってリリースしましょう。