インターネットやスマートフォンが普及している昨今、ソーシャルゲームを始めとしたさまざまなアプリケーションは、複数のプラットフォームでリリースされるのが一般的です。
しかし、環境に違いがあることから、複数のプラットフォーム向けにアプリケーションを開発するのは容易なことではありません。
プラットフォームごとにアプリケーションを開発するのはコストも時間もかかります。
開発する側からすれば、1つのプログラムを複数のプラットフォームで同じように動作させられれば、それに越したことはありません。
「React Native」は、JavaScriptを利用した開発経験があれば、AndroidやiOSのネイティブアプリケーションを開発できる画期的な仕組みです。
そこで、React Nativeに興味がある人に向けて、メリットや勉強方法などを解説します。
React Nativeとは?
React Nativeとは、Facebook社が開発したアプリケーションフレームワークです。 フレームワークは、アプリケーションに必要な標準的機能を雛形として実装したもので、現在のアプリケーション開発の主流となっています。
JavaScriptを開発言語としているため、JavaScriptの利用経験があるWebエンジニアが利用するのにおすすめです。
React Nativeの特徴
アプリケーションフレームワーク自体、React Native以外にもたくさんリリースされており、真新しいものではありません。 しかし、React Nativeには他のアプリケーションフレームワークにはない特徴をいくつか持っています。
ここでは、React Nativeの特徴をおもに2つ紹介しましょう。
クロスプラットフォームに対応可能
1つ目の特徴は、クロスプラットフォーム開発に対応していることです。
クロスプラットフォームとは、異なるOS・システム上で同じように動作するアプリケーションのことを言います。 1つのアプリケーションがAndroidとiOSでリリースされていれば、そのアプリケーションはクロスプラットフォームであるということです。
React Nativeを利用すれば、JavaScriptでAndroid・iOS向けのアプリケーションを同時に開発できます。 Android・iOSで別々のソースコードを記述する必要はありません。
ネイティブなUIをJavaScriptで実現できる
2つ目の特徴は、ネイティブなUIを開発できることです。
ネイティブなUIとは、Webブラウザを利用せずにOSそのものの機能を利用したUIのことを言います。 iOSを例に挙げると、swiftを利用して開発されたアプリケーションは、iOSの機能を利用しているため、ネイティブなUIと言えるのです。
また、そのように開発されたアプリケーションはネイティブアプリケーションとも言い、Webアプリケーションよりも実行速度が速いのがおもな特徴として挙げられます。
React Nativeは、JavaScriptを開発言語としているためWebアプリケーションが開発できると思われがちです。 しかし、「Native」と名付けられている通り、JavaScriptを利用しておきながら、Android・iOSのネイティブアプリケーションを開発できます。
React Nativeを使う3つのメリット
React Nativeを利用するメリットについて、おもに3つ紹介します。
メリット①:開発コストの削減
1つ目のメリットは、クロスプラットフォームのアプリケーションを効率よく開発できることです。
冒頭でも述べたように、複数のプラットフォームで同じアプリケーションをリリースしたいときは、プラットフォームごとに別々のソースコードを書く必要がありました。 プラットフォームごとに採用するプログラミング言語が異なるため、学習コストはかかる上にメンテナンスも手間がかかります。
React Nativeでは、1つのソースコードさえ書けば複数のプラットフォームで同じように動作するため、コスト・時間ともに削減できるのが大きなメリットです。
メリット②:学習コストが抑えられる
2つ目のメリットは、JavaScript利用経験者にとって、Android・iOSアプリケーション開発の学習コストが抑えられることです。
今まで、Android・iOSのアプリケーションを開発するには、それぞれのOSで別々のプログラミング言語を身につける必要がありました。 例えば、AndroidであればJavaやKotlin、iOSであればObjective-CやSwiftです。
しかし、新しくプログラミング言語を学習するには、多くの時間を費やさなければなりません。 これでは、複数のプラットフォームにリリースしたいという需要に応えられません。
React Nativeがあれば、JavaScriptでAndroid・iOSアプリケーションを開発できるため、新しくプログラミング言語を学習しなくても良くなります。
メリット③:開発スピードの向上
3つ目のメリットは、ホットリロード機能によってコードを容易に修正できることです。
通常のAndroid・iOSアプリケーションの開発の場合、動作確認をしている最中にバグを発見すると、修正した後に再度コンパイルするという作業が発生します。 大規模なプログラムであれば、コンパイルにも時間を要してしまうため、この作業の手間は無視できない問題です。
これを解決する機能がホットリロード機能です。 ホットリロードとは、コードを修正して保存した段階で修正結果を反映させる機能で、コンパイルがいりません。 修正した結果をすぐに確認できるため、開発スピードが向上します。
React Nativeを使う3つのデメリット
さきほどReact Nativeを使うメリットについて解説しましたが、使うことによるデメリットもあるので学習する前に頭に入れておいてください。
React Nativeを使う3つのデメリットは主に以下の3つ。
それぞれ詳しく解説していきます。
デメリット①:アップデートへの対応が大変
React Nativeは頻繁にアップデートが行われます。そのためアップデートがされるたびに、環境も合わせてアップデートさせなければなりません。
React Nativeのアップデートが原因で動作していたアプリが動かなくなったり、エラーが発生するケースもあります。
そのためアップデート情報にアンテナを張り、素早く対応しなければいけない大変さがネックと言えます。
デメリット②:エラーへの対応が難しい
React Nativeを使うデメリットの2つ目はエラーへの対応が難しいことです。
エラーが発生した際に、ネイティブレイヤーで起きているエラーなのか、それともJavaScriptレイヤーで起きているエラーなのかを判断するのに時間がかかります。
さらにiOSアプリは正常なのに、Androidアプリだとエラーが起きてしまうこともあるのです。
React Nativeを使ったアプリ開発でエラーが起きた場合には、多くの時間と労力を費やすこともあると覚えておきましょう。
デメリット③:ネイティブエンジニアには学習コストが高い
React NativeはJavaScriptで記述されるため、元々Reactに慣れている人からすると学習コストは低いです。
しかし、SwiftやJavaなどの言語でネイティブアプリを開発しているエンジニアは新しくJavaScriptを習得しなければなりません。
そのため学習コストが高くなってしまうデメリットもあります。
React NativeとReactの違い
React Nativeと似たようなものに「React」があります。
Reactとは、同じくFacebook社が開発したライブラリです。 ライブラリとは、よく利用する機能をあらかじめ実装してひとまとめにしたものを言います。 フレームワークと同様に今日のアプリケーション開発で必要不可欠な要素です。
Reactは、おもにWebアプリケーション開発において、UIを開発するのに利用されています。 対してReact Nativeの開発対象は、Android・iOSです。 開発の対象が異なるのが、両者の大きな違いといえます。
React Nativeでできること
ここでは、React Nativeを利用して何ができるのかについて、4つ説明します。
Androidアプリケーションの開発
React Nativeでできること、1つ目はAndroidアプリケーションの開発です。
Androidアプリケーションの開発では、おもにJavaやKotlinが開発言語として利用されています。 しかし、どちらのプログラミング言語も馴染みが薄Webエンジニアは多く、一から学習しようとするのは効率的ではありません。 JavaScriptの開発経験があれば、その知見を生かしてAndroidアプリケーションを開発することができます。
iOSアプリケーションの開発
React Nativeでできること、2つ目はiOSアプリケーションの開発です。
Androidの場合と同様に、iOSではおもにSwift、またはObjective-Cを開発言語としたアプリケーションが開発されています。 しかし、こちらのプログラミング言語もWebエンジニアが触れる機会はあまりありません。
学習するにもコストが掛かってしまいます。 しかし、これもReact Nativeがあれば、SwiftやObjective-Cを学習することなくiOSアプリケーションを開発できてしまいます。
Webアプリケーションの開発
React Nativeでできること、3つ目はWebアプリケーションの開発です。
おもにAndroidやiOSなどのモバイルプラットフォーム向けのアプリケーション開発にフォーカスされがちですが、「React Native for Web」と呼ばれるライブラリを利用することで、Webアプリケーションの開発もできます。 さらに、React Native for Webがあることで、モバイルプラットフォーム向けのコードとWeb向けのコードを共通化させられるのもメリットです。
Windowsアプリケーションの開発
React Nativeでできること、4つ目はWindowsアプリケーションの開発です。
Webアプリケーションの開発と似たように、「React Native for Windows」というライブラリを利用することで、Windowsアプリケーションの開発も可能になります。
Windowsアプリケーション用の開発言語を新たに学習する必要がないうえ、他のプラットフォームとコードを共通化させられるので、クロスプラットフォームのアプリケーションを開発したいときにおすすめです。
React Nativeの将来性
ここまでReact Nativeについて解説してきましたが、一部では「React Nativeは使われなくなる」と言われているのも事実です。
そこでReact Nativeの将来性や事実についても説明していきますね。
React Nativeが使われなくなると言われている理由
2019年11月から「React Nativeはオワコン」と言われはじめ、関連する検索数も上昇しました。
なぜReact Nativeがもう使われなくなると言われているのか。
その大きな理由は主に2つです。
1つ目の理由はSwift UIやFlutterなどのスマートフォンアプリケーション開発フレームワークが注目を集めたことです。
利用者層が分かれたことでReact Nativeの利用者が単純に減少しました。
2つ目の理由はAirbnbやUdacityなどの企業がReact Nativeの利用を取りやめたことです。
一部の有名企業がReact Nativeから離れたことが多くのユーザーに影響を与えました。
他にも設定が複雑で難しかったり、利用者の少なさからコミュニティが未発達でいざと言うときに聞く人がいないなどの理由もあげられます。
正直、Swift UIやFlutterはReact Nativeと比較すると設定が難しいことや複雑なアプリを作成することにおいて見劣りします。
しかし、React NativeはWebアプリケーションの開発に技術を転用できる点や簡単なアプリならすぐ作れてしまうメリットもあるのです。
そのためReact Nativeの将来性はないという訳ではなく、学んだ知識や技術をちゃんと活かせると言えますね。
React Nativeの使い方【STEP解説】
ここでは、Macユーザー向けにReact Nativeの環境構築と使い方について説明します。
STEP1:必要なソフトウェアのインストール
1つ目のステップは、必要なソフトウェアのインストールです。
React Nativeを利用したiOSアプリケーション開発では、おもに以下のものが必要となります。 なお、Homebrewはインストールされている前提です。
- Node.js:JavaScriptをサーバー上で実行させるための環境。
ターミナル上で以下のコマンドを実行してインストールします。
$ brew install node
- Watchman:ビルドを効率化させるためのツール。
ターミナル上で以下のコマンドを実行してインストールします。
$ brew install watchman
- React Native CLI:コマンドライン上でReact Nativeを利用するためのパッケージ。
ターミナル上で以下のコマンドを実行してインストールします。
$ npm install -g reat-native-cli
- Xcode:iOSアプリケーションのための統合開発環境。
App Storeからインストールします。 - CocoaPods:iOS向けのライブラリ管理システム。
ターミナル上で以下のコマンドを実行してインストールします。
他のコマンドと違い、sudo権限が必須であることに注意してください。
$ sudo gem install cocoapods
なお、Androidアプリケーションを開発する場合には、以下のものも必要になります。
- JDK:Android向けアプリケーションの開発環境。
ターミナル上で以下のコマンドを実行してインストールします。
$ brew tap AdoptOpenJDK/openjdk
$ brew cask install adoptopenjdk8
- AndroidStudio:Androidアプリケーションの統合開発環境。
以下のリンクからインストールします。
参考 Androidアプリケーションの統合開発環境ANDROID STUDIO
STEP2:Xcodeの設定
2つ目のステップは、インストールしたXcodeの設定です。
Xcodeを起動して、画面左上の「Xcode」から「Preference…」をクリックし、「Locations」タブを開きます。 「Command Line Tools」に「Xcode [x.x]」([x.x]には数字が入る)が選択されていることを確認したら、設定は完了です。
STEP3:プロジェクトの作成
必要な設定が完了したら、次はプロジェクトの作成です。
以下のコマンド実行することで、プロジェクトが作成できます。 [ProjectName]には、任意のプロジェクト名を入力してください。
$ react-native init [ProjectName]
上記コマンドを実行したら、プロジェクトディレクトリに移動しましょう。
$ cd [ProjectName]
STEP4:アプリケーションの実行
アプリケーションの実行は、以下のコマンドでできます。
$ react-native run-ios
上記コマンドを実行すると、iOSのエミュレーターが起動します。 その後、「Welcome to React Native」という画面が表示されたら、環境構築成功です。
React Nativeの学習本おすすめ3選
React Nativeを学びたい人の中には専門学校やオンラインスクールなどを使わずに独学で進めたい人もいるでしょう。
本を利用した勉強は、自身のペースで学習を進められるのが大きなメリットです。 ここでは、React Nativeの学習におすすめの本を3冊紹介します。
React Native+Expoではじめるスマホアプリ開発
React Nativeで何ができるかについての解説から始まり、環境構築や動作確認の方法が実際の画面付きで解説してくれます。 さらにToDoアプリや電卓など、簡単なアプリケーション作成を通してReact Nativeを利用したアプリケーション開発の基本を身につけられる一冊です。
基礎から学ぶReact Native入門
React、ReactNativeの基礎的な知識や仕組みを初心者にも分かりやすく解説した1冊。
200ページほどで簡潔にまとめられていてReactNativeの概要を素早く掴みやすい内容となっています。
簡単なアプリを作成しながら進める実践型の本なので、初めてReactNativeに挑戦する人にもおすすめです。
Android/iOSクロス開発フレームワーク React Native入門
全部で3冊のシリーズ本となっています。
第1巻では、React Nativeの環境構築とReact Nativeの標準的な機能の説明が中心です。
第2巻では、React Nativeを利用したアニメーション処理の実装方法の解説、第3巻では、APIを利用してニュースアプリケーションの開発を行い、Android・iOSへのリリースまでを解説しています。
以下の記事では、レベル別にReactNativeのおすすめ学習本を紹介しているので気になる人はぜひ参考にしてみてください。
→【2021年最新】ReactNativeの学習本・参考書おすすめ7選!入門、中級、上級まで
まとめ
React Nativeに限らず、フレームワークを使いこなせるのは、非常に重要です。
開発速度や開発の質を上げるうえでも、有効です。 これを機に、React Nativeを使ってエンジニアとしてのレベルを一歩先へ進めてみてはいかがでしょうか。
こちらの記事もおすすめ
Javaの学習本・参考書おすすめ10選!初級/中級/上級別に紹介
フリーランスWebエンジニアとは?仕事内容や年収、必要なスキルも紹介
フリーランスがスキルなしでは厳しい5つの理由!独立前に習得すべき能力とは