SHOEISHA iD

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

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

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

Expo Routerで画面遷移を実装しよう――ファイルベースルーティングの基礎

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

Expo Routerとは?

 前述の通り、React Nativeには画面遷移(ナビゲーション)機能が標準で備わっていません。そこでExpoエコシステムが提供する「Expo Router」が、画面遷移の実装を大幅に簡素化する強力なライブラリとして注目されています。

 Expo Routerの最大の特徴は、ファイルベースルーティングを採用していることです。これは、ファイルシステムの構造がそのままアプリの画面構造になるという直感的な仕組みです。

 例えば、appディレクトリ内にhome.jsというファイルを作成すると、自動的に/homeというパスでアクセスできる画面が定義されます。複雑なルーティング設定を記述する必要がなく、ファイル配置だけで画面構造を表現できるのです。

 Expo Routerは以下のような特徴を備えています:

  1. 宣言的なAPI:コードの可読性が高く、画面遷移のロジックが理解しやすい
  2. 自動的なアニメーション:標準的な画面遷移アニメーションが自動的に適用される
  3. ネイティブスタック対応:iOSとAndroidそれぞれのネイティブなスタックナビゲーションを利用
  4. 型安全なナビゲーション:TypeScriptと組み合わせることで型安全な画面遷移が可能
  5. Web互換性:モバイルアプリだけでなく、Webアプリケーションとしても動作する

 特にWebフレームワーク(Next.jsなど)の開発経験を持つエンジニアにとっては、馴染みやすい設計となっており、React NativeアプリのUI/UX構築をよりシンプルかつ効率的にします。

Expo Routerのセットアップ

 Expo Routerをプロジェクトに導入する方法は、新規プロジェクト作成時と既存プロジェクトへの追加時で異なります。

新規プロジェクトの場合

 新しいExpoプロジェクトを作成する際に、--templateオプションでdefaultを指定するのが最も簡単です(リスト1)。

[リスト1]新規プロジェクトの作成
$ npx create-expo-app@latest --template default my-router-app
$ cd my-router-app

 このコマンドを実行すると、Expo Routerが最初から組み込まれたプロジェクトテンプレートが生成されます。必要な設定ファイルや基本的なディレクトリ構造(appディレクトリなど)が自動的に用意されるため、すぐに開発を始められます。

 プロジェクトが作成されると、図1のようなディレクトリ構造が生成されます。

図1:Expo Routerを使用した新規プロジェクトのディレクトリ構造
図1:Expo Routerを使用した新規プロジェクトのディレクトリ構造

 この後のサンプルでは不要になるため、今のうちに次のディレクトリは削除しておいてください。

  • app/
  • components/
  • constants/
  • hooks/

 appディレクトリはExpo Routerの必須ディレクトリですが、後でまた作るので、今は削除しても構いません。

既存プロジェクトへの導入

 すでに存在するExpoプロジェクトにExpo Routerを追加する場合は、以下の手順を実行します。

  1. 必要なパッケージをインストールする
  2. package.jsonmainエントリポイントを変更する
  3. app.json(またはapp.config.js)にschemeを設定する

 まず、必要なパッケージをインストールします。リスト2のコマンドを実行してください。

[リスト2]Expo Routerに必要なパッケージをインストールする
$ npx expo install expo-router react-native-safe-area-context react-native-screens expo-linking expo-constants expo-status-bar

 次に、リスト3のようにpackage.jsonmainエントリポイントを変更します。これにより、アプリの起動時にExpo Routerが読み込まれるようになります。

[リスト3]package.json
{
  // ... 他の設定 ...
  "main": "expo-router/entry"
}

 これにより、アプリの起動時にExpo Routerが読み込まれるようになります。

 続いて、リスト4のようにapp.json(またはapp.config.js)にschemeを設定します。

[リスト4]app.json
{
  "expo": {
    // ... 他の設定 ...
    "scheme": "my-app-scheme" // 任意のスキーム名を設定
  }
}

 schemeは、ディープリンク(アプリ内の特定の画面に直接遷移する機能)などでmy-app-scheme://のようにリンクの先頭で使用されます。任意の文字列を指定できますが、他のアプリと重複しないユニークなものが推奨されます。

 これらの手順により、既存のプロジェクトでもExpo Routerを利用する準備が整います。既存プロジェクトへの導入手順や必要な追加パッケージについては、Expo側のバージョンアップによって変更される可能性があるため、最新のドキュメントを確認してください。

次のページ
基本的なルーティング

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
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編 」他、著書多数

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21492 2025/05/23 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング