📱

アプリ開発の面倒を全部引き受けてくれる!Expo Application Servicesを使いこなす

2024/12/20に公開

この記事はReact Native 全部俺 Advent Calendar 19目の記事です。

https://adventar.org/calendars/10741

このアドベントカレンダーについて

このアドベントカレンダーは @itome が全て書いています。

基本的にReact NativeおよびExpoの公式ドキュメントとソースコードを参照しながら書いていきます。誤植や編集依頼はXにお願いします。

EASとは?

EAS (Expo Application Services)は、Expoが提供するモバイルアプリ開発のためのクラウドサービスです。従来のモバイルアプリ開発では、アプリのビルドやリリース、プッシュ通知の送信などのためにそれぞれのサービスを個別に契約し、設定する必要がありました。EASはそれらの機能を一つのサービスにまとめ、コマンド一発で利用できるようにしたものです。

ちなみにExpoを使うにあたってEASは必須ではありません。EASと契約しなくてもExpo単体で使うことが可能です。
Web開発者向けの説明にはなりますが、Next.jsとVercelの関係と同じです。

EASが提供する機能

EAS Build

https://docs.expo.dev/build/introduction/

  • クラウド上でiOS/Androidアプリをビルド
  • ローカルの開発環境に依存せず、チームメンバー全員が同じ環境でビルド可能
  • Macを持っていなくてもiOSアプリがビルドできる
  • ビルドキャッシュによって2回目以降のビルドが高速化される
  • ビルド時の環境変数やシークレットの管理が可能
  • 複数の環境(開発/ステージング/本番)に対応したビルド設定を管理可能
  • Apple Certificates & Provisioning Profilesの自動管理

EAS Submit

https://docs.expo.dev/submit/introduction/

  • ストアへの申請作業を自動化
  • App Store ConnectやGoogle Play Consoleへの手動アップロードが不要
  • CIと組み合わせて自動デプロイが可能
  • アプリのメタデータ(スクリーンショット、説明文など)の管理
  • 複数のストアアカウントの認証情報を安全に管理
  • ストアへの提出履歴の管理と追跡
  • バイナリの自動署名
  • TestFlightやGoogle Play内部テストへの自動配布

EAS Update

https://docs.expo.dev/eas-update/introduction/

  • JavaScriptのコードをOTAで更新可能
  • ストアの審査を待たずにバグ修正やUI調整が可能
  • A/Bテストなどの実験的な機能のロールアウトに最適
  • アップデートの段階的なロールアウトをサポート
  • 特定のユーザーグループに対するアップデートの配信
  • アップデートの強制適用オプション
  • ユーザーのアップデート状況の追跡
  • アップデートのロールバック機能
  • 複数のブランチ(development/staging/production)でのアップデート管理

Push Notifications

https://docs.expo.dev/push-notifications/overview/

  • プッシュ通知の送信に必要なインフラを提供
  • FCMやAPNsの設定が不要
  • 開発環境でもプッシュ通知のテストが可能
  • トークンの自動管理
  • バッチ送信による大量通知の効率的な配信
  • 通知の配信スケジュール機能
  • ディープリンクのサポート
  • 通知の開封率などの分析機能
  • セグメント別の通知配信
  • 多言語対応の通知テンプレート
  • エラーハンドリングとリトライ機能

料金プラン

2024年12月現在、以下の4つのプランが提供されています。

Free (無料)

  • 無料で利用可能、クレジットカード不要
  • 月30回までのモバイルアプリビルド
  • App Store、Google Playへの申請機能
  • 月間アクティブユーザー1,000人までのOTAアップデート
  • 個人開発やプロトタイプ開発に最適

On-demand (従量課金)

  • 使った分だけ支払う柔軟なプラン
  • 優先ビルドキュー(より高速なビルド開始)
  • ビルドタイムアウトが2時間まで延長
  • 利用量に応じた料金体系

Production ($99/month)

  • チーム開発向けの本番環境用プラン
  • $99分のビルドクレジット付き
  • 月間アクティブユーザー50,000人までのOTAアップデート
  • 2つまでの同時ビルド実行が可能
  • 追加利用分は別途料金

Enterprise ($999/month)

  • 大規模アプリや established チーム向け
  • $999分のビルドクレジット付き
  • 月間アクティブユーザー1,000,000人までのOTAアップデート
  • 5つまでの同時ビルド実行が可能
  • さらに大規模な利用の場合はセールスに相談可能
  • 追加利用分は別途料金

各プランは用途や規模に応じて選択でき、Free プランから始めて成長に合わせてアップグレードすることができます。また、On-demand プラン以降では、基本料金に含まれる利用量を超えた場合は従量課金での追加請求となります。

https://expo.dev/pricing

EASの導入手順

基本的な導入手順は以下の通りです。詳細は次回以降の記事で説明します。

# EAS CLIをインストール
$ npm install -g eas-cli

# EASにログイン
$ eas login

# プロジェクトの設定
$ eas build:configure

これから説明すること

今回は概要の説明に留めましましたが、明日以降の記事で以下の内容について詳しく解説していきます。

  1. EAS Submitを使ったストアへのリリース方法
  2. expo-dev-clientを使った開発環境の構築
  3. EAS Updateを使ったOTAアップデートの実装
  4. EASを使ったプッシュ通知の実装

それぞれの記事では、実際のコードやコマンドを交えながら、具体的な実装方法を説明していきます。

まとめ

EASは、モバイルアプリ開発に必要なインフラを全て提供してくれる便利なサービスです。無料プランでも十分な機能が提供されており、個人開発やスモールチームでの利用に最適です。次回以降の記事では、各機能の具体的な使い方を説明していきますので、ぜひご期待ください。

https://docs.expo.dev/eas/

Discussion