iOSアプリ公開までの道のり:リジェクトを乗り越えて、App Store に並ぶまで

目次

「Rejected」の通知が来た時の絶望感

深夜2時、部屋は静かで、iPhone がブルっと震えました。
「アプリのビルドが終わったかな?」と思って見たら、App Store Connect からのメール。「うわ…」ってなる件名がそこにありました。

Your app has been rejected.(あなたのアプリは却下されました)

あの時の心臓が冷たくなる感じ、何度経験しても慣れないんですよね。
私が初めて iOS アプリを出そうとしたのは、もう10年以上前。まだ情報もあんまりなくて、英語のガイドラインを翻訳サイトにかけながら、手探りで開発してました。
自信満々でアプリを提出したら、数時間でダメ出し。「デザインが Apple っぽくない」「クラッシュした」「これ、Web で十分じゃん」って。
画面の向こうの審査官(レビュアー)からの容赦ないコメント。まるで人格否定されたみたいで、マジで落ち込みましたね。

でも、諦めたくなかった。iPhone で自分の作ったアプリが動くところが見たかったんです!

iOS アプリ開発って、コード書いたら終わりじゃないんですよ。むしろ、ビルドしてからが本番。
Apple というデカい壁を乗り越えて、App Store に出すには、厳しいルールを守って、ややこしい手続きを踏んで、「このアプリには価値がある!」ってことを証明しないといけないんです。

「せっかく作ったのに、いつまでたっても公開できない…」
「英語で色々言われても、どう言い返せばいいか分かんない…」

そんなあなたに。
この記事では、現役 iOS エンジニアとしてたくさんのアプリを世に出してきた私が、アプリ公開までのロードマップ、Apple 審査の裏話、リジェクトされた時の交渉術を、経験をもとに書きます。

これはキレイなマニュアルじゃないです。傷だらけになりながら見つけた、アプリ公開のための「サバイバル術」です。

深夜のデスクで、「Rejected」の通知メールを見て頭を抱える男性エンジニアのイラスト

なんで iOS アプリ公開ってこんなに大変なの?

Android アプリ(Google Play)を出したことがある人なら分かると思うんですけど、Google Play って結構ゆるいんですよ。審査もすぐ終わるし、普通は公開されます。
でも、Apple は違う。なんでこんなに厳しいのか?

「App Store」っていうブランドを守りたいから

Apple にとって、App Store はただのアプリストアじゃなくて、iPhone の一部なんです。
そこに「すぐ落ちるアプリ」とか「怪しいアプリ」とか「下品なアプリ」があったら、iPhone のブランドが下がっちゃいます。
だから、人間がアプリをチェックして、「Apple の基準」に合わないものは容赦なくはじくんです。

開発者は、この「Apple の美学」に合わせないといけない。めんどくさいけど、逆に考えれば、審査に通ったアプリは「品質が良い」ってことになります。

ルールがコロコロ変わる

ガイドライン(App Store Review Guidelines)がよく変わるのも困ります。
昨日 OK だったものが、今日ダメになる、みたいなことがよくあります。
例えば、「ログイン機能」。前はメールアドレスだけでよかったのに、「Apple でサインイン」が必須になったり、アカウント削除機能が必要になったり、どんどん厳しくなってます。

この変化についていくのが、iOS エンジニアの宿命ですね。

第1章:準備(事前準備と費用)

開発を始める前、または開発中にやっておくべき準備について話します。これって「パスポート」みたいなもので、ないとスタートラインに立てません。しかも、お金も時間もかかります。

1. Apple Developer Program への登録

自分の iPhone でアプリを動かすだけなら無料アカウントでできます。でも、App Store で公開するには、Apple Developer Program への登録が必須です。

費用は年額99ドル。今のレートだと15,000円〜16,000円くらい。
毎年払います。「高いな…」って思いますよね。私も最初はそう思いました。
でも、これは「Apple 経済圏への参加チケット」だと思って、あきらめましょう。

注意:登録に時間がかかる

登録フォームに入力してクレカで払えば終わり、じゃないんです。
本人確認書類をアップロードしたり、Apple の人が確認したりするので、場合によっては2週間くらいかかることも。
「アプリ完成!今日登録して明日リリースだ!」と思ってると、ヤバいことになります。開発と同時に登録手続きも進めておくのがオススメです。

2. 法人の場合:D-U-N-S Number

個人じゃなくて、法人としてアカウントを作る場合は、さらに面倒なことがあります。
D-U-N-S Number(ダンズナンバー)っていう企業識別コードが必要になるんです。
日本の企業だと持ってなかったり、持ってても Apple のデータベースに反映されるまで時間がかかったりします。
私が手伝ったスタートアップでは、この D-U-N-S Number でリリースが1ヶ月遅れました。社長は真っ青、私は冷や汗。そうならないように、法人の場合は早めに確認してください。

3. テスト端末は中古でOK

シミュレーター(Mac 上で動く iPhone)だけで開発するのは、危ないです。

  • カメラのピント
  • GPS の精度
  • メモリの使用量
  • 触った時の気持ちよさ

これらは実機でしか確認できません。
最新の iPhone だけでなく、ちょっと古い端末(iPhone SE とか iPhone 11)も用意した方がいいです。最新機種ではサクサク動いても、古い機種だとメモリ不足で落ちることがあります。必ずテストしましょう。
中古で十分です。フリマアプリで割れてるやつでもいいので、検証機を準備しましょう。

4. Mac(Xcode)は必須

Windows で iOS アプリは作れないんですか? って聞かれますが、Mac は必要です。
Flutter とか React Native を使えば、Windows でもコードは書けます。でも、最後の「ビルド(アプリファイルを作る)」と「App Store へのアップロード」は、Mac のソフトであるXcode を使わないといけません。
クラウド上の Mac を借りることもできますが、効率が悪すぎます。本気でやるなら、Mac mini の中古でもいいので(M1 チップ以降推奨)、Mac を用意しましょう。

第2章:App Store Connect での設定

コードが終わったら、次は Apple の管理画面であるApp Store Connect での設定です。
ここでアプリの「箱」を作って、説明文とか画像とかを登録します。エンジニアからすると退屈な作業に見えるかもしれませんが、実はココが「マーケティングの場所」なんです。

メタデータは「ラブレター」

審査に通るかどうか、ダウンロードされるかどうかは、ここで決まります。

  • アプリ名: 30文字以内。検索されやすいキーワードとか、覚えやすい名前にしましょう。
  • サブタイトル: アプリの魅力を短く伝えるキャッチコピー。
  • スクリーンショット: マジで重要。説明文なんて読まないですからね。画像を見て「面白そう」「便利そう」って思わせないとダメです。Figma とかで端末の枠に入れて、キャッチーな言葉を添えた画像を作りましょう。

プライバシーポリシー

これ、忘れがちなんですけど、審査に出す直前になって「えっ、必要なの?」ってなることが多いです。
今は、全てのアプリでプライバシーポリシー(個人情報保護方針)の URL の入力が必須です。
個人で作った無料アプリでも必要です。「個人情報は取得しません」って書いた Web ページを作りましょう。
サーバーを借りて Web サイトを作る必要はないです。Notion とか GitHub Pages を使って、簡単なページを作って URL を貼り付ければ OK です。

カフェでMacを開き、Apple Developer Program の登録をしているエンジニアのイラスト

第3章:TestFlight でテスト

いきなり審査に出すのはやめましょう。絶対に。
Apple はTestFlight(テストフライト)っていう、テスト環境を用意してくれています。使わないと損です。

TestFlight を使う理由

私の失敗談を話します。
シミュレーターでは完璧だったアプリを、そのまま審査に出しました。そしたら「起動してすぐ落ちる」って理由でリジェクト。
原因を調べたら、「リリースビルド(本番用設定)でのみ発生するバグ」でした。開発中は分からなかったんです。

TestFlight を使えば、本番と同じ条件でビルドされたアプリを自分の iPhone に入れてテストできます。ここでテストしておけば、上のミスは防げます。

他人の目は最高のデバッガー

TestFlight のもう一つのメリットは、友達とか知り合いに簡単にアプリを配れることです。
メールアドレスさえ知ってれば招待できます。
開発者じゃない人に触ってもらってください。
「ここ、ボタンって分からなかった」「文字が小さくて読めない」「この画面から戻れない」とか、
開発者には分からない UI の欠陥を指摘してくれます。心が折れそうになるけど、それが審査通過への道です。

TestFlight を使って友達にアプリをインストールしてもらい、バグを見つけたエンジニアのイラスト

第4章:審査(Review)の真実とリジェクト理由

いよいよ審査に出します。
ステータスが「Waiting for Review(審査待ち)」から「In Review(審査中)」に変わる瞬間は、マジで緊張します。
Apple の審査は、AI じゃなくて人間がやっています。カリフォルニアとか、どこかの国の人が、あなたのアプリを触ってチェックしてるんです。

私が経験した、よくある「3つのリジェクト理由」を解説します。

1. Guideline 4.2 - Minimum Functionality(最低限の機能)

これが一番ヤバくて、乗り越えるのが難しいリジェクトです。
レビュアーからのメッセージはこんな感じ。
「これは Web サイトで十分。アプリにする意味がない」

ブログ記事を表示するだけのアプリとか、Web サイトをアプリにしただけのものは、この理由で落とされます。
Apple は「App Store には最高の体験だけを置きたい」って考えてます。Web ブラウザでできることを、わざわざアプリにするな、ってことです。

【対策】

「アプリならでは」の機能を入れましょう。

  • プッシュ通知を入れる
  • カメラで写真を投稿できるようにする
  • 位置情報を使う
  • オフラインでも見れるようにする

「これは Web ではできないんだ!」ってことを、機能で証明しましょう。

2. Guideline 2.1 - App Completeness(アプリの完成度)

「起動したら落ちました」「ダミーテキストが残ってます」「ボタンを押しても反応しません」、つまり、未完成品を出すなってことです。

特にiPad に注意してください。
iPhone 専用アプリとして作ってても、iPad では「互換モード」で動きます。この時、レイアウトが崩れてボタンが押せなくなったりします。審査する人は iPad を使ってることが多いらしいので、iPad シミュレーターでも確認しましょう。

3. Guideline 5.1.1 - Data Collection and Storage(データの収集)

最近厳しくなってるプライバシー周りです。
アプリがカメラとか位置情報を使う時に、許可を求める画面が出ますよね。
あの画面に表示される説明文が足りないとリジェクトされます。

  • ×:カメラを使用します。
  • 〇:プロフィール写真を撮るためにカメラを使用します。

「何を使うか」だけじゃなくて、「なぜ使うのか」を具体的に説明しないといけません。「何に使うか分からないけどカメラ許可して」って言われても許可しないですよね? Apple は透明性を求めています。

審査官が iPad でアプリをチェックしている様子を想像し、祈る気持ちで画面を見つめるエンジニアのイラスト

第5章:リジェクトされた時の交渉術

「Rejected」のメールが来たら、まず落ち着きましょう。Apple の人も人間です。伝え方によっては、結果が変わることもあります。

Resolution Center での戦い方

App Store Connect には「Resolution Center(問題解決センター)」っていう、レビュアーとチャットできる場所があります。ここでやり取りします。

ケース1:完全にこっちのミスの場合

素直に謝って、修正版をアップロードしたことを伝えます。言い訳するより、早く修正した方が印象が良いです。

  • I have fixed the crash issue mentioned. Please check the new build.(ご指摘のクラッシュを修正しました。新しいビルドをご確認ください。)

ケース2:レビュアーの勘違いの場合

腕の見せ所です。感情的にならずに、論理的に説明します。

私が作ったアプリで「この機能には課金が必要なのに、Apple の決済を使ってない(Guideline 3.1.1 違反)」って言われたことがありました。でも、そのアプリは「ジムの会員権」を売るもので、デジタルコンテンツじゃなかったんです。

私はこう返信しました。
「このアプリはデジタルアイテムではなく、現実世界で使うサービスを販売しています。ガイドライン3.1.3(e) に基づき、Apple 内課金以外の決済方法を使うことが許可されているはずです。再考をお願いします」(意訳)

ポイントは、「ガイドラインの条項」を引用して反論することです。
「俺はこう思う」じゃなくて、「ルールブックにこう書いてあるから OK だよね?」って言うんです。これで何度も覆してきました。

審査用メモ

リジェクトを防ぐために、提出時にある「審査用メモ」を使いましょう。レビュアーへの手紙を書く場所です。

  • ログインが必要なアプリなら、テスト用アカウントを必ず書く(ないと中身が見れずリジェクトされます)。
  • 特殊な操作が必要なら、手順を動画にして URL を貼る。
  • 「これは Web ビューに見えますが、キャッシュ処理をしてるので 4.2 違反ではありません」とかを先に書いておく。

審査する人が疑問に思いそうなことを先回りして潰しておく。これが「一発合格」のコツです。

Resolution Center でガイドラインを引用しながら返信文を入力しているエンジニアのイラスト

第6章:リリース後の世界

苦労の末、ステータスが「Ready for Sale(販売準備完了)」になったら、おめでとうございます!長かった戦いが終わりました。でも、これはゴールじゃなくて、スタートです。

最初の24時間

リリース直後は、トラブルが起きやすい時間帯です。
「サーバーに繋がらない」「特定の国だけで落ちる」みたいなことが起きます。
Crashlytics などのツールを入れて、エラーが起きてないか監視しましょう。もしヤバいバグが見つかったら、「緊急リリース」を申請することもできます。これは年に数回しか使えない切り札ですが、審査を早くしてくれます。

バージョンアップ

App Store でアプリを探す時、何を見ますか?
私は「最終更新日」を見ます。「最終更新:3年前」ってなってるアプリは、怖くてダウンロードできません。
バグ修正、新機能追加、新しい iOS への対応。
定期的にアップデートして、「バージョン1.0.1」「1.1.0」って数字を積み重ねていくこと。それがユーザーへの信頼になり、App Store の検索順位も上がります。アプリは生き物です。世話をしないと死んでしまいます。

よくある質問

Q. 審査にはどれくらい時間がかかりますか?
A. 最近は早くて、平均1日〜2日です。
昔は1週間とか待たされたけど、今はスムーズです。リジェクトされてやり取りが発生すると、数日伸びます。リリース日が決まっているなら、1週間前には提出しましょう。

Q. 英語が苦手でも大丈夫ですか?
A. DeepL とか ChatGPT を使えば大丈夫です。
レビュアーとのやり取りは英語ですが、難しい言葉は必要ありません。箇条書きで、事実を伝えれば通じます。

Q. 個人の住所が公開されるって本当ですか?
A. 本当です(条件があります)。
App Store で「有料アプリ」を販売する場合、または「アプリ内課金」がある場合は、日本の「特定商取引法」で、販売者の住所と電話番号を表示することが義務付けられています。
嫌な場合は、無料アプリにするか、バーチャルオフィスを契約して法人化する必要があります。個人で作ってる場合は、よく考えましょう。

誰かの手に届く瞬間のために

iOS アプリ公開の道のりと、攻略法をお伝えしました。
「めんどくさいな」「やめようかな」って思ったかもしれません。
確かに、Apple の審査は厳しいし、理不尽に感じることもあります。

でも、厳しさがあるからこそ、App Store は安全で高品質なアプリストアなんです。高い壁を乗り越えたということは、あなたのアプリが「世界レベル」ってことです。

私が初めてリジェクト地獄を乗り越えて、自分のアプリがストアに並んだ日のことは忘れません。
自分の iPhone で App Store を開いて、検索窓にアプリ名を入力して、表示されたアイコン。
友達とか、知らない人がダウンロードして、「これ便利だね」「面白かったよ」って言ってくれた時の喜び。

その一瞬は、それまでの苦労が全部ふっとびます。
自分の書いたコードが、製品となって誰かの生活の一部になる。これ以上のやりがいは、ないと思います。

リジェクトは失敗じゃないです。アプリを良くするためのアドバイスです。
何度ダメ出しされても、修正して、また送り込めばいい。諦めなければ、必ず道は開けます。

さあ、Xcode を開きましょう。
あなたの情熱を Apple に送り出して、世界中のユーザーに届けましょう!

ストアに並んだアプリを見て、友人が楽しそうに使っているのを見て、安心した顔を見せるエンジニアのイラスト

あなたのアプリに「Ready for Sale」の通知が届く日を応援しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いたエンジニア

新垣 亮のアバター 新垣 亮 Webアプリエンジニア

Webアプリ開発で幅広く活躍するフルスタック寄りのエンジニア。堅実で素早い対応力が魅力。好奇心旺盛で新技術を試すのが好き。周囲を明るくする軽快さがあり、チームコミュニケーションを円滑にする潤滑油的存在。休日はランニングで汗を流す。

目次