Claude Media
Claude CodeでExpoアプリ開発を進める手順 — EAS Buildまで

Claude CodeでExpoアプリ開発を進める手順 — EAS Buildまで

Claude CodeでExpoを使うにはexpo@claude-plugins-officialを入れます。Expo MCPでEASのビルド確認まで進める手順を解説します。

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サーバーも登録されます。Expo MCPサーバー経由で、EASビルドの起動と監視、ワークフローの実行、TestFlightのクラッシュ確認までClaude Codeに任せられます。「直近のiOSビルドが失敗した原因を調べて」と頼めば、EASのビルド履歴を読んで原因を探します。

流れは次の4段階です。

手順

プロジェクト作成からストア提出用バイナリまで

  1. 1

    プロジェクトを作る

    create-expo-appが、AIエージェント向けの設定ファイルごと雛形を作ります。

  2. 2

    プラグインを入れる

    スキルとMCPサーバーを、ユーザー単位かプロジェクト単位で導入します。

  3. 3

    Expoアカウントでサインインする

    セッション内の/mcpで、Expo MCPサーバーを認証します。

  4. 4

    EAS Buildでバイナリを作る

    ビルドはクラウド側で動き、ストア提出用のバイナリが出力されます。

前提条件

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で無料登録可能。Expo MCPサーバーのドキュメント検索ツールsearch_documentationはEASの有料プランが前提)

Expo Goは学習者が手早くExpoを試すためのプレイグラウンドアプリです。自分のアプリのネイティブコードを含めて動かしたいときは、開発ビルド(Expoの開発者ツールを組み込んだ自分のアプリのビルド)を使います。

Expoプロジェクトを作成する

まずcreate-expo-appでプロジェクトを作成します。

npx create-expo-app@latest

create-expo-appは、新規プロジェクトを作るときにだけAIエージェント向けのファイルを書き出します。

ファイル読むエージェント役割
AGENTS.md読むエージェントClaude Code・Codex・Cursor役割プロジェクトのExpo SDKに対応したドキュメントを指す。プロジェクト単位の指示の置き場
.claude/settings.json読むエージェントClaude Code(起動時)役割ExpoのClaude Codeプラグインを事前に有効化する(Claude Codeがインストール済みの場合のみ作られる)

プロジェクト単位の指示はAGENTS.mdに書きます。複数のAIコーディングツールを併用する場合の設定ファイル統合パターンはAGENTS.mdとCLAUDE.mdで設定を統合する運用パターンにまとまっています。

Claude Codeは、CLAUDE.mdが無ければAGENTS.mdを直接読みます。この読み込みにはv2.1.277以降が必要です。ところが後からCLAUDE.mdを足すと挙動が変わります。

くらべる

どのファイルがClaude Codeに読まれるか

既定の雛形のまま

CLAUDE.mdが無い

AGENTS.mdだけが読まれます。起動時の会話にno CLAUDE.md found; AGENTS.md loaded: ...という行が出ます。

CLAUDE.local.mdも同じ

CLAUDE.mdを足した

CLAUDE.md系のファイルだけが読まれ、AGENTS.mdは読まれません。@AGENTS.mdで取り込むか、/configの「Project instructions」をclaude-md-and-agents-mdにすると両方が読まれます。

v2.1.280以降は、実際に何が読まれたかを/memoryに出るパスで確かめられます。

既存プロジェクトには、同じ2ファイルを自分で足します。AGENTS.mdは配布用テンプレートをダウンロードし、すでにAGENTS.mdがある場合は置き換えずに追記します。

curl -o AGENTS.md https://raw.githubusercontent.com/expo/expo/main/packages/create-expo/template/agent-files/AGENTS.md

.claude/settings.jsonには、プラグインを有効にする設定を書きます。

{
  "enabledPlugins": {
    "expo@claude-plugins-official": true
  }
}

デフォルトのプロジェクトは、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アカウントにサインインします。セッション内から/plugin install expo@claude-plugins-officialで入れる方法もあります。

スコープの選択肢はv2.1.287のclaude plugin install --helpに出ています。

-s, --scope <scope>  Installation scope: user, project, or local

指定しなければuserスコープで入ります。プロジェクトだけに限定したいときは--scope projectを付けます。ほかのオプションはClaude Code plugin init/installコマンドの全オプションで扱っています。

プラグイン自体はスキルとMCPサーバーの2要素で、create-expo-appが書くコンテキストファイルと合わせて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ではプラグインが自動登録するため、個別追加は不要です
  • プロジェクトコンテキストファイル: create-expo-appが書くAGENTS.mdと.claude/settings.json(前述)。プラグインには含まれません

プラグインを使わずMCPサーバーだけを足す場合は、次のコマンドで登録します(URLはhttps://mcp.expo.dev/mcp、認証はOAuthです)。

claude mcp add --transport http expo https://mcp.expo.dev/mcp

Claudeのウェブ・デスクトップ・モバイルアプリからは、Claude Connectorsに載っているExpoコネクタで接続でき、ローカルへのインストールは要りません。TeamまたはEnterpriseプランでは、組織全体で有効にできます。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プラグインが有効なのにローカルに無い場合、セッションに次のエラーが出ます。

Plugin 'expo' is enabled in project settings but isn't installed here.

その開発者のマシンで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はサーバーに送られたデータをモデルの学習には使わないとしています。ただしデータはMCPクライアントとモデル提供元に渡るため、保持や学習の扱いはそちらの規約に従います。HIPAAやSOC 2の対象になる案件では、有効化の前に各規約を確かめておく必要があります。

EAS Buildでストア提出用バイナリを作る

ストアに提出できるバイナリを作るには、EAS(Expo Application Services)のeas buildを使います。

npm install --global eas-cli
eas login
eas build:configure
eas build --platform all

eas 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

    $25

    一度きり。EAS Buildでのビルドと署名だけなら会員登録なしで可能で、ストアへのアップロードに必要

  • Apple App Store

    $99/年

    Apple Developer Program。App Store向けのリリースビルドを作るのに必要

米ドル。Expoのドキュメントによる金額

署名鍵(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からの自動化適性◎
ネイティブコードのローカルデバッグ適性✗(eas build --localで自分のマシン上でビルドするか、実機デバッグを使う)

よくあるつまずき

  • AGENTS.mdの指示が効かない: まず/memoryに出るパスで、実際に読まれたファイルを確かめます(v2.1.280以降)。CLAUDE.md系のファイルがあるときはAGENTS.mdが読まれないため、CLAUDE.mdに@AGENTS.mdと1行書けば取り込めます
  • /mcpでサインインできない: Expoアカウントの認証はブラウザ経由です。ブラウザが自動で開かない場合は、ターミナルに表示されるURLを手動で開いてください
  • プラグインが有効なのに動かない: .claude/settings.jsonはプラグインを有効にするだけで、実体のインストールは開発者ごとにclaude plugin installが必要です。クローン直後のエラーは前節のメッセージです
  • ローカルMCP機能が使えない: expo-mcpはSDK 54以降が前提です。古いSDKのプロジェクトでは、リモートのサーバー機能(ドキュメント検索・ビルド管理)だけが使えます

まとめ

迷ったら、まずAGENTS.mdに指示を書き、CLAUDE.mdは必要になるまで作らないのが衝突の少ない構成です。v2.1.281より前のBedrock経由やテレメトリー無効のセッションではAGENTS.mdを直接読めないため、@AGENTS.mdを書いたCLAUDE.mdが要ります(更新すれば直接読めます)。ゲームエンジンなど他のフレームワークでも同種のMCP連携パターンが提供されており、Unity公式MCPサーバーをClaude Codeで使う方法で類似の設定思想を比較できます。

参照した一次ソース

この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。

  1. docs.expo.dev/get-started/introduction
  2. docs.expo.dev/agents/claude.md
  3. docs.expo.dev/mcp.md
  4. docs.expo.dev/build/introduction.md
  5. docs.expo.dev/build/setup.md
  6. docs.expo.dev/skills.md
  7. docs.expo.dev/agents.md
  8. docs.expo.dev/deploy/build-project.md
  9. code.claude.com/docs/en/memory
この記事を共有:XはてブLinkedIn