ReactNative、Expoのデメリットとは?Expoについてこれだけは押さえておこう!

「Expoのデメリットって何だろう」

「これからExpoを使っていく上で不便になることがあったらいやだな」

ReactNativeの開発をより便利にさせてくれるExpoですが、そのデメリットもよく知っておくとよいでしょう。

この記事を読んでExpoについてより知ることができ、開発に望めるようになってほしいと思います。

純粋なReactNativeとExpoってどっちがいいの?

結論、開発にどんなAPIを使うかによります。

ReactNativeはネイティブアプリ開発ができる、クロスプラットフォームです。ReactNativeはより純粋なネイティブアプリに近いビューを実現することができます。ReactNative以外のクロスプラットごーむは、WebView上、ブラウザ上で動作することが多いので、カメラを使った機能など、できないことが多くありました。

しかし、ReactNativeは、ネイティブアプリとして開発できるために、Swift やKotlinで実装できる機能も実装可能になりました。

では、Expoの役割は何でしょうか?

一言でいうと、「ReactNativeの開発をより高速にできる」ということです。

便利なReactNativeですが、デメリットもあります。

  1. 開発環境構築がめんどくさい
  2. Java/KotlinやObjectC/Swiftの知識が必要

Expoはこのデメリットを解決します。開発環境の構築は、Expoが1つのパッケージとして提供しているものがあるので、それをインストールすれば済みます。

言語についても、Expoサーバーを通してビルドされるので、開発者はJava/KotlinやObjectC/Swiftに触れることなく、JavaScriptの開発のみで事足りるようになります。

開発を進めるうえで、開発者が考えることが減り、ネイティブ依存の問題が発生する確率が下がり、より開発者がコードに集中できる環境が提供されています。

後にも説明しますが、この1つのパッケージにまとめているということがメリットである分、デメリットにもなり得ます。

Expoのデメリットって何?

Expoのメリットの一つに、ReactNativeの開発環境を1つのパッケージとして取り組むことができるということがあります。これにより開発者は、ReactNativeのためにインストールしなければならないモジュールが減り、バージョン差によるエラーも防げるようになりました。

しかし、1つのパッケージであるということは、ネイティブ側の機能実装を自分で行えないということです。Expo側から機能については提供されてはいるので、ある程度のアプリは作ることができますが、Expoが提供していない機能については、実装することができません。

例えば、firebaseのバックグラウンド実行、bluetoothの機能などは実装されていません。

あべべ

firebaseのよく使う機能(ログイン機能や、データベース)などは提供されています!

Expoでどんなことができるの?手戻りは増えない?

ではExpoで実装するとどんなことができるのでしょうか。

私がExpoでよく使うAPIは以下のようなものです。

  1. Camera : 写真や動画の撮影ができるカメラ操作のコンポーネント
  2. MapView : react-native-mapsを取り込んだもの
  3. Svg : react-native-svgを取り込んだもの
  4. BarCodeScanner : ANコードやQRコード等、さまざまなバーコードを認識できるカメラビューのコンポーネント
  5. Permissions : カメラやGPSを使う前にユーザーに使用許可を求めるダイアログを簡易に実装するAPI
  6. Audio : 音楽の再生や録音を行うAPI

BarCodeScannerは、現在ブラウザでは実装が難しい、ReactNativeならではの機能なので重宝します。また、CameraAPIやAudioAPIは、ReactNative向けの、類似のサードパーティーのライブラリと比べても使い勝手がよく、Expo利用者以外にはあまり使われていなくて、もったいないくらいです。

追加するライブラリで注意すべきなのが、Java/Objective-Cで作られるライブラリはExpo内に存在しているものしか追加することができません。アプリ開発を始めてする人であれば、問題ないですが、AndroidSDKやiOSSDKに慣れ親しんだ人からすると、JavaScriptで作られたライブラリしか追加できないのは、足かせになるかもしれません。

まとめ

今回は、ReactNativeのExpoについて、解説していきました。初心者であれば、アプリ開発をする上でExpoは悪くない選択肢かと思いますので、ぜひ興味のある方は触ってみるとよいです。

(Visited 10 times, 1 visits today)