Rork アプリの App Store 審査リジェクト対策ガイド
Rorkで作ったアプリをApp Storeに申請したのに、「Guideline 4.2 — Minimum Functionality」や「2.1 Performance」といった理由でリジェクトされた経験はありませんか?
特にAI機能を活用したアプリの場合、Appleの審査基準が厳しく、一度リジェクトされると「何が問題なのか」がわかりにくいことがあります。ここではRorkで生成したアプリが審査で落ちやすい理由トップ5と、それぞれの具体的な対処法をお教えします。
Rork アプリが App Store 審査で落ちやすい理由 Top 5
理由1: Guideline 4.2「最小限の機能がない」
App Storeのガイドライン 4.2:
アプリは最小限の実用的な機能を提供する必要があります。単なるデモ、テスト、リダイレクトのみのアプリは承認されません。
Rorkアプリが該当しやすい理由:
Rorkで生成したばかりのアプリは、しばしば「プロトタイプ」の状態のままApp Store申請に出されます。
- UI だけあって、バックエンド API が未実装
- AI APIを呼び出しているが、ユーザーが実際に使える機能が1つだけ
- テストデータのみで動作し、ユーザーが独自データを入力・保存できない
対処法:
申請前に、以下の3つの実用性テストを実施してください:
- 新規ユーザーが理解できるか — 初めてアプリを開いた人が「このアプリで何ができるか」を3秒で理解できるか
- コア機能が実装されているか — 説明文に書かれた機能が全て動くか
- データ永続化ができるか — ユーザー入力がアプリ再起動後も保存されているか
例えば「AI翻訳アプリ」なら:
- ✓ テキスト入力フォーム
- ✓ 言語選択機能
- ✓ AI翻訳実行
- ✓ 翻訳結果の表示・コピー
- ✓ 翻訳履歴の保存
これらが全て動作していることを確認してから申請します。
理由2: Guideline 2.1「パフォーマンス問題」
エラーメッセージ例:
Your app crashes frequently or experiences performance issues on target devices.
Rorkアプリで多い原因:
- メモリリークで5分後にクラッシュ
- 大量のAPI呼び出しが未制御
- 画像キャッシュがされず、毎回ダウンロード
- ローカルストレージへの大量書き込みがブロッキング
対処法:
申請前に、以下の3つの動作テストを実施:
# 1. デバイス上で15分連続で操作してクラッシュしないか
# 2. ネットワーク遅い環境(3G相当)でも動くか
# 3. バッテリー消費が異常でないか確認メモリリーク対策は特に重要。Rorkで生成したコンポーネントが不要になったら、適切にクリーンアップしてください:
useEffect(() => {
const subscription = someAPI.subscribe(handleUpdate);
// クリーンアップ時にリソース解放
return () => {
subscription.unsubscribe();
};
}, []);理由3: プライバシーに関する問題
よくあるリジェクト理由:
The app collects user data but does not provide a privacy policy. (アプリがユーザーデータを収集していますが、プライバシーポリシーがありません)
Rorkアプリが該当しやすい理由:
Rorkで外部APIを使用するアプリ(CloudflareやGoogle API等)を生成した場合、データ処理について明記が必要です。
対処法:
以下をApp Storeの申請フォームで設定:
- プライバシーポリシーURL — 2,000文字以上、日本語版を用意
- データ処理方針 — 「ユーザーデータは保存されず、リアルタイム翻訳のみ」など明記
- 第三者サービス — 使用している外部API(Google、Stripe等)を列挙
最低限の例:
【プライバシーポリシー】
本アプリについて
- ユーザーが入力したテキストはサーバーに保存されません
- Google Cloud Translation API にのみ送信されます
- リクエストログは30日後に自動削除されます
理由4: メタデータ関連のエラー
よくあるリジェクト理由:
- プレビュー画像(スクリーンショット)がアプリの実際の様子と異なる
- 説明文が曖昧で、「何ができるアプリか」が不明確
- カテゴリ選択が不適切(「ビジネス」ではなく「ゲーム」で申請)
対処法:
メタデータの4つの要素をこの順で準備:
| 要素 | チェック項目 | NG例 | 良い例 |
|---|---|---|---|
| スクリーンショット | アプリ実際の画面5枚 | UI未実装の線画 | ユーザーがテキスト入力している様子 |
| プレビュー動画 | 10〜30秒のデモ | 会社ロゴだけ | アプリの起動〜使用〜結果表示までの流れ |
| 説明文(概要) | 170文字以内、何ができるかを簡潔に | 「スマートなアプリです」 | 「英語を日本語に翻訳、オフラインでも使用可」 |
| 説明文(詳細) | 4,000文字以内、機能ごとに箇条書き | 長い自由記述文 | 【機能1】【機能2】の見出し付き |
特に重要なのは、スクリーンショットと説明文の整合性です。説明文に「オフラインで使用可」と書いていながら、スクリーンショットにネットワークエラーが映っていれば、審査者は疑います。
理由5: デジタルコンテンツ・課金関連
よくあるリジェクト理由:
You are offering subscriptions or in-app purchases through your app, but the IAP feature is not properly implemented.
Rorkアプリで多い原因:
- Stripe決済を直接呼び出している(App Storeの30%手数料回避の意図を疑われる)
- プレミアム機能がロックされていない、または課金後も全員がアクセス可能
対処法:
App Storeの課金ガイドラインは厳格。以下を必ず確認:
- 定期購読(サブスク)を提供する場合 — App Storeの決済フローを必ず使用
- 1回限りの購入 — Stripeでも許可されるケースもあるが、App Storeサポートに事前相談推奨
- 無料トライアル — App Store経由なら「最初3日間無料」などの設定が自動で管理される
Rorkで課金機能を実装した場合は、App Store Connect でSandbox テスト用のテストユーザーを作成し、決済フローを審査者が検証できるようにしてください。
適切なプライバシーポリシーとデータ処理設定
リジェクト理由の3位がプライバシー関連なので、詳しく説明します。
App Store 申請フォームの「プライバシー」セクション
App Store Connectの申請画面で、以下を設定:
セクション例:
【ユーザーデータの取得】
チェックボックス形式で以下を選択:
- 連絡先情報:NO
- 健康情報:NO
- 財務情報:NO
- ユーザーID:YES(理由:ユーザーがアカウント登録時に入力)
- デバイスID:YES(理由:使用分析)
- 位置情報:NO
- 検索履歴:NO
- ブラウズ履歴:NO
- ユーザーコンテンツ:YES(理由:翻訳テキスト、一時的に処理)
- 診断データ:YES(理由:クラッシュレポート、自動送信)
【データの保存期間】
ユーザーコンテンツ → 30日後自動削除
診断データ → Apple に送信、180日後削除
プライバシーポリシーURL:
「Google サイトで無料プライバシーポリシー生成」などのツールを使い、日本語版を作成します。最低限:
## データ処理
- アプリがユーザーデータを収集する方法
- 第三者サービスへの送信有無(Google, Stripe等)
- データ保持期間
- ユーザー削除権(「アカウント削除後30日でデータ完全削除」など)
## セキュリティ
- 通信がHTTPS暗号化されていること
- パスワード管理方法
## 問い合わせ
- サポートメールリジェクト後の異議申し立てとResubmission
もしリジェクトされてしまったら、慌てずに対処します。
Appleからのメールを読む
Appleから「リジェクト理由」のメールが届きます。必ず全文を読んでください。大抵の場合、解決方法のヒントが書いてあります。
例:
Dear Developer,
Your app does not comply with Guideline 4.2.
It appears to be a test app or proof of concept, without functionality
that would be expected in a production app.
Please ensure your app provides a full user experience beyond a basic test.
この場合の対処:「テスト的なコンポーネントを全て削除し、ユーザーが実際に使える コア機能のみを申請に含める」ということです。
異議申し立て(Appeal)
Appleの判断に異議がある場合は、「Appeal」ボタンを押して反論できます。
反論時の例文:
Thank you for the review feedback.
Our app provides the following core functionalities:
1. Real-time text translation using Google Cloud Translation API
2. Offline dictionary (pre-loaded vocabulary data)
3. Translation history saved to device
We have verified the app works on multiple devices (iPhone 13, 14, 15)
without crashes. We've also tested on slow networks (3G equivalent).
We believe the app now complies with Guideline 4.2 and request re-review.
反論には、具体的な機能リストと検証結果を含めます。
Resubmission(再申請)
異議申し立てでも却下された場合は、修正してResubmissionします。
典型的な修正フロー:
- リジェクト理由を確認(例:機能不足、プライバシー未記載)
- Rorkで該当コンポーネント/機能を追加生成
- ローカルでテスト(クラッシュ・パフォーマンス・データ永続化)
- メタデータ(説明文、スクリーンショット)を更新
- App Store Connectで「新規ビルド」をアップロード
- 全メタデータを確認
- 再申請
再申請でも同じ理由で落ちる場合は、審査者のレビューガイドを読み直すか、Apple Developer Forumで同じ問題が報告されていないか検索してください。
App Store 審査に合格するためのチェックリスト
申請前に、以下の15項目を確認:
機能面
- [ ] コア機能が全て実装されている
- [ ] ユーザーが入力したデータが保存・復元できる
- [ ] アプリが15分連続で操作してもクラッシュしない
- [ ] 3G(遅い)ネットワークで正常に動作する
- [ ] iPhone 12以上で動作確認済み
プライバシー面
- [ ] プライバシーポリシーURLが設定されている
- [ ] App Store Connectのプライバシー項目を全て設定した
- [ ] 外部API(Google, Stripe等)を明記している
メタデータ面
- [ ] スクリーンショット5枚が実際のアプリ画面である
- [ ] 説明文がアプリの実機能と一致している
- [ ] カテゴリが適切(「ユーティリティ」「ビジネス」など)
- [ ] キーワード(最大100文字)が検索性を考慮している
申請情報
- [ ] 連絡先メール(サポートに返信される)が有効
- [ ] アプリサポートURL(ヘルプページ)が存在
- [ ] ビルド番号が前回より新しい
この15項目全てにチェックがついたら、申請してもOKです。
参考資料・関連ガイド
App Store審査に合格したら、次のステップは運用と改善です。TestFlight・App Store 公開トラブルシューティング で、デプロイ後の問題対処法を学べます。また、App Store 審査完全チェックリスト で、本申請前の細かいチェック項目を確認できます。
より技術的な実装については、App Store パブリッシングガイド も参考にしてください。
Rorkで作ったアプリが、1回で合格することを祈っています。頑張ってください!
参考書籍・リソース:
- App Store Review Guidelines 日本語版 — Appleの公式ガイドラインの全文