症状 → 最短の対処: Expo Goのネイティブモジュールエラーは、まず依存関係やJavaScriptの問題と切り分けてください。原因がExpo Goに含まれないネイティブコードなら、再インストールを続けずdevelopment buildへ移ります。Windowsでも編集とクラウド構築は続けられますが、iOSシミュレーターとXcodeでの確認にはmacOSが必要です。これはExpo Goに含まれるネイティブライブラリの範囲と、iOSシミュレーターの利用条件に基づく切り分けです。
ExpoやReact Nativeの教材に沿ってアプリを作り、初めてネイティブ機能のエラーに出会った学生向けです。
手元にMacがなくても課題を進めたい人や、開発用アプリをシミュレーターで確認したい人は、作業をどこまで進められるか判断できます。
Expo Goのエラーは、まず原因を分けて調べる
「モジュールが見つからない」と表示されても、すぐにExpo Goが原因とは限りません。パッケージの導入失敗、JavaScriptの実行時エラー、アプリ内にネイティブ実装がない状態では、直す場所がそれぞれ異なります。
最初にエラー全文を保存し、どの操作の直後に出たかを記録します。ターミナルで依存パッケージの導入が失敗しているなら、バージョンの不一致や設定を確認します。アプリ画面を開いた後に特定の処理だけ失敗するなら、スタックトレースから該当するパッケージと処理を探してください。
次に、そのライブラリがネイティブコードを必要とするか、Expo Goで利用できるかを公式の対応ライブラリ一覧で照らし合わせます。JavaScriptのコードだけを変更して直るエラーと、iOSアプリ側の実装が必要なエラーを同じ方法で追わないことが大切です。
現場で起きやすい例
授業のサンプルでカメラ機能を使い、パッケージの導入後も「ネイティブ実装がない」という趣旨のエラーが出たとします。この場合、パッケージがプロジェクトに存在することと、手元のExpo Goアプリに対応するネイティブコードがあることは別です。
キャッシュ削除や再インストールを繰り返しても、アプリ本体にないコードは追加されません。まず対応範囲を確認し、必要なら自分のプロジェクト用の開発アプリを作ります。
Expo Goで見つからないネイティブ機能を確認する
Expo Goは、あらかじめ一定のネイティブライブラリを含めて作られたアプリです。プロジェクトにJavaScriptのパッケージを追加しても、Expo Go本体に含まれていないネイティブコードまでは取り込めません。Expo公式の説明で対象ライブラリを確認し、利用に必要な設定もライブラリの案内と照らし合わせます。
判定のポイントは、依存パッケージの有無だけではありません。パッケージが要求するネイティブ設定がプロジェクトに反映されているか、利用中の実行環境がその機能をサポートするかも確認します。Expoのカスタムネイティブコードに関する案内を参照し、設定ファイルの変更が必要か見てください。
Expo Goで動かない機能が、すべてローカルMac必須という意味ではありません。開発アプリの作成はクラウドで進められる場合がありますが、iOSシミュレーターの起動場所はmacOSです。
development buildへ切り替える手順
development buildは、プロジェクトのネイティブ依存関係を含めて作る「自分の練習用アプリ」です。Expo Goへ後からプラグインを追加する仕組みではありません。開発用ビルドの概要を確認してから、次の順で進めます。
- 変更内容を保存します。 ソースコード、依存関係の定義、設定ファイルを保存し、教材の手順との差分を確認します。認証情報やプロジェクトの秘密情報を公開リポジトリに書き込まないでください。
- 必要なライブラリと設定を確認します。 公式ライブラリ案内を読み、必要な設定がアプリのネイティブ部分に関わるかを判断します。
- 開発用ビルドを作成します。 Expoの開発用ビルド手順に沿って、利用する端末やシミュレーターに合うビルドを選びます。
- 新しいネイティブ依存関係を加えたら、ビルドを作り直します。 ネイティブ設定や依存関係の変更は、すでに作成した開発アプリへ自動では反映されません。一方、JavaScriptだけの修正なら、通常はアプリを再構築せずに確認できます。
- 開発用アプリを起動し、該当機能を試します。 起動できるかだけでなく、問題の出た操作まで進み、ネイティブ機能が実際に呼び出されるかを確かめます。
この区別をしないと、ネイティブ依存関係を追加した後に古い開発アプリを使い続け、「ビルドしても直らない」と誤認しがちです。どの変更の後に作り直したかも記録しておけば、授業で再現するときに役立ちます。
MacがなくてもiOS向けの開発用ビルドを作れる?
Windowsではコード編集を続けられます。また、EAS BuildのiOS開発用ビルド手順を使い、クラウド上でiOS向けにビルドする方法もあります。ただし、クラウドでビルドできることと、Windows上でiOSシミュレーターを動かせることは別です。EAS Buildは「クラウドに構築を依頼する経路」であり、Windows用のシミュレーターではありません。
| 選択肢 | できること | 制約と確認ポイント |
|---|---|---|
| Expo Go | 対応範囲内の機能を使い、基本的な画面や動作を試せます | プロジェクト独自のネイティブコードは追加できません |
| 開発用ビルドと実機 | 自分のプロジェクト用アプリを実機で確認できます | 実機の準備やインストール方法、授業で求められる条件を確認します |
| EAS Build | iOS向けアプリのクラウド構築を依頼できます | ビルド完了後の実行先は別に用意します。Windows本体ではiOSシミュレーターを起動できません |
| macOS上のシミュレーター | Mac上でiOSアプリの動作を確認できます | シミュレーターの起動にはmacOSが必要です |
授業が画面表示とJavaScriptの基礎を扱うだけなら、まずExpo Goで課題を進められるか確認してください。ネイティブ依存関係の確認が必要なら開発用ビルドと実機、シミュレーターの画面やXcodeでの確認が課題条件ならmacOS環境を選びます。
iOSシミュレーターで開発用ビルドを確認する
iOSシミュレーターは、Mac上でiPhoneのようにアプリを動かす練習用の端末です。ExpoのiOSシミュレーター案内が示すとおり、利用にはmacOSが必要です。シミュレーター向けのビルドは、実機に入れるアプリと同じものとは限らないため、作成時に対象を取り違えないようにします。
確認では、次の点を一つずつ試してください。
- 作成した開発用アプリが起動し、プロジェクトを開ける。
- エラーの原因になったネイティブ機能を実際に呼び出せる。
- JavaScriptの変更がアプリ側に反映される。
- 課題が求める画面や操作を、指定された実行先で再現できる。
- 変更を保存した後にビルドしたか、実機用とシミュレーター用を区別できている。
起動だけで合格と判断しないのがポイントです。エラーが出た操作をもう一度行い、ログと画面の結果を課題の条件に照らします。環境変数を使うプロジェクトでは、EASの環境変数に関する公式説明を読み、秘密情報をコードや共有ファイルに混ぜないよう管理してください。
学校のMac、クラウド構築、リモートMacを選ぶ目安
学校のMacを使えるなら、Xcodeやシミュレーターを直接操作する課題に向いています。EAS Buildは手元にMacがなくてもクラウド構築を進められますが、Windows上でシミュレーターを動かす解決策にはなりません。リモートMacは、手元のパソコンからmacOSに接続し、シミュレーターやXcodeでの確認を行う選択肢です。
いまのWindowsや学校の共有パソコンだけで進める場合、iOSシミュレーターを起動できないこと、インストール権限が制限されること、授業の時間外に学校のMacを使えないことが障壁になり得ます。反対に、課題がWeb上の確認やExpo Goの対応機能だけで済むなら、Macを追加する必要はありません。
授業でXcodeの操作やシミュレーターでの提出確認が求められ、学校のMacも使えない場合は、MACCOMEのリモートMac環境を候補として検討できます。まず接続方法や利用条件をMACCOMEのMac利用案内で確かめ、短期間の学習に合うか判断してください。実機の接続や物理ポートが必須の課題、長時間の常時利用が前提なら、学校のMacや自分の機器を使うほうが適しています。
最後に: ネイティブ機能がExpo Goにないならdevelopment buildへ進み、Windowsでは編集とクラウド構築、macOSではシミュレーターとXcodeの確認を担当させると、行き止まりを避けられます。課題でMac上の検証が必要なときに限り、利用できる学校の環境とリモートMacを比較して選んでください。