Claude CodeでExpoアプリ開発を進める手順 — EAS Buildまで
ExpoのClaude Codeプラグインでプロジェクト作成からEAS Buildまでを一気通貫にする手順を、Expoドキュメントに基づいてまとめます。
Claude CodeでExpoアプリを作るとはどういうことか
Expoは、Android・iOSアプリをReact Nativeで開発するためのフレームワークです。ファイルベースルーティングやネイティブモジュールの標準ライブラリを備え、create-expo-appコマンドでプロジェクトを作成できます。
Claude CodeとExpoはプラグイン1つで統合されています。claude plugin install expo@claude-plugins-officialを実行すると、Expo特化のスキル群がインストールされます。同時に、ドキュメント・ビルドログ・TestFlightのメタデータにアクセスできるExpo MCPサーバーも登録されます。プロジェクト作成からストア提出用バイナリの生成(EAS Build)まで、Claude Codeのセッション内で完結する構築フローです。
前提条件
Expoの開発には以下が必要です。
- Node.js(LTS版)
- macOS、Windows(PowerShellまたはWSL 2)、Linuxのいずれか
- Claude Codeのインストール(
curl -fsSL https://claude.ai/install.sh | bash) - Expoアカウント(EAS Buildを使う場合に必須。expo.devで無料登録可能)
Androidの実機テストにはExpo Goアプリ(Google Playで配布)、iOSの実機テストにはApple Developer Programへの登録が必要です。Expo Goは学習用のプレイグラウンドアプリで、独自のネイティブモジュールを含む本番アプリの検証には使えません。カスタムネイティブモジュールを使う場合は、後述する開発ビルドを使います。
Expoプロジェクトを作成する
まずcreate-expo-appでプロジェクトを作成します。
npx create-expo-app@latestこのコマンドで作成したプロジェクトには、AIエージェント向けの設定ファイルが最初から含まれています。
| ファイル | 読み込まれるエージェント | 役割 |
|---|---|---|
AGENTS.md | 読み込まれるエージェントCodex・Cursorが直接読む。Claude CodeはCLAUDE.md経由 | 役割プロジェクトが対象とするExpo SDKバージョンのドキュメントを指す一次情報源 |
CLAUDE.md | 読み込まれるエージェントClaude Code起動時 | 役割@AGENTS.mdの1行のみを含み、AGENTS.mdをClaude Codeのコンテキストに取り込む |
.claude/settings.json | 読み込まれるエージェントClaude Code起動時 | 役割Claude CodeプラグインマーケットプレイスのExpoプラグインを事前有効化 |
プロジェクト単位の指示はCLAUDE.mdではなくAGENTS.mdに書きます。複数のAIコーディングツールを併用する場合の設定ファイル統合パターンはAGENTS.mdとCLAUDE.mdで設定を統合する運用パターンにまとまっています。
既存プロジェクトにこの3ファイルが無い場合は自分で追加します。配布用テンプレートのAGENTS.mdをダウンロードし、CLAUDE.mdには@AGENTS.mdと書き、.claude/settings.jsonにプラグインの有効化設定を加えれば、新規プロジェクトと同じ状態になります。
デフォルトのプロジェクトは、src/appディレクトリのファイル構成がそのままナビゲーションになるファイルベースルーティングを採用しています。src/app/index.tsxとsrc/app/explore.tsxの2画面をタブナビゲーションとして表示し、src/app/_layout.tsxがプラットフォームごとのタブ構成を定義します。Claude Codeに「設定画面を追加して」のように依頼すると、この規約に沿ってファイルを配置してくれます。どこに何のファイルを置くかという規約はexpo-project-structureスキルが新規プロジェクト向けに担っています。
Expoプラグインをインストールする
Expo特化のスキルとMCPサーバーは、プラグインを1コマンドでインストールできます。
claude plugin install expo@claude-plugins-officialインストール後、Claude Codeセッション内で/mcpを実行してExpoアカウントにサインインします。プロジェクトだけにスコープを限定してインストールしたい場合は--scope projectを付けます(claude plugin install expo@claude-plugins-official --scope project)。--scopeオプション全体の挙動はClaude Code plugin init/installコマンドの全オプションで確認できます。
プラグインは3つの要素で構成されています。
- Expo Skills:
expo-*(フレームワーク関連)とeas-*(EAS関連)の2系統のスキルを追加します。expo-router(ルーティング)、expo-native-ui(HIG準拠のUI)、expo-upgrade(SDKアップグレード)、eas-app-stores(ストア提出)などがあり、マシンに1回インストールすれば以降のプロジェクトでも使えます - Expo MCPサーバー: 公式ドキュメント・EASビルド履歴・EAS Updateのチャンネル・TestFlightのメタデータへのライブアクセスを提供するリモートMCPサーバー。Claude CodeとCodexではプラグインが自動登録するため、個別追加は不要です
- プロジェクトコンテキストファイル:
AGENTS.md・CLAUDE.md・.claude/settings.json(前述)
Claude Code以外のエージェント(Cursor等)には専用プラグインが無いため、Expo SkillsとExpo MCPサーバーを個別にインストールします。
Claude Codeで開発を始める
プロジェクトルートでClaude Codeを起動し、自然言語で作業内容を指示します。
cd my-app
claudeセットアップの確認には、次のプロンプトを使います。
Open package.json and tell me which Expo SDK version this project targets.package.jsonに記載されたSDKバージョンで応答が返れば、Claude Codeがプロジェクトを正しく読み込めています。
Expoのドキュメントが挙げる具体的なプロンプト例は次の通りです。
| やりたいこと | プロンプト例 |
|---|---|
| SDKアップグレード | プロンプト例このプロジェクトを最新のExpo SDKにアップグレードして、破壊的変更を修正して |
| ナビゲーション追加 | プロンプト例Expo Routerでタブナビゲーションと設定画面を追加して |
| ビルド自動化 | プロンプト例プルリクエストごとにアプリをビルドするEAS Workflowを作成して |
| ビルドのデバッグ | プロンプト例直近のiOSビルドが失敗した。EAS Buildのログを読んで原因を教えて |
| ネイティブUI追加 | プロンプト例SwiftUIのピッカーコンポーネントをExpoアプリに追加して |
expoプラグインが有効なのにローカルにインストールされていない場合、Claude Codeセッションでエラーが出ます。この場合は開発者本人のマシンでclaude plugin install expo@claude-plugins-officialを実行し、セッションを再起動します。
実機・シミュレーターで動かす
開発サーバーの起動はnpx expo start(パッケージマネージャーによりyarn/pnpm/bunも可)です。QRコードをExpo Goアプリでスキャンするか、iOSシミュレーター・Androidエミュレーターで直接開きます。
Expo MCPサーバーは、SDK 54以降であればexpo-mcpパッケージを開発依存として追加することで、ローカル機能(スクリーンショット撮影・要素タップ・DevTools起動)を有効にできます。
npx expo install expo-mcp --dev
EXPO_UNSTABLE_MCP_SERVER=1 npx expo startこの状態でClaude Codeに「青い円のViewを追加して、正しく描画されているか確認して」と依頼すると、コードの実装・スクリーンショットの撮影・検証までを1つの指示で完結できます。開発サーバーを再起動したときは、AIツール側のMCP接続も再接続が必要です。
Expo MCPサーバーには制約もあります。同時に接続できる開発サーバーは1つのみで、ローカル機能のiOS対応はシミュレーターに限られ(実機は未対応)、iOSのローカル機能はmacOSホストでのみ動作します。Expoはサーバーに送られたデータをモデルの学習には使わないとしています。
EAS Buildでストア提出用バイナリを作る
ストアに提出できるバイナリを作るには、EAS(Expo Application Services)のeas buildを使います。
npm install --global eas-cli
eas login
eas build:configure
eas build --platform alleas build:configureはEAS用の設定を生成し、eas build --platform allはAndroid・iOS両方のバイナリを1コマンドでクラウド側に送信します。プラットフォームを個別に指定したい場合は--platform androidまたは--platform iosを使います。
プロジェクトの構成によっては追加設定が必要です。環境変数に依存するアプリはビルド設定に環境変数を追加し、モノレポ構成のプロジェクトは専用の手順に従い、プライベートなnpmパッケージを使う場合はnpmトークンをビルド設定に追加します。Node・Yarn・CocoaPods・Xcodeなど特定バージョンのツールに依存する場合も、eas.jsonのビルド設定でバージョンを指定できます。開発用のビルドはチーム内で共有可能で、2人のメンバーが同じプロジェクトフィンガープリントでeas build:devを実行すると、新規ビルドの代わりに既存ビルドがダウンロードされます。
ストア提出には、それぞれ次のアカウントが必要です。
| ストア | 必要なアカウント | 費用 |
|---|---|---|
| Google Playストア | 必要なアカウントGoogle Playデベロッパー登録 | 費用25米ドル(一度きり) |
| Apple App Store | 必要なアカウントApple Developer Program | 費用99米ドル(年額) |
署名鍵(Androidのkeystore、iOSのプロビジョニングプロファイルと配布証明書)はEAS CLIに生成・管理を任せることも、自分で用意した鍵を使うこともできます。アプリストアへの提出を経ずに、実機・シミュレーターへ直接インストールしたいだけであれば、開発ビルド(expo-dev-clientを含むデバッグビルド)を作る方法もあります。
ビルドをCI/CDに組み込む場合は、EAS Workflowsのbuildジョブを使います。
jobs:
build:
type: build
params:
platform: all
profile: ${{ github.ref_name == 'main' && 'production' || 'preview' }}EAS Buildは既存のCIパイプラインやGitHub連携からのトリガーにも対応しています。同じくMCPサーバー経由でデプロイやスケーリングを扱う例はHeroku MCPサーバーでClaude Codeからアプリをデプロイ・スケーリングするが参考になります。
EAS Buildが向く場面と、向かない場面は次の通りです。
| 用途 | 適性 |
|---|---|
| ストア提出用の本番バイナリ生成 | 適性◎ |
| 内部配布(テスターへのURL共有) | 適性◎ |
| チーム間で環境差のないビルド | 適性◎ |
| CI/EAS Workflowsからの自動化 | 適性◎ |
| ネイティブコードのローカルデバッグ | 適性✗(ローカルビルドか実機デバッグを使う) |
よくあるつまずき
/mcpでサインインできない: Expoアカウントの認証はブラウザ経由です。ブラウザが自動で開かない場合は、ターミナルに表示されるURLを手動で開いてください- プラグインが有効なのに動かない:
.claude/settings.jsonはプラグインを「有効」にするだけで、実体のインストールは開発者ごとにclaude plugin installが必要です。チームメンバーがクローン直後にエラーを見たら、まずこのインストール忘れを疑います - ローカルMCP機能が使えない:
expo-mcpはSDK 54以降が前提です。古いSDKのプロジェクトでは、リモートのサーバー機能(ドキュメント検索・ビルド管理)だけが使えます - iOS実機でのスクリーンショット撮影ができない: Expo MCPサーバーのローカル機能は、iOSに関してはシミュレーターのみに対応しており、物理デバイスでは動作しません
まとめ
Claude CodeでのExpoアプリ開発は、プラグイン1つでスキル・MCPサーバー・プロジェクトコンテキストファイルがまとめてセットアップされる構築フローです。create-expo-appでプロジェクトを作り、claude plugin install expo@claude-plugins-officialでプラグインを入れ、eas buildでストア提出用バイナリを作るところまでが一続きの作業になります。ゲームエンジンなど他のフレームワークでも同種のMCP連携パターンが提供されており、Unity公式MCPサーバーをClaude Codeで使う方法で類似の設定思想を比較できます。