スポンサーリンク

【React Native】WSL2+React Native+Expo+Expo GoでReact Nativeを実行する

【React Native】WSL2+React Native+Expo+Expo GoでReact Nativeを実行するJavaScript
【React Native】WSL2+React Native+Expo+Expo GoでReact Nativeを実行する
スポンサーリンク

やりたいこと

  1. UbuntuにJavaScriptの実行環境(Node.js)をインストール
  2. UbuntuにReact Nativeプロジェクトを作成する
  3. スマートフォンにExpo Goをインストールする
  4. QRコードを読み込んでスマートフォンにReact Nativeアプリを表示させる

動作環境

OSUbuntu
バージョン22.04.3
動作環境WSL2
動作環境

前提条件

  • Linux 用 Windows サブシステム (WSL)でUbuntuをインストールしていること 
  • JavaScriptの実行環境(Node.js)をインストールしていること

ディレクトリ構成

プロジェクト作成コマンドに「template brank」を追加することで最低限の依存関係でプロジェクトが作成される。

sampleapp
├── App.js
├── app.json
├── assets
├── babel.config.js
├── node_modules
├── package-lock.json
└── package.json

必要なパッケージの説明

react-dom

Reactを動作させるために必要

react-native-web

React NativeをWeb上で実行するために必要

react-native-web
React Native for Web. Latest version: 0.19.12, last published: 17 days ago. Start using react-native-web in your project by running `npm i react-native-web`. Th...

@expo/metro-runtime

サーバ起動時に必要。Expo SDK 50 以降の Web プロジェクトに推奨されるバンドラー。

Migrate from Expo Webpack
Learn how to migrate a website using Expo Webpack to Expo Router.

環境構築(WSL2+React Native+expo)

React Nativeプロジェクトを作成していきます

Create your first app
In this tutorial, learn how to create a new Expo project.

template blank」をつけることで最低限の依存関係でプロジェクトが作成されます。

※sampleappは任意のプロジェクト名

npx create-expo-app sampleapp --template blank

作成されたプロジェクトに移動

cd sampleapp

Reactを使用するためのパッケージとReact Nativeを起動するためのパッケージをインストールする

npx expo install react-dom react-native-web @expo/metro-runtime

サーバを起動する

npx expo start

ブラウザを開いて「http://localhost:8081」にアクセス

Web上で表示できました!

次はスマートフォンでアクセスしてみましょう。「Expo Go」というアプリが必要です。

expo goで実機検証

スマートフォンに「Expo Go」をインストールする

Expo Go - Expo
Install past and current versions of Expo Go.

Expo Go」をスマートフォンで起動した後にQRコードを読み込む

しばらく接続を待ってみると・・・

スマートフォンでアクセス失敗。。。。

WSL2で実行する場合の注意点

WSL2で開発する場合、外部からアクセスする設定を行わないと「Expo Go」に接続できない。

上記のセットアップを完了すると、npx expo startWSL ターミナルで動作するはずです。この時点では、ブラウザーで Web バージョンを実行することもできます。ただし、開発ビルドにはまだ接続できません。

開発サーバーの URL/QR コードは172.xIP アドレスで始まっていますが、通常は LAN 上の IP アドレス (通常は 192.168.x) が想定されます。この IP アドレスはマシンの内部にあり、WSL 環境内の Linux VM が含まれるプライベート ネットワーク上のアドレスです。デフォルトでは、この IP アドレスはマシンの外部からはアクセスできません。そのため、開発ビルドを実行しているモバイル デバイスは、たとえデバイスが LAN 上にあっても、開発サーバーに接続できません。

ゼロ構成の回避策の 1 つは、 を実行することですnpx expo start --tunnel。これにより、ngrok がインストールされ、開発サーバーがパブリックにアクセス可能な Web アドレスに転送されます。ただし、更新に時間がかかるため、LAN から開発サーバーに接続できれば理想的です。

https://github.com/expo/fyi/blob/main/wsl.md

「tunnel」をサーバ起動時のオプションに追加する。

npx expo start --tunnel

アドレスが以下のように変わりました。

exp://172.28.121.83:8081 」→ 「exp://zrxgtcy-anonymous-8081.exp.direct

再度QRコードを読み込んでみましょう。

ビルドが完了したようです。※iPhoneを使っているため、iOSとなっています。

再度スマートフォンを見てみると・・・

スマートフォンで表示できました!

ホットリロードが効いているので実機検証しながら開発も可能です。

App.jsファイルを「Hello!!」に変更します。

App.js

import { StatusBar } from 'expo-status-bar';
import { StyleSheet, Text, View } from 'react-native';

export default function App() {
  return (
    <View style={styles.container}>
      <Text>Hello!!</Text>
      <StatusBar style="auto" />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

ファイルを保存するとホットリロードが効いているため、すぐに表示が切り替わります。

Hello!!に変更されました!

タイトルとURLをコピーしました