◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-03-14上級

Rork アプリを EAS で CI/CD 化する — Build・OTA 配信・GitHub Actions 連携の実装と運用メモ

6本のアプリを並行運用する個人開発の現場で、Rork(Expo)アプリのビルドと配信を EAS に移行した手順をまとめました。EAS Build・EAS Update・GitHub Actions 連携に加え、無料プランの制限と付き合うコツもお伝えします。

Rork584EAS8Expo219CI/CD9OTA7GitHub Actions5

✦ プレミアム記事

取り組みの背景 — 6本のアプリのリリース作業が回らなくなった日

2026年に入ってからの私は、壁紙系を中心とした6本のアプリの v2.0.0 / v2.1.0 アップデートを並行して進めていました。1本ずつ Xcode でアーカイブして App Store Connect にアップロードし、Android 側では AAB を書き出して Play Console に上げます。この手作業を6本分繰り返すと、検証も含めてほぼ2日が消えます。リリース後に小さな不具合が見つかれば、また同じ工程のやり直しです。

ビルドと配信は機械に任せて、人間は中身に集中するべきだ——2014年から個人開発を続けてきて、これほど痛感したことはありません。その答えとして導入したのが Expo Application Services(EAS)でした。クラウド上で iOS / Android のビルドを行い、OTA(Over-The-Air)配信や CI/CD 連携までを一つのサービスで担ってくれます。手元に Mac がなくても iOS アプリをビルドできる点も、環境構築でつまずきがちな個人開発者には大きな助けになります。

はじめに一つ整理しておきます。2026年2月以降、Rork は Expo(React Native)ベースで iOS / Android 両対応アプリを生成する製品、Rork Max はネイティブ Swift アプリを生成する別製品という棲み分けになりました。Rork Max はクラウド Mac でコンパイルする独自の仕組みを持つため EAS を使いません。本記事で扱う EAS の対象は、Rork が出力する Expo(React Native)プロジェクトです。公式の製品ページだけでは混同しやすい部分なので、最初に押さえておいていただければと思います。

ここからは、私が6本のアプリ運用で実際に組んだ構成をベースに、セットアップから本番運用までを順に追っていきます。


EAS セットアップ — CLI の導入から eas.json まで

ステップ 1:EAS CLI のインストール

npm install -g eas-cli

バージョン確認:

eas --version

ステップ 2:Expo アカウントへのログイン

eas login

プロンプトに従ってブラウザで Expo アカウントにログインします。既存アカウントがない場合は、expo.dev から無料会員登録してください。

ℹ️
**ヒント**: Rork プロジェクトが複数ある場合、各プロジェクトで同じアカウントを使用するか、あるいは環境変数 `EXPO_TOKEN` に API トークンを設定して、CI/CD 環境での自動認証を可能にします。

ステップ 3:EAS ビルド設定の初期化

eas build:configure

このコマンドを実行すると、プロジェクトルートに eas.json ファイルが作成されます。以下は典型的な設定例です。

eas.json の詳細設定例

{
  "cli": {
    "version": ">= 5.0.0"
  },
  "build": {
    "development": {
      "distribution": "internal",
      "ios": {
        "buildType": "development"
      },
      "android": {
        "buildType": "development"
      }
    },
    "preview": {
      "distribution": "internal",
      "ios": {
        "buildType": "ad-hoc",
        "provisioning": {
          "teamId": "YOUR_APPLE_TEAM_ID"
        }
      },
      "android": {
        "buildType": "apk"
      }
    },
    "production": {
      "distribution": "store",
      "ios": {
        "buildType": "app-store",
        "provisioning": {
          "teamId": "YOUR_APPLE_TEAM_ID"
        }
      },
      "android": {
        "buildType": "aab"
      }
    }
  },
  "submit": {
    "production": {
      "ios": {
        "appleId": "your-email@example.com",
        "ascAppId": "1234567890",
        "appleTeamId": "YOUR_APPLE_TEAM_ID"
      },
      "android": {
        "serviceAccount": "path/to/service-account.json",
        "track": "production"
      }
    }
  }
}

各プロファイルの説明:

  • development: ローカル開発用。内部配布のみ
  • preview: QA チーム向けテストビルド。ストア申請なしで TestFlight(iOS)または Google Play Internal Testing(Android)経由で配布可能
  • production: App Store / Google Play へ本番リリースするビルド。AAB(Android App Bundle)と App Store 用 iOS ビルドを生成

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦6本のアプリを並行運用する個人開発の実例に基づいた、EAS Build / EAS Update / GitHub Actions の具体的な設定ファイルと手順
✦無料プランの月30ビルド枠とキュー待ち時間を踏まえた、有料プランへ移行する損益分岐の考え方
✦JavaScript のみの不具合を OTA 配信で当日修正した実例と、安全なロールバック設計
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ 開発ツール2026-09-04
EAS の secret は「アプリに入れない」設定ではありません — 接頭辞と可視性を別々に決める
EXPO_PUBLIC_ の接頭辞は成果物に入るかを決め、EAS の可視性は誰が読めるかを決めます。二つを重ねたときに OTA 更新でだけ値が消える筋道と、出荷前に自分の手で確かめる手順をまとめました。
⬡ 開発ツール2026-04-21
Rork × Fastlane × EAS リリース自動化 — スクリーンショット生成・メタデータ同期・TestFlight/Play Console 配信をワンコマンド化する実装パターン
Rork で作ったアプリを Fastlane と EAS で自動リリースする実装ガイド。スクリーンショット生成・メタデータ同期・TestFlight/Play Console 配信を1コマンドで完結させる実運用パターンをお伝えします。
⬡ 開発ツール2026-10-15
EXPO_PUBLIC_ の値が、開発では読めて本番だけ undefined になる書き方を、変換結果で見分けます
API の URL が開発中は読めるのに、ビルドした途端に undefined になる。原因は process.env の書き方でした。babel-preset-expo の変換結果を開発・本番で並べ、置き換わる書き方と残ってしまう書き方を表にしました。