SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ExpoとEASで始める快適モバイルアプリ開発

ExpoのWeb向けビルド機能「React Native for Web」を活用して、UIをブラウザで確認しよう

ExpoとEASで始める快適モバイルアプリ開発 第8回

セットアップと基本動作

 ここまでの解説で、ExpoのWeb対応の基本的な仕組みが理解できたと思います。続いて、実際にWebアプリケーションとして動作させるためのセットアップ手順を確認しましょう。

 まずは通常通りにアプリのセットアップを行います(リスト4)。

[リスト4]アプリのセットアップ
npx create-expo-app@latest expo-for-web
cd expo-for-web

 Expo SDK 53以降では、Web関連のパッケージが標準で含まれているため、追加のインストールは基本的に不要です。ただし、一部のプロジェクトでは以下のパッケージが必要な場合があります(リスト5)。

[リスト5]Web関連パッケージのインストール
npm install react-dom react-native-web

 react-domはReactコンポーネントをDOM要素にレンダリングするために必要で、react-native-webは前述のReact Nativeコンポーネントの代替実装を提供します。最新のExpo CLIで作成したプロジェクトでは、これらのパッケージは最初から含まれています。

Web開発サーバーの起動

 Webアプリケーションとして動作確認を行うには、--webオプションを使用してExpo開発サーバーを起動します(リスト6)。

[リスト6]Web開発サーバーの起動
npx expo start --web

 このコマンドを実行すると、Expo DevToolsが起動し、自動的にブラウザでWebアプリケーションが開きます。通常はhttp://localhost:8081でアクセスできます(図2)。

図2:ExpoアプリのWeb実行画面
図2:ExpoアプリのWeb実行画面

 図2のように、React NativeコンポーネントがWeb上で正常に表示され、タブナビゲーションも含めて期待通りに動作します。

本番ビルドの実行

 Web用の本番ビルドを作成する場合は、exportコマンドを使用します(リスト7)。

[リスト7]本番ビルドの実行
npx expo export --platform web

 このコマンドを実行すると、dist/ディレクトリ内に静的なWebサイトファイルが生成されます。生成されたファイルは、静的サイトホスティングサービス(Netlify、Vercel、GitHub Pagesなど)で簡単にデプロイできます。

Fast Refreshによる開発体験

 Expo WebでもFast Refresh機能が利用できるため、コードの変更が即座にブラウザに反映されます。React Nativeの開発と同様の快適な開発体験を、Web環境でも享受できるのが大きな利点です。特に、コンポーネントの見た目を調整しながら開発する場合、ブラウザの開発者ツールと組み合わせることで、より精密な調整が可能になります。

Expo RouterのWeb対応

 さて、初期セットアップした状態のExpoプロジェクトがブラウザで動かせることはわかりましたが、今のところそれだけです。本連載の中でも繰り返しお伝えしてきたように、Expoの魅力は公式サポートされた豊富なモジュール群があってこそですよね。

 ご安心ください。豊富とまでは言えないまでも、Expoで提供されているモジュールはWebサポートが進んでいます。例えば、前回までに解説したExpo Routerは、Webプラットフォームでも同様のファイルベースルーティング機能を提供します。これにより、モバイルアプリとWebアプリで一貫したナビゲーション体験を実現できます。

ファイルベースルーティングの共通性

 Expo Routerのファイルベースルーティングは、Web環境でも全く同じように動作します。今回のサンプルプロジェクトを例に見てみましょう(リスト8)。

[リスト8]Expo Routerのファイル構成例
app/
├── _layout.tsx        # ルートレイアウト
├── (tabs)/
│   ├── _layout.tsx   # タブレイアウト
│   ├── index.tsx     # ホームタブ (/)
│   └── explore.tsx   # 探索タブ (/explore)
└── modal.tsx         # モーダル画面 (/modal)

 この構成は、モバイルアプリでもWebアプリでも同じように機能し、ブラウザのアドレスバーには対応するURLが表示されます。/exploreにアクセスすれば、app/(tabs)/explore.tsxコンポーネントが表示され、/modalにアクセスすれば、app/modal.tsxコンポーネントが表示されます。

 Expo Routerは、Next.jsのようなWebフレームワークから着想を得た設計となっており、Web環境では元々の設計思想通りに動作します。特別なWeb対応を行っているのではなく、ファイルベースルーティングやReactコンポーネントによるページ構成が、そのままブラウザの標準的な動作として機能するのです。

静的エクスポートとSEO対応

 Web向けの本番ビルドでは、静的なHTMLファイルが生成されるため、SEO(検索エンジン最適化)にも対応しやすくなります。先ほど実行したexpo export --platform webの結果、以下のようなファイル構成でdist/ディレクトリが生成されました(リスト9)。

[リスト9]本番ビルド生成ファイル構成
dist/
├── index.html          # ホームページ (/)
├── explore.html        # 探索ページ (/explore)
├── modal.html          # モーダルページ (/modal)
├── (tabs)/
│   ├── index.html     # タブのホーム
│   └── explore.html   # タブの探索
├── _sitemap.html       # サイトマップ
├── +not-found.html     # 404ページ
└── _expo/
    └── static/
        ├── js/         # JavaScriptバンドル
        └── css/        # CSSファイル

 各ページに対応する個別のHTMLファイルが生成されており、検索エンジンがページを正しくインデックスできる構造になっています。また、Expo Routerの設定により、ページタイトルやメタデータも適切に設定され、ブラウザのタブやSEOに最適化された表示を実現できます。

次のページ
Web対応モジュールの見分け方

この記事は参考になりましたか?

ExpoとEASで始める快適モバイルアプリ開発連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 中川 幸哉(ナカガワ ユキヤ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/22352 2025/10/17 11:00

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー