RORK LABEN
TOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しましたTOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しました
記事一覧/開発ツール
開発ツール/2026-04-27中級

EXPO_PUBLIC_RORK_AUTH_URL を空欄のまま本番に出さないために — Rork 生成アプリの認証URL設定

Rorkで生成したアプリのコードに現れる EXPO_PUBLIC_RORK_AUTH_URL に何を入れるべきか、開発・EAS Build・本番でどう切り替えるかを実例付きで整理しました。空欄のまま審査に出す事故を防ぎます。

EXPO_PUBLIC環境変数4認証14Rork515Expo149EAS Build14

Rork で「ログイン機能付きのアプリを作って」と頼んだ直後、生成されたコードに process.env.EXPO_PUBLIC_RORK_AUTH_URL のような見慣れない環境変数が含まれていて、ここに何を入れたらよいのか手が止まる。これは私自身も最初の数本で経験した、Rork 生成アプリならではのつまずきポイントです。

問題は値が分からないことそのものではありません。空欄のままビルドが通ってしまうことが本当の落とし穴です。Expo の EXPO_PUBLIC_* 系の環境変数は値が未定義でも undefined としてアプリに埋め込まれるため、Rork のプレビュー上では普通に動いて見えてしまい、その状態のまま EAS Build → TestFlight に進めてから「ログインだけ動かない」と気付きます。

ここではRork が生成したコードに現れる認証URL系の EXPO_PUBLIC_ 変数を、開発・プレビュー・本番のどこに何を設定すべきかを順を追って整理します。私が30本ほどのアプリを Rork で公開していく中で固まった、再現性のある設定手順です。

なぜ Rork は認証URLを環境変数として生成するのか

Rork の AI は認証フローを書くとき、API のエンドポイントをコードに直接埋め込まず、EXPO_PUBLIC_* で外から差し替えられる形にして出してきます。理由は単純で、認証バックエンドはユーザーごとに違うからです。Supabase を使う人、Firebase を使う人、自前の Hono サーバーを Cloudflare Workers に乗せている人、それぞれで URL が変わります。

Rork は「あなたが後で差し替えてください」という意図で EXPO_PUBLIC_RORK_AUTH_URL のようなプレースホルダーを置いているわけです。ここを差し替え忘れたまま進むと、生成されたクライアントコードは存在しないドメインに POST し続け、ネットワークエラーが返るだけの状態になります。

ちなみに EXPO_PUBLIC_ プレフィックス自体は Expo の標準仕様で、これが付いた変数はクライアントバンドルに埋め込まれて公開されます。Auth エンドポイントの URL は公開してよい情報なのでこれで問題ありませんが、API の シークレットキーには絶対に EXPO_PUBLIC_ を付けないことだけ覚えておいてください。

値として何を入れるべきか — 3つの典型パターン

私が実装してきた範囲では、Rork 生成アプリの認証URLは大きく3つのパターンに分かれます。プロジェクトの構成に合わせてどれかを選びます。

パターンA: Supabase Auth を使う場合

最も手間が少なく、個人開発者には私もこのアプローチを薦めています。Supabase プロジェクトの URL をそのまま指定します。

# .env
EXPO_PUBLIC_RORK_AUTH_URL=https://your-project-id.supabase.co
EXPO_PUBLIC_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY

ただし、Rork が生成したコードが /auth/v1/token のようなパスを内部で組み立てている場合は、ベースURL(プロジェクトURL)だけを入れる形になります。生成コードを開いて、fetch(\${process.env.EXPO_PUBLIC_RORK_AUTH_URL}/auth/v1/token...`)` のように書かれていればベースURLでOKです。

パターンB: Firebase Auth を使う場合

Firebase の場合は通常 SDK を直接使うため、Auth URL を環境変数で渡すケースは少なめです。Rork が生成した認証コードが Firebase SDK ベースなら、EXPO_PUBLIC_RORK_AUTH_URL ではなく EXPO_PUBLIC_FIREBASE_* 系の値(API Key・projectId 等)を埋める形に置き換えるのが正解です。生成コードを一度精査することをお勧めします。

パターンC: 自前のバックエンドを使う場合

Hono / Express / tRPC などで認証エンドポイントを自分で運用している場合は、デプロイ済みのドメインを入れます。

# .env (開発)
EXPO_PUBLIC_RORK_AUTH_URL=http://localhost:8787
 
# .env.production (本番)
EXPO_PUBLIC_RORK_AUTH_URL=https://api.your-app.com

実機テストで localhost が機能しないとき(同じLAN内なのに繋がらない)の対処は、開発機のLAN内IPに置き換えるか、ngrok で一時的に外部公開するのが定番です。

開発環境(.env)の設定で詰まりやすい点

.env ファイルを作ったのに値が反映されない、というのは Rork 生成アプリでもっとも頻繁に来る相談です。原因はほぼ以下のどれかです。

第一に、Metro バンドラの再起動が必要です。.env を編集しても、起動中の npx expo start には反映されません。Ctrl+C で止めて npx expo start -c でキャッシュごと再起動してください。-c フラグを忘れると、変数の追加だけは反映されても変更が反映されないことがあります。

第二に、ファイル名は完全に .env であって、.env.txtenv ではないこと。macOS の Finder で作ると .txt が付いてしまうことがあります。ターミナルで ls -la | grep env で確認するのが確実です。

第三に、process.env.EXPO_PUBLIC_RORK_AUTH_URL の綴りミス。Rork の生成コードでは大文字スネークケースですが、自分で書き足すときに小文字や別名にしてしまうとサイレントに undefined が入ります。

環境変数まわりのトラブルは類型化できるので、別の症状で詰まったときは Rorkアプリの環境変数が読み込めない原因と解決法 も合わせて読むと診断が早くなります。

EAS Build と本番環境での設定

.env は Rork のプレビューや npx expo start のローカル開発でしか効きません。EAS Build で本番ビルドを作るときは、別途 EAS Secrets に登録する必要があります。

# 本番用シークレットを登録
eas secret:create --scope project \
  --name EXPO_PUBLIC_RORK_AUTH_URL \
  --value "https://api.your-app.com" \
  --type string
 
# 確認
eas secret:list

eas.jsonproduction プロファイルでこのシークレットを参照する設定になっていれば、ビルド時に自動で埋め込まれます。注意点として、EXPO_PUBLIC_* で始まる変数はクライアントバンドルに焼き込まれるため、ビルドごとに値を変えても、配布済みアプリの値は更新されません。本番URLを後から変えるなら、新しいビルドを出す必要があります。

私はステージング用と本番用で EXPO_PUBLIC_RORK_AUTH_URL を分けるために、eas.json のプロファイルごとに env を切り替える運用にしています。CI まわりは Rork EAS Build CI/CD パイプライン構築ガイド で詳しく扱っているので、自動化したい方は参考にしてください。

URL を間違えたときに起きる典型的な症状

設定が間違っているときの症状をまとめておきます。コンソールに出るエラーから逆算すると診断が早いです。

Network request failed がログイン時に出る場合、URL が空欄か到達不能なドメインです。console.log(process.env.EXPO_PUBLIC_RORK_AUTH_URL) を一時的に挿入して値を確認してください。

CORS error がブラウザ実機で出る場合は、URL自体は届いているがバックエンド側の CORS 設定で拒否されています。Supabase なら大半は許可されているので、自前バックエンドのケースが大半です。

401 Unauthorized が返る場合は URL は正しく、認証情報側の問題です。EXPO_PUBLIC_SUPABASE_ANON_KEY のような併用変数のほうが間違っていることがほとんどなので、そちらも確認してください。Supabase 認証の典型的なエラーパターンは Rork × Firebase / Supabase 認証エラー対処 にまとめています。

実機からだけ繋がらない場合は、開発機の localhost を実機が解決できていないだけのことが多いです。LAN内のIP(例: 192.168.1.10)に置き換えれば動きます。

次にやること

ここまで読んでいただいた方に、まず一つだけお願いしたいのは、今動いているアプリの .env を開いて EXPO_PUBLIC_RORK_AUTH_URL の行を声に出して読んでみることです。プレースホルダーのままになっていたり、https:// が抜けていたり、開発用URLのままだったり、目視で見つかる事故が一番多いところです。

そのうえで、もし Supabase での認証実装をこれから作るなら Rork × Supabase 認証 + リアルタイム実装ガイド が次に読む記事として相性が良いです。生成されたコードのテンプレと実運用の配線をつなぐ手順を順に追っています。

Rork が出してくる環境変数は単なる「埋めろ」のサインで、放っておくとプレビューでは無事動いてしまうのが厄介です。最初に5分、.env と EAS Secrets を見直す習慣をつけるだけで、TestFlight でログインボタンが効かないという冷や汗を一度減らせます。

シェア

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

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

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

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

開発ツール2026-07-10
クライアントに置いた鍵は公開情報 — Rork 生成アプリの秘密境界とローテーション手順
生成された Expo アプリの .ipa を展開すると、環境変数がそのまま文字列として現れます。鍵を3層に分類し、置けないものをプロキシへ逃がし、漏れた前提のローテーション手順書を用意するまでの設計をまとめます。
開発ツール2026-06-15
Rork で作った Expo アプリのログインを切らさない — トークン更新の競合を単一化で防ぐ
Rork が生成する Expo アプリにログインを足すと、最初は動いても本番でじわじわ「勝手にログアウトされる」報告が増えます。原因の多くはトークン更新の競合です。リフレッシュを単一化し、安全に保存し、失効を正しく扱う信頼性設計を実装視点でまとめます。
開発ツール2026-05-06
Rork アプリに Expo Dev Client を導入する手順 — ネイティブモジュールが Expo Go で動かなくなったときの最初の一手
Rork で生成したアプリに react-native-mmkv や RevenueCat などのネイティブモジュールを追加すると、Expo Go では起動しなくなります。Expo Dev Client(カスタム開発ビルド)の導入手順と、つまずきやすい3つのポイントを実例付きで解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →