MacにExpoを使ったReact Nativeの開発環境を1から構築し、サンプルアプリを作成するところまで連載していきます。
なお、この記事は以下の2019年記事から許可を得て、同じ内容を2020年のMac向けで書き直したものです。
Windows用元記事はこちら
環境
開発環境は、2020年10月時点最新の以下のソフトウェアで構築します。
- Chrome 最新 (85.0.4183.121(Official Build) (64 ビット))
- Visual Studio Code 最新 (1.49.0)
- Node.js + npm 最新 (12.18.4 (同梱 npm 6.14.6))
Expoを選択する理由
モバイルアプリ開発のクロスプラットフォームには、Cordova (ionicやMonaca含む)、Xamarin、最近ではFlutterなどいくつもの選択肢がありますが、その中で以下のメリットが強いときにReact Native + Expoを使うのがよいかと思います。
- とにかく開発工数を小さくしたい。
- 同じプロジェクトのサーバー側がJavaScriptなので知識や技術者を流用したい
- 同じプロジェクトのWebフロントがReactなので知識や技術者を流用したい
- 業務用アプリなどで、細部にはあまりこだわらない
- Web開発の知識をなるべくそのまま応用したい。
- JavaScriptの知識をメインにして作りたい
- Reactの知識がすでにある
- デバイス固有の機能は使わないプロジェクト、またはモックアップ用
- 実機でデバッグを簡単に実施したい
- 簡単に配布したい
マルチプラットフォームの開発環境としては、2020年現在だとFlutterとXamarinが競合になるでしょう。XamarinはMicrosoft系なのですが、最近Macにもしっかり環境を整えてくれているので、Macユーザーも選択肢に入れていいと思います。個人的な経験上では、React Native (+ Expo) を選択する一番の理由はやはりJavaScriptであることが一番大きいですね。
React Nativeから始めるか、React Native Expoから始めるか
React Nativeはライブラリのバージョン管理が大変で、React Native本体のバージョンアップに必死でついていく感じになります。Expoのいいところは、これをしなくいいところです。Expo側が勝手にライブラリ管理して、ラッピングされたコンポーネントに影響が出ないようにしてくれます。
一方、ExpoではiOSやAndroidのネイティブコードを開発者が自分のプロジェクトに導入することができないので、アプリの機能面でExpoの制限を受けることになります。たとえばBluetooth通信に難があったり、アプリにコードを埋め込むことを要求されるReproのプッシュ通知サービスが使えなかったりします。
一長一短のある非ExpoとExpoですが、Expoから非Expoにプロジェクトをコンバートすることはかんたんなので(これをEjectと呼びます)、とりあえずExpoで簡単に始めるのが良いかと思います。
連載記事リスト
連載内容の予定です。途中で大幅に変更する可能性があります。
- Expoのアカウントを作ってReact Nativeの開発環境を整える
- React Native Expoの編集環境をVisual Studio Codeで準備する
- React Native + Expo + Visual Studio Code + Chrome + iOSシミュレーターでデバッグする
- React Native + Expo に、ルート管理ライブラリreact-navigationを導入する
- React Native + Expo + react-navigationで、アプリの画面構成を作成する
- React Native + Expo + unstated (+ react-navigation)で、簡単グローバルState管理+ローカルデータ理を実現する
- React Native + Expo アプリに Native Base 導入で楽々画面デザイン
- React Native + Expo アプリで unstatedのStateにaxiosを使って簡易テストサーバーからデータ取得
- React Native + Expo アプリでunstatedのデータを永続化
- React Native + Expo アプリをPublish(公開)する:テスト配布する
- React Native + Expo アプリをDeploy(ネイティブビルド)する