RORK LABEN
BUILD — Rork Max はクラウド上の実機 Mac に Xcode と iOS SDK を載せ、SwiftUI を書き、ビルドし、エラーを読んで直す反復を回します。コードを吐いて終わりではない点が生成物の質に効いていますNATIVE — 生成されるのは React Native ではなく純粋な Swift / SwiftUI です。AR や Metal、ウィジェットなど React Native からは届かない機能に手が届くことが、他ビルダーとの実質的な差になりますPLATFORMS — 対応は iPhone・iPad・Apple Watch・Apple TV・Vision Pro に加えて iMessage まで含みます。ウォッチや拡張から入る設計を試すのに向いていますCOMPANION — Rork Companion により、有料の Apple Developer アカウントなしで生成したアプリを実機の iPhone で確認できます。最初の一本を試す段階の障壁が一段下がりましたPRICING — 無料で開始でき有料プランは月額25ドルから、Rork Max は月額200ドルの Max プランです。回収できる本数と規模を先に見積もっておく価値がありますDEADLINE — Google Play は2026年8月31日以降、新規アプリと更新の双方に対象 API レベル36 以上を要求します。残り10日で、生成物の targetSdkVersion は自分で確認が必要ですBUILD — Rork Max はクラウド上の実機 Mac に Xcode と iOS SDK を載せ、SwiftUI を書き、ビルドし、エラーを読んで直す反復を回します。コードを吐いて終わりではない点が生成物の質に効いていますNATIVE — 生成されるのは React Native ではなく純粋な Swift / SwiftUI です。AR や Metal、ウィジェットなど React Native からは届かない機能に手が届くことが、他ビルダーとの実質的な差になりますPLATFORMS — 対応は iPhone・iPad・Apple Watch・Apple TV・Vision Pro に加えて iMessage まで含みます。ウォッチや拡張から入る設計を試すのに向いていますCOMPANION — Rork Companion により、有料の Apple Developer アカウントなしで生成したアプリを実機の iPhone で確認できます。最初の一本を試す段階の障壁が一段下がりましたPRICING — 無料で開始でき有料プランは月額25ドルから、Rork Max は月額200ドルの Max プランです。回収できる本数と規模を先に見積もっておく価値がありますDEADLINE — Google Play は2026年8月31日以降、新規アプリと更新の双方に対象 API レベル36 以上を要求します。残り10日で、生成物の targetSdkVersion は自分で確認が必要です
記事一覧/アプリ開発
アプリ開発/2026-06-25上級

dev・staging・本番を同じ iPhone に並べる — Rork(Expo) アプリの環境分離設計

Rork が生成した Expo アプリを dev / staging / 本番の3ビルドに分け、同じ端末に共存させる設計をまとめました。app.config.ts の動的切り替え、eas.json のプロファイル、通知・分析・課金の隔離まで具体的に解説します。

Rork539Expo175EAS6環境分離app variant

プレミアム記事

ある朝、配信前の修正を試そうとしてテスト用ビルドを自分の iPhone に入れたところ、毎日使っている本番アプリのアイコンが消えていました。bundle ID が同じだったため、テストビルドが本番インストールをそのまま上書きしてしまったのです。再ログイン、課金状態の復元、通知の許可ダイアログ。失ったのは10分ほどでしたが、「自分の常用端末でうかつにテストできない」という制約は、その後の開発速度を地味に削っていきました。

個人開発で複数のアプリを回していると、この摩擦はそのまま生産性に直結します。ここでは Rork が生成した Expo アプリを dev・staging・本番の3つに分け、同じ端末に並べて運用するための環境分離設計を、私自身が壁紙アプリ群で実際に使っている構成をもとにまとめます。

セットアップの全体像

具体的な設定に入る前に、やることは3つだけだと整理しておきます。

  1. `app.config.ts` を `APP_VARIANT` で動的化し、環境ごとに bundle ID とアプリ名を変える
  2. `eas.json` に development / preview / production の3プロファイルを用意し、各プロファイルで `APP_VARIANT` を固定する
  3. 通知・分析・課金などの外部サービス資格情報を、環境ごとに別物へ差し替える

この3点が揃うと、同じソースコードから別人格のアプリが3つ生まれ、同じ端末に共存できるようになります。

なぜ bundle ID をひとつにすると詰むのか

Rork が最初に吐き出すコードは、たいてい bundle ID(iOS の bundleIdentifier / Android の package)が1つだけです。プロトタイプの段階ではこれで十分なのですが、リリース後は次の3つで必ずつまずきます。

まず、本番アプリとテストアプリを同じ端末に共存できません。OS は bundle ID でインストールを識別するため、同じ ID のビルドは上書きされます。次に、EAS Update(OTA 配信)のチャンネルが混線します。テスト用に投げた JS バンドルが、運悪く本番ユーザーに届くことがあるのです。最後に、分析・課金・通知のデータが汚れます。あなたのデバッグ操作が本番の DAU やコンバージョンに混ざり、数字が読めなくなります。

解決の方針はシンプルです。環境を「dev(手元の開発)」「staging(配信前の検証)」「production(本番)」の3つに分け、それぞれに別の bundle ID・別のアプリ名・別のサービス資格情報を与えます。

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

この記事の続きを読む

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

この記事で得られること
APP_VARIANT で app.config.ts を動的に切り替え、bundle ID とアプリ名を環境ごとに分ける手順
eas.json を development / preview / production の3プロファイルに整理して同じ端末に共存させる構成
通知トークン・分析・RevenueCat を環境ごとに隔離し、テストが本番データを汚さない運用設計
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

アプリ開発2026-08-18
Rork のプロジェクトで targetSdkVersion 36 を通すまでに直した3か所
app.json に targetSdkVersion 36 と書いてあるのに、ビルドが読んでいた値は 35 でした。実効値を報告するスクリプトと、引き上げ・更新停止・延長申請の三択の分け方を残します。
アプリ開発2026-08-16
グラフが壊れて見えるのは、データが多いときではなく最初の数日でした
記録アプリの折れ線グラフが、データの少ない最初の数日だけ線が消える。原因はY軸の幅が0になり座標がNaNになることでした。実測した挙動と、描画前に置く小さな正規化層を紹介します。
アプリ開発2026-08-06
壁紙の上の文字が読めるかを、端末ではなく取り込み時に決める — 判定指標を4つ測り比べた記録
壁紙の上に置くステータスバーや見出しが読めるかを、端末での画像解析ではなく取り込み時のメタデータで決める設計です。240枚のコーパスで判定指標を4つ実測し、縮小画像での判定が何と一致するのかまで記録しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →