Skip to main content

Expo

Overview

ExpoはReact Nativeアプリを開発 / ビルド /デプロイするためのエコシステム(ツール群およびプラットフォーム)
単なるライブラリではなく、開発者のワークフロー全体を強力にサポートする

Expoの歴史:3つのパラダイムシフト

Expoを理解するには、その進化の歴史を知るのが一番の近道。

  1. Managed Workflow の時代(初期〜2020年頃) 特徴: 「Expo Go」アプリ内でのみ開発 メリット: XcodeやAndroid Studioが不要。QRコードをスキャンするだけで動く 限界: ネイティブコード(Swift/Kotlin)を一切触れず、独自のネイティブライブラリ(Firebase Native等)が追加できなかった 当時の評価: 「初心者向け、プロトタイプ向け」という印象
  2. Bare Workflow と EAS の登場(2021年〜2023年頃) 特徴: 自由にネイティブコードを触りつつ、Expoの便利なAPI(Camera, Notifications等)を使えるように 革命: EAS (Expo Application Services) の登場により、クラウド上でビルド、App Store/Google Playへの提出を自動化
  3. "The Only Way" へ(2024年〜現在) 現在: 現在、React Native公式ドキュメントでも 「Expoを使うこと」が標準 として推奨されている 進化: expo-dev-client により、ManagedとBareの境界が消滅。どんなに複雑なネイティブライブラリを使うプロジェクトでも、Expoの恩恵を受けられるようになった

Expoの2つの開発モード(ビルドの仕組み)

現在の開発者が最も混乱しやすいのが、「どのアプリ(バイナリ)を使ってデバッグするか」

項目Expo GoDevelopment Builds (expo-dev-client)
アプリ本体ストアからDLする汎用アプリ自分のプロジェクト専用にビルドしたアプリ
ネイティブコードExpo標準搭載のものだけ自由に追加・変更可能
ライブラリ制限あり(Firebase Native等は不可)制限なし(Config, Firebase等OK)
推奨ケース学習、単純なプロトタイプ実務アプリ、商用開発の標準

主要なコンポーネント

  1. Expo SDK React Native本体を拡張した強力な標準ライブラリ群 expo-camera, expo-location, expo-file-system など、一貫したAPIで提供されます。
  2. EAS (Expo Application Services) Expoが提供するクラウドサービス。 EAS Build: クラウドで .ipa / .aab を作成(MacがなくてもiOSビルドが可能 EAS Update: アプリ審査を通さず、JavaScriptの修正だけを即座にユーザーへ配信(いわゆるCodePush) EAS Submit: ストアへのアップロードをコマンド一つで代行。
  3. Expo Router Next.jsのような ファイルシステムベースのルーティング をReact Nativeに持ち込みました。Webとのコード共有がさらに容易になりました。

なぜ現代のReact Native開発でExpoを使うのか?

  1. メンテナビリティ: React Nativeのバージョンアップに伴うネイティブ層の破壊的変更を、Expoがある程度吸収してくれる。
  2. Prebuild: ios や android フォルダを自動生成(および自動破棄)できる仕組み。これにより、ネイティブ設定を app.json (Config Plugins) で宣言的に管理できる。
  3. 開発速度: 実機デバッグの開始が圧倒的に速い。

Expo メリット

特徴説明
OTAアップデートExpoではアプリストアを通さずに、JavaScript層の修正を即座に反映可能
豊富な機能Expo SDK には、カメラ、位置情報、通知などの機能が標準で多数含まれる
開発ツールExpo Goアプリを使用することで、QRコード経由で実機テストが容易
クラウドビルドEAS Build により、ローカル環境(Macの有無など)に依存せずアプリをビルド
Web対応Expoは追加設定なしでWebアプリ(React Web)としてのビルドもサポート

Expo Router

Resource