SHOEISHA iD

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

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

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

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

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

 これまでの連載では、Expo Routerによるナビゲーション、認証フロー、ディープリンクなど、モバイルアプリならではの機能を実装してきました。しかし、Expoの魅力はモバイルプラットフォームだけではありません。同じコードベースからWebアプリケーションも生成できるのです。今回は、ExpoのWeb向けビルド機能を活用し、「Write once, run anywhere」の理想に近づく方法を解説します。

対象読者

  • React Nativeでモバイルアプリ開発を行っているエンジニア
  • Webアプリケーションも同時に展開したいと考えている開発者
  • コンポーネントの再利用性を高めたい開発チーム

前提環境

 筆者の検証環境は以下の通りです。

  • macOS Sequoia 15.6.1
  • Node.js 24.8.0
  • npm 11.6.0
  • Expo 54.0.7
  • React Native 0.81.4
  • React Native for Web 0.21.1
  • React DOM 19.1.0

Expoで作ったコンポーネントをブラウザで確認する

 これまでの連載では、React Nativeを使ったモバイルアプリ開発に焦点を当ててきました。しかし、改めて考えてみると、ReactそのものはもともとWebフロントエンド開発のために生まれたライブラリです。React NativeはそのReactの思想をモバイルプラットフォームに拡張したものでした。

 この特性を逆手に取り、React Native向けに作成したコンポーネントをブラウザで動かすアプローチがあります。Expoもこの仕組みを採用しており、ブラウザで動作させるためのビルドオプションが存在しています。この仕組みでモバイルアプリをある程度再現したWebアプリを作ることも可能ですが、今回は別のアプローチでの活用方法を解説します。

 開発中のモバイルアプリのUIを、開発者以外のデザイナーやQAエンジニアに確認してもらうのは、エミュレーターを動かしてもらったり、各位の手元のデバイスにアプリをインストールしてもらったりと、手間がかかりがちです。ここで、開発中のUIをある程度ブラウザで確認できるとなったら、かなり手間が省けるのではないでしょうか。本記事では、そういった活用もできるExpoのWeb対応について解説していきます。

React Native for Webの仕組み

 ExpoのWeb対応は、「React Native for Web」というライブラリによって実現されています(図1)。

図1:React Native for WebのWebサイト
図1:React Native for WebのWebサイト

 これは、何かの特殊なランタイムやレンダリングの技術ではなく、普通のReact向けのUIライブラリです。少し特殊な点としては、React NativeのUIコンポーネントや各種APIとほとんど同じインターフェースを持っており、その挙動もReact Nativeを再現したものになっています。

 例えば、<View>コンポーネントは<div>に落とし込まれます。 <Text>は単独なら<div>になり、ネストして使っていれば内側の <Text><span>になります。画面サイズやアプリの表示サイズを取得するためのDimensionモジュールは、内部で window.screenなどを呼び出しながら、ブラウザから見える範囲の情報を取得します。

 Web向けビルド時には、バンドラーがすべてのfrom "react-native"from "react-native-web"に読み替えて、React Native for Webの実装に差し替えています。つまり、React Native for Webは特殊なランタイムではなく、React Nativeと同じAPIを持つ独立したブラウザ向けReact UIライブラリなのです。

 元々はTwitter(現X)のフロントエンド実装のために作られた信頼性の高いライブラリということもあり、ExpoのWeb対応にも採用されました。

会員登録無料すると、続きをお読みいただけます

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

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます
  • ・翔泳社の本が買える!
    500円分のポイントをプレゼント

メールバックナンバー

次のページ
プラットフォーム固有の実装パターン

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

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

もっと読む

この記事の著者

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

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング