Rork MaxでApp Store審査を一発通過する完全ノウハウ集
Rork Maxでアプリを構築したら、いよいよApp Storeへの提出です。しかし、ここが多くの開発者が引っかかる難関。AI生成コードならではの審査リジェクト理由があり、それを知らずに提出すると何度も修正ループに入ります。
ここでは実際にRork Maxで構築されたアプリがApp Store審査に通過した経験から、審査を一発通過させるための実践的なノウハウを全て公開します。リジェクト理由TOP10、審査員への効果的なアピール方法、提出前チェックリストまで、すぐに使える情報をまとめましました。
App Store審査の基本知識
App Store審査を突破するには、まずプロセスを理解する点が肝心です。
審査フロー
- アプリ提出 — TestFlightでベータ版公開後、本番版をApp Store Connectで提出
- 自動スキャン — 数時間〜1日で技術的チェック(クラッシュ検出・コードスキャン)
- 人手による審査 — 審査官がアプリを実際に動作させ、ガイドライン準拠を確認
- 承認 or リジェクト — 最短1〜2日、平均3〜5日で結果通知
審査所要日数
- 初回提出 — 3〜5営業日(平均4日)
- リジェクト後の修正版 — 1〜3営業日
- 営業時間帯の提出 — 少し短縮される傾向
App Store Review Guidelines の3つの最重要ポイント
審査官は以下の3点を最初にチェックします。
- プライバシー — データ収集・送信の透明性、Info.plist の説明
- セキュリティ — 暗号化、認証、ハードコーディングされた秘密鍵
- ユーザー体験 — クラッシュの有無、UI/UXが想定通り動作しているか
Rork MaxでApp Store提出の準備
必要なもの一覧
- Apple Developer Program 登録 — 年間¥13,900(日本)
- App ID 作成 — Bundle ID(e.g.,
com.example.myapp)と一意のApp ID
- 署名証明書 — iOS Distribution Certificate(Xcode で自動生成可)
- プロビジョニングプロファイル — Distribution Profile
- App Icons — 1024×1024 PNG(App Store Connect でアップロード)
- スクリーンショット — 5.5インチiPhone 6sと 12.9インチiPad Pro の両方必須
Rork Max固有の準備
Rork Max で構築したアプリを App Store Connect に提出する際、以下を確認してください。
- ビルド番号 — TestFlight版と本番版でビルド番号を必ず区別する
- バージョン番号 — Semantic Versioning(e.g., 1.0.0)に従う
- Bundle ID — Rork のプロジェクト設定で正しく設定されているか確認
頻出リジェクト理由TOP10と対処法
実際のRork Max アプリがApp Store審査で引っかかった理由を、TOP10 まとめましました。
リジェクト①: プライバシー関連(Info.plist説明不足)
症状: 「このアプリはカメラ/位置情報/カレンダー等を使用していますが、Info.plist に説明がない」
原因: Rork Max で自動生成されたアプリの Info.plist に、使用権限の説明テキスト(NSCameraUsageDescription 等)が入っていません。
修正方法:
<key>NSCameraUsageDescription</key>
<string>プロフィール写真をアップロードするため、カメラへのアクセスが必要です</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>ギャラリーから写真を選択するため、フォトライブラリへのアクセスが必要です</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>近くのお店を検索するため、位置情報が必要です</string>
Rork Max 修正プロンプト:
Info.plist に以下の権限説明を追加してください:
- NSCameraUsageDescription: "プロフィール写真をアップロードするため、カメラへのアクセスが必要です"
- NSPhotoLibraryUsageDescription: "ギャラリーから写真を選択するため、フォトライブラリへのアクセスが必要です"
- NSLocationWhenInUseUsageDescription: "近くのお店を検索するため、位置情報が必要です"
リジェクト②: ハードコーディングされたテストデータ
症状: 「アプリに 'test@example.com' やダミーのAPIキーが含まれている」
原因: Rork Max が生成したコード内に、開発段階のダミーデータが残っています。
修正方法:
- すべてのテストアカウント(e.g.,
admin/password)を削除
- ハードコーディングされたAPIキー(e.g.,
sk_test_...)を環境変数に移行
- ログ出力から個人情報を削除
Rork Max 修正プロンプト:
以下のハードコーディングされたテストデータを削除してください:
- test@example.com や管理者アカウントのダミーログイン
- APIキーや秘密鍵(環境変数に移行)
- ログ出力から個人情報やテストデータを完全削除
リジェクト③: クラッシュ・例外処理不足
症状: 「審査過程でアプリがクラッシュした」
原因: エラーハンドリングが不十分。ネットワーク通信が遮断された場合等に例外を処理していません。
修正方法:
// クラッシュが起きやすい例
const fetchData = async () => {
const response = await fetch('https://api.example.com/data');
const data = await response.json(); // ← ネットワーク遮断時にクラッシュ
};
// 修正版
const fetchData = async () => {
try {
const response = await fetch('https://api.example.com/data');
if (!response.ok) throw new Error('Network response was not ok');
const data = await response.json();
setData(data);
} catch (error) {
console.error('Fetch error:', error);
setError('データの読み込みに失敗しました。インターネット接続を確認してください。');
}
};
テスト手順:
- 飛行機モードを有効にした状態でアプリを操作
- VPN接続を切断した状態でネットワーク機能をテスト
- 低速通信(2G/3G)でのクラッシュ有無を確認
リジェクト④: UI/UXガイドライン違反
症状: 「SafeArea(ノッチやホームインジケーター周辺)にコンテンツが重なっている」「フォント最小サイズが小さすぎる」
原因: Rork Max が生成したUIが、最新のiPhone(Dynamic Island等)に対応していません。
修正方法:
// SafeArea 対応(React Native Expo)
import { useSafeAreaInsets } from 'react-native-safe-area-context';
export default function App() {
const insets = useSafeAreaInsets();
return (
<View style={{ paddingTop: insets.top, paddingBottom: insets.bottom }}>
{/* アプリコンテンツ */}
</View>
);
}
フォントサイズ:
- 本文: 最小16pt
- キャプション: 最小12pt
- Apple ガイドラインより
リジェクト⑤: In-App Purchase 未実装/不正
症状: 「プレミアム機能が無料で使える」「購入後、購入復元ができない」
原因: Rork Max のサブスクリプション実装が不完全、またはRevenueCAT等の課金ライブラリを正しく統合していません。
修正方法: [後述の記事参照] RevenueCAT統合ガイドで詳しく解説します。
リジェクト⑥: ログイン必須だがデモアカウントが機能しない
症状: 「アプリがログイン画面で止まり、審査官が動作確認できない」
原因: 審査用デモアカウントが用意されていない、または提供されたアカウント情報が誤っています。
修正方法:
- TestFlight ビルド に限定で、デモアカウント自動ログイン機能を追加
- 審査ノートに記載 — 「テストアカウント: demo@example.com / password: Demo123!」
- 本番ビルド では デモログイン機能を完全に削除
// TestFlight でのみ有効
const isTestFlightBuild = // ← ビルド判定ロジック
process.env.EXPO_PUBLIC_ENV === 'testflight';
if (isTestFlightBuild && !isLoggedIn) {
useEffect(() => {
autoLoginWithTestAccount('demo@example.com', 'Demo123!');
}, []);
}
リジェクト⑦: アプリの説明と機能の不一致
症状: 「App Store 説明には『AI チャットボット機能』と書かれているが、アプリに見当たらない」
原因: Rork Max で機能を実装し忘れたか、実装したが UI に露出していません。
修正方法:
- App Store Connect に記載した「AppPreview」(アプリ説明・スクリーンショット)と実装を照合
- 説明に記載した全機能が、実際にアプリに実装されているか確認
- 見つからない機能は、説明から削除
リジェクト⑧: ネットワーク権限・エンタイトルメントの問題
症状: 「アプリがインターネットアクセスを宣言していない」「バックグラウンド処理の権限がない」
原因: Info.plist やエンタイトルメント(.entitlements ファイル)の設定が不完全。
修正方法: 以下をApp Store Connectの「App Information」→「Capabilities」で有効化
- Network — インターネット接続を使用する場合は必須
- Background Modes — バックグラウンド処理(プッシュ通知・位置情報等)が必要な場合のみ
- Push Notifications — プッシュ通知を送信する場合は必須
リジェクト⑨: トラッキング・ATT対応不備
症状: 「ATTプロンプト(App Tracking Transparency)が表示されていない」または「ユーザー同意なく広告ネットワークにデータを送信している」
原因: Rork Max で広告(Google AdMob等)を実装した場合、ATT対応が不足しています。
修正方法:
import * as TrackingTransparency from 'expo-tracking-transparency';
useEffect(() => {
const requestTrackingPermission = async () => {
const { granted } = await TrackingTransparency.requestTrackingPermissionsAsync();
console.log('ATT Permission:', granted);
};
requestTrackingPermission();
}, []);
ポイント:
- App Tracking Transparency API を使用
- ユーザーに明確なプロンプトを表示(Apple の標準ダイアログを使用)
- Privacy Manifest ファイル(
PrivacyInfo.xcprivacy)に、外部ライブラリのデータ収集目的を記載
リジェクト⑩: 審査用コメントの不備
症状: 「審査官が機能の使い方が分からない」「機能が隠れている」
原因: 「Reviewer Information」(審査用コメント)に具体的な説明がありません。
修正方法: 後述の「審査ノート(Reviewer Information)の書き方」を参照。
審査ノート(Reviewer Information)の書き方
App Store Connect の「ビルド」→「Reviewer Information」欄は、審査官への直接的なアピール機会です。ここをちゃんと書くと、リジェクト率が大幅に下がります。
テンプレート(推奨)
このアプリは [アプリの1行説明] です。
■ 機能の使い方
1. 起動後、[機能A] タブを開く
2. [ボタン名] をタップすると [動作説明] が実行されます
3. [機能B] は、右上のメニューアイコン > [機能B] から利用可能です
■ テスト用アカウント
メールアドレス: demo@example.com
パスワード: Demo123!
※ このアカウントは審査用です。本リリース時に削除されます。
■ 注意事項
- このアプリはインターネット接続が必須です
- 初回起動時にカメラ/位置情報の権限リクエストが表示されます
- バージョン 1.0 から [新機能X] を追加しました
■ 参考資料
- プライバシーポリシー: [URL]
- ユーザーガイド: [URL]
書き方のコツ
- 簡潔に — 500文字以内でまとめる(長すぎると読まれない)
- ステップバイステップ — 最初のタップから完全な機能体験まで、具体的に説明
- テストアカウント — メールアドレス・パスワード・有効期限を明記
- ハードコーディングされたテストデータについて先制説明 — 「テスト用のダミーデータが表示される場合がありますが、これはサンドボックス環境限定です」等
- バージョン間の変更点 — 「バージョン 1.1 から [新機能] を追加」と記載することで、審査官の期待値調整になる
スクリーンショットとメタデータの最適化
スクリーンショット最適化
App Store Connect の「スクリーンショット」欄は、審査官が一番最初に目にする場所です。
- 5.5インチ以上 — 必須(iPhone 15 Pro Max 等)
- iPadスクリーンショット — 推奨(iPadOS対応アプリの場合)
- テキストオーバーレイ — メリット・USPを1枚につき1つだけ大きく表記
- テスト用アカウント情報を見えないように — スクリーンショット内にダミーメールアドレスが見えないよう、事前にログアウト状態で撮影
メタデータの正確性
- アプリ名 — 販売店舗によって異ならない(一貫性重視)
- サブタイトル — 説明的で、単なるキーワード列挙ではない
- キーワード — App Store 検索最適化(ASO)を意識したキーワード選定
- 紹介文(説明) — 最初の2行が AppStore プレビューに表示される(重要!)
App Review Board へのアピール申請
リジェクトに納得できない場合、Apple に異議申し立てができます。
異議申し立て手順
- App Store Connect の「ビルド」を開く
- 「Resolution Center」(解決センター)タブを開く
- 「Appeal」(異議申し立て)をクリック
- 具体的な根拠 を記載して送信
書き方のコツ
- 「不当だ」と感情的に訴えない — Appleは感情論を受け付けません
- ガイドライン番号を引用 — 「App Store Review Guidelines 1.2」のようにガイドラインの該当項目を明記
- スクリーンショット・ビデオを添付 — 「このスクリーンショットの通り、アプリは正常に動作しています」という客観的証拠を提示
例)
お疲れ様です。リジェクト理由「Guideline 1.2 - Safety」について異議があります。
当アプリはプライバシーポリシー([URL])に基づいており、
ユーザーの位置情報は明確な同意のみで収集されています。
添付のスクリーンショットの通り、
起動時にATTプロンプトが表示され、
ユーザーは明確な選択肢から同意・拒否を選択できます。
何か不足している情報があればご連絡ください。
Rork固有の注意点まとめ
コード生成の不完全性への対応
Rork Max で自動生成されたコードは、ほぼ本番環境で使えますが、以下の点は 手動確認が必須 です。
- API レスポンスハンドリング — エラーレスポンス(4xx, 5xx)の処理が不足していることがある
- ローカライゼーション — 日本語のみの対応で、英語テキストがハードコーディングされていることがある
- Dark Mode 対応 — ColorPalette が light/dark で自動分岐されているか確認
- アクセシビリティ — VoiceOver対応(
accessibilityLabel の設定)が不足していることがある
ビルド設定の落とし穴
- Development vs Distribution — TestFlight ビルドと本番ビルドで異なるプロビジョニングプロファイルを使用していることを確認
- Bitcode — 一部の古いSDK はBitcode が有効になっていることがあります。Rork Max ではデフォルト無効化されていますが、カスタムネイティブコードを追加した場合は確認
- Symbol Upload — Crash Reporter 用のシンボルを Xcode Cloud / EAS Build で自動アップロードするか確認
提出前チェックリスト(50項目)
セキュリティ・プライバシー(10項目)
- [ ] Info.plist に NSCameraUsageDescription, NSPhotoLibraryUsageDescription 等の説明文がある
- [ ] ハードコーディングされたAPIキー・秘密鍵がない
- [ ] ハードコーディングされたテストアカウント(test@example.com 等)がない
- [ ] HTTPリクエストが全てHTTPSに統一されている
- [ ] PrivacyInfo.xcprivacy(Privacy Manifest)が設定されている
- [ ] ATT(App Tracking Transparency)対応が完了している
- [ ] 位置情報は WhenInUse(使用中のみ)に設定されている
- [ ] Touch ID/Face ID のフォールバック(パスコード等)が実装されている
- [ ] ユーザーデータはローカルでの暗号化またはサーバー側で保護されている
- [ ] ログ出力から個人情報が完全に削除されている
ユーザー体験・UI(15項目)
- [ ] SafeArea(ノッチ・ホームインジケーター)にコンテンツが重なっていない
- [ ] すべてのテキストが最小16pt 以上である
- [ ] 縦向き・横向き両方で正しくレイアウトされている
- [ ] すべてのボタンが最小 44×44pt のタッチ領域を持っている
- [ ] Dark Mode で正しく表示される
- [ ] アプリ起動時にクラッシュしない
- [ ] ネットワーク遮断状態でもクラッシュしない
- [ ] 長時間使用(5分以上)でメモリリークが起きていない
- [ ] ログイン画面で止まることなく、テストアカウントで正常にログインできる
- [ ] すべてのプレミアム機能が正しくペイウォール、またはIAP(In-App Purchase)で保護されている
- [ ] Back ボタン(iOS の戻る機能)でナビゲーション履歴が正しく機能する
- [ ] スクリーンに日本語以外の言語(ダミーテキスト等)が表示されていない
- [ ] VoiceOver(スクリーンリーダー)で基本操作ができる
- [ ] キーボード入力フォーカスが正しく表示される(キーボード可視性)
- [ ] アプリのロード画面から最初の操作可能画面まで3秒以内(推奨)
機能実装・動作確認(10項目)
- [ ] App Store 説明に記載されたすべての機能が実装されている
- [ ] 購入・サブスクリプション後に購入復元(Restore Purchases)ができる
- [ ] バージョン情報がアプリ内で確認できる
- [ ] プッシュ通知の権限リクエストが適切に表示される
- [ ] デバイス設定でオフにされたプッシュ通知をアプリが適切に処理する
- [ ] カメラ・位置情報等のシステム権限をユーザーが拒否した場合、フォールバック動作がある
- [ ] バックグラウンド処理が Info.plist で明確に宣言されている
- [ ] 長時間のバックグラウンド実行が最小限に制限されている
- [ ] すべての外部リンク(プライバシーポリシー等)が有効である
- [ ] プライバシーポリシーがアプリ内またはWebサイトで簡単にアクセス可能である
メタデータ・ドキュメント(10項目)
- [ ] アプリ名が App Store 説明と一貫している
- [ ] キーワードが正確で、スパムキーワード(記号の連続等)ではない
- [ ] スクリーンショット(5枚以上)にテストアカウント情報が映り込んでいない
- [ ] スクリーンショットがアプリの実装と一致している
- [ ] Reviewer Information(審査用コメント)にテストアカウント(メール・パスワード)が記載されている
- [ ] Reviewer Information に機能の使い方(ステップバイステップ)が記載されている
- [ ] プライバシーポリシーが法的に適切である
- [ ] 連絡先・サポートページが有効である
- [ ] App Store Connect の「App Information」→「Copyright」に正しい著作権表記がある
- [ ] ビルド番号(Build Number)がリリースごとに異なっている
技術的チェック(5項目)
- [ ] Xcode のビルド警告が 0 件である
- [ ] 外部SDK(Google Maps, Firebase 等)がすべて最新版に更新されている
- [ ] 不要なImport・ライブラリがコードから削除されている
- [ ] Console.log() デバッグ出力が本番ビルドから削除されている
- [ ] Minimum iOS Deployment Target が iOS 15.0 以上である
リリース前の最終確認(0項目)
実際に TestFlight でベータテスターに配布し、以下を確認
- [ ] 複数のユーザーがアプリをダウンロード・インストール・起動できる
- [ ] TestFlight 経由のインストールから本番版リリースまで、アプリが正常に動作する
全体を振り返って
Rork Max で構築したアプリを App Store で審査通過させるには、AI生成コード固有の落とし穴を知ることが重要です。特にプライバシー・セキュリティ・エラーハンドリングの3点は、自動化ツールに任せるだけでなく、人手で確認が必須です。
この記事で紹介した50項目チェックリストを活用し、初回提出から一発承認を目指してください。リジェクトされた場合も、TOP10理由を参考に、その背景にある原因をしっかり理解して修正することで、次の提出で確実に通します。
Rork Max は強力なツールです。ただし、App Store の審査官は「手作り」の品質基準を求めています。自動生成の利便性と、手作りの品質を両立させることが、成功するアプリ開発の鍵となります。
参考書籍: