◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Expo SDK 58 が 10/15 に正式リリースされました(Beta は 09/15 から)。上げる前に依存の対応状況を確認しましょう●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 — Expo SDK 58 が 10/15 に正式リリースされました(Beta は 09/15 から)。上げる前に依存の対応状況を確認しましょう●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-10-18初級

Apple と Google のログインを頼む前に、「自分で押すもの」を探して時間を使いました

Rork に「Google と Apple でログインできるようにして」と頼むとき、Apple Developer や Google Cloud で自分がやる作業はあるのか。公式ドキュメントで確かめた分担と、頼む前に見ておく二重導入のチェックをまとめます。

Rork AuthSign in with Apple3Google サインインSupabase38非エンジニア

ログイン機能を足そうとして、真っ先に Apple Developer の管理画面と Google Cloud のコンソールを開きかけたことがあります。Sign in with Apple には Services ID が要る、Google には OAuth クライアントが要る——個人開発で自分の手で組んだときの記憶が、先に体を動かしたのです。画面を二つ並べる前に、そもそも Rork に頼むだけで足りるのかどうかが気になり、手が止まりました。

最初にお伝えしたいのは、Rork 公式ドキュメントの記述では、Google と Apple のログインに関して自分で用意する作業は書かれていない、ということです。ただし「何もしなくてよい」とは少し違います。自分で決めること、審査の前に見ておくことは残っています。

なお、この記事は公式ドキュメント(Rork Auth の解説ページ)を読んだ内容が土台です。私自身は、この方式で本番のアプリを出したことはまだありません。手元で動かして確かめたのは、後半に載せる二重導入のチェックスクリプトだけです(模擬のプロジェクトで実行しました)。

Rork が引き受けてくれる部分

公式ドキュメントによると、Rork Auth は「設定なし・バックエンドなし」で Google と Apple のログインを足す仕組みです。チャットで「Google と Apple でログインできるようにして」と頼むと、エージェントが次のことを行います。

  • キーの作成と、ログイン画面の追加
  • セッションの保持(Swift なら Keychain、Expo なら SecureStore、Web なら localStorage)
  • 環境変数の追加(EXPO_PUBLIC_RORK_APP_KEY、EXPO_PUBLIC_RORK_AUTH_URL、EXPO_PUBLIC_PROJECT_ID、RORK_AUTH_URL、RORK_AUTH_SECRET_KEY の五つ)

そして自分の側の作業として、ドキュメントには「Google Cloud で Google クライアントを作る」「Apple Developer で Sign in with Apple を設定する」「バックエンドを動かす」のいずれも不要と書かれています。管理画面へ向かいかけたのは、別の方式の記憶に引きずられていたのだと思います。

自分で決めることは、残っています

作業は要らなくても、判断は要ります。ドキュメントを読んで、残ると感じたのは次の四点です。

場面自分の側にあること
方式を選ぶときRork Auth と Supabase Auth のどちらか一つを選ぶ(両方は不可)
試すときシミュレーターでは外部ブラウザが開く。実機ではアプリ内のまま
審査の前Apple の規則に沿った画面になっているか見る
公開するときApple Developer Program(年 $99)が必要。構築と試験には不要

方式は一つだけ選びます

ドキュメントには「1 つのプロジェクトは、どちらか一方だけを使う。両方は使わない」と書かれています。両方を入れると、ユーザーが二つの表に分かれて入ります。あとで切り替えると、既存のユーザーは登録し直しになります。

Rork Auth が対応するのは Google と Apple の二つだけで、サインイン中に追加の質問を挟むことや、アカウントの移行はできません。メールとパスワード、マジックリンク、電話番号コードで入れたい場合は Supabase Auth の側です。後者は、確認メールが汎用の送信元から出て数も制限されるため、実際の利用者が増える前に自分の送信元を設定しておく必要があります。

審査で見られる三点

私が個人開発で審査前に見直す項目と重なりますが、ドキュメントが挙げているのは、Apple でログインした後に名前とメールをもう一度聞かないこと、@privaterelay.appleid.com のような隠しメールを受け入れること、Apple のボタンを Google のボタンと同じ目立ち方にすることです。生成された画面でこの三つが守られているかは、公開の前に自分の目で見ておくのが安全です。

試すときの見え方

シミュレーターでは、Google や Apple のウィンドウが電話の画面の中ではなく、自分のブラウザで開きます。実機ではアプリの中に留まります。また、セッションはアプリを入れ直しても残るので、テスト中はアプリ内のサインアウトボタンを使います。

頼む前に、二重導入していないか確かめます

既にメールとパスワードのログインを Supabase で作ってあるプロジェクトに、Google と Apple のログインを重ねて頼むと、二つの方式が同居します。画面にログイン後の空白が出る原因も、このずれであることが多いと、公式ドキュメントは触れています(データ側の規則が user_id() と auth.uid() のどちらを前提にしているか)。

次のスクリプトは、プロジェクトのフォルダを渡すと、Rork Auth の環境変数と Supabase Auth の呼び出しがそれぞれどのファイルにあるかを一覧にします。

import pathlib, re, sys
 
root = pathlib.Path(sys.argv[1])
rork_pat = re.compile(r"RORK_AUTH_URL|RORK_AUTH_SECRET_KEY|EXPO_PUBLIC_RORK_APP_KEY")
supa_pat = re.compile(r"supabase\.auth\.(signUp|signInWithPassword|signInWithOtp|signInWithOAuth)|auth\.uid\(\)")
hits = {"rork": [], "supabase": []}
 
for p in root.rglob("*"):
    if p.suffix not in {".ts", ".tsx", ".js", ".sql", ".env", ".swift"} or "node_modules" in p.parts:
        continue
    text = p.read_text(errors="ignore")
    if rork_pat.search(text):
        hits["rork"].append(str(p.relative_to(root)))
    if supa_pat.search(text):
        hits["supabase"].append(str(p.relative_to(root)))
 
print("Rork Auth の痕跡 :", hits["rork"] or "なし")
print("Supabase Auth の痕跡:", hits["supabase"] or "なし")
if hits["rork"] and hits["supabase"]:
    print("⚠ 両方あります。ユーザー表が二つに分かれていないか確かめてください")

模擬のプロジェクト(Rork Auth の環境変数を読むファイルと、signInWithPassword を呼ぶファイルを一つずつ置いたもの)で実行すると、最後の一行に警告が出ました。実際のプロジェクトで使うときは、エクスポートしたフォルダを渡す形になります。私なら、既存のプロジェクトに足す依頼を送る前に、必ずこの一回を挟みます。結果はあくまで目安で、警告が出たら「どちらを残すか」を自分で決める入口にしてください。

頼み方の叩き台

方式を選んだ後の依頼は、短くて構いません。

Rork Auth で Google と Apple のログインを追加してください。
メールとパスワードのログインは使いません。
ログイン後に、プロフィール画面とサインアウトのボタンを作ってください。

二行目を入れておくと、エージェントが別の方式を足す余地が減ります。

頼む前に、方式を一つだけ口に出しておく。 この線引きを先に置いてから、管理画面を開く癖を直しているところです。

Supabase を自分で組む方式の詳しい実装は、Rork アプリに Sign in with Apple を組み込む手順に書いています。サーバー側の検証まで進めたくなったときは、サーバー検証とアカウント削除まで扱うガイドが次の一冊になります。

次にログインを足すときは、依頼を送る前にフォルダへ上のスクリプトを一度流して、二つの方式の痕跡が混ざっていないかを見てみていただければと思います。

シェア

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

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

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

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

関連記事

⬡ 開発ツール2026-05-03
Rork アプリの Sign in with Apple を、サーバー検証とアカウント削除まで本気で実装するガイド
Sign in with Apple をクライアントだけで済ませたアプリは、審査より先にサーバー側で綻びます。サーバーが発行する nonce、ID トークンの検証、authorizationCode の即時交換、revoke を伴うアカウント削除、Apple からのサーバー間通知の受け取りまで、Cloudflare Workers の動くコードで順に組みます。
⬡ 開発ツール2026-10-15
EXPO_PUBLIC_ の値が、開発では読めて本番だけ undefined になる書き方を、変換結果で見分けます
API の URL が開発中は読めるのに、ビルドした途端に undefined になる。原因は process.env の書き方でした。babel-preset-expo の変換結果を開発・本番で並べ、置き換わる書き方と残ってしまう書き方を表にしました。
⬡ 開発ツール2026-10-14
起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、読み込みより先に過ぎていたためです
Android 版の起動広告が、アプリを完全に終了してから開く回だけ一度も出ていませんでした。「前面に戻った」合図を読み込みの完了と切り離し、順番ごとにテストできる形へ組み直した記録です。