シリーズ:iOS版『見開きPDFビューア』開発記録
この記事は、ChatGPTと壁打ちしながら作成しました。また、Gitの変更履歴・ソースコードの調査と、筆者が提供したApp Store Connectの履歴をもとにしています。
第9回では、審査への返信と、契約・登録情報の手続きを振り返りました。今回は、生成AIへの相談で扱った情報を整理し、提出版として保存していたIPAを点検して、修正と検証を進めた経緯をまとめます。
この連載の審査経過は2026年10月20日を基準にしています。本稿では、執筆中の10月23日に進んだ追加点検を扱い、その後の10月27日に届いたAppleの回答を追記します。追加で見つかった不足と、Appleから説明されていない審査長期化の理由を混同しないよう、時点と確認範囲を分けて記します。
図1 Xcode内のCodex、Gemini、ChatGPT Worksで確認できた相談内容。
審査状況の相談から、提出版の点検へ
審査の回答を待つ間は、別のアプリ(Android版「見開きPDFビューア」など)の開発を続けていました。審査の進捗は毎日確認しましたが、追加対応の検討は後回しになっていました。申請から1週間以上たっても回答がないことが気になり、Geminiにも相談していました。
Geminiで「iOSアプリ審査長期化への対処法」という会話と回答本文を確認できました。
筆者のプロンプト(全文)
App Storeに新しいiOSアプリの登録を申請して、10月5日に審査中にステータスが変わりましたが、審査が終わりません。
Geminiの回答(抜粋)
ビルドを取り消して再申請(Rejectして再提出)しないこと
Geminiは、Connectやメールに確認事項が届いていないか調べ、Appleへ問い合わせる手順と英文例を示していました。この会話ではコードや配布ファイルを点検していません。長期化の原因候補も挙げられていましたが、本アプリについて確認した原因ではなく、この回答だけで実装に問題がないとは判断できません。
ChatGPT Worksの「確認する App Store審査状況」の10月19日の履歴では、提示した申請情報から、開発者の対応待ちと分かる表示はないと説明されていました。ただし、非消耗型の商品設定と、PDFを持たない審査担当者が購入画面へ進めるかは確認事項として挙げられています。「問題はない」と保証されたわけではありません。
図2 状況説明、申請情報、保存IPA・ソースという確認材料の違い。
相談先を変え、10月23日に保存済みIPAとソースを点検する
しばらくは再申請せずに回答を待っていましたが、審査が長引くことへの不安は残っていました。Geminiに同じ質問を繰り返すだけでは進展しないだろうと考え、ChatGPTにも相談することにしました。筆者の記憶では、その際、App Store Connectのサイトやメールを直接調べるにはChatGPT Worksに切り替えるよう案内され、そちらでの調査へ移りました。これは当時の案内と筆者の判断を振り返ったもので、各サービスの一般的な能力を比較したものではありません。
図3 同じ相談を繰り返すことへの限界を感じ、ChatGPTへ相談先を広げた筆者の判断と、当時の案内でChatGPT Worksへ移った経緯。
10月23日には、ChatGPT Worksの「調査 ビルド10の審査却下要因」という会話で、調査対象を実際の申請情報や通知へ広げました。一般的な却下事例やソースコードの点検に加え、Appleから届いたメールと、App Store Connectのサイトを直接確認するよう依頼しました。
会話には「メールは、Apple製のメールアプリを調べてください。」という依頼が残っています。保存された調査記録でも、Appleの「メール」アプリで過去の状態通知や問題通知を確認したことが分かります。10月1日の却下通知は1.0.3(build 7)が対象で、ビルド10について確認できた最後の状態通知は10月5日の「In Review」でした。
さらに、App Store Connectを開いて審査状況や商品設定を調べるよう依頼し、筆者がサインインした後、実画面を読み取りで確認しました。10月23日の確認では、アプリ1.0.4(build 10)と非消耗型の3商品はいずれも審査中でした。商品の非消耗型設定、価格表記のない画像、プライバシーポリシーURLの登録も確認できました。この確認では、設定の変更や提出の取り下げ、再申請は行っていません。
メールで過去の指摘と状態通知を調べ、Connectの画面でその時点の申請状態を確かめたうえで、保存済みIPAとソースを照合しました。そこで、追加で点検すべき箇所が見つかりました。
ビルド10直前のソースと保存IPAの静的点検では、アプリ内からプライバシーポリシーを開くリンクが見当たりませんでした。また、設定保存にはUserDefaultsを使っている一方、保存IPAには.xcprivacyファイルがありませんでした。図4に、点検結果とその後の修正・確認範囲をまとめています。
ポリシーのWebページやConnectへのURL登録と、アプリ内から開けることは別です。Appleのガイドラインでも、Connectとアプリ内の両方に容易にアクセスできるリンクを求めています。また、UserDefaultsは使用理由の申告が必要なAPIに含まれます。プライバシーポリシーの要件、使用理由を申告するAPIの説明
この結果を受けて、修正と検証をXcode内のCodexへ依頼する方針にしました。
筆者のプロンプト(全文)
残っているアプリ内のプライバシーポリシーへの導線とPrivacy Manifestについて、提出済みビルド10を基準に確認し、修正が必要ならXcode内のCodexに渡す依頼文を作ってください。
ChatGPT Worksの回答(抜粋)
2点とも修正が必要と判断します。 ただし、現在の審査長期化の原因と確認されたわけではありません。
その後の10月23日のXcode内Codex履歴には、アプリ内リンクの追加とManifestの同梱、ビルド11での検証記録があります。iPadのSimulatorでは、PDF未選択時・閲覧中・アプリ情報からポリシーを開く確認が行われています。実機やVoiceOverなど、別に確認すべき項目も残っていました。
図4 10月23日の保存版の点検結果と、ビルド11での修正・Simulatorによる確認を対応させました。10月27日のAppleの回答でも、これらが審査長期化の原因だという説明はありません。
不足が見つかったことと、それが審査長期化の原因だったことは同じではありません。Appleから原因の説明を受けたわけではなく、保存IPAとAppleへ実際に送信したファイルのハッシュ照合も未実施です。10月23日の記録では、進行中の審査を維持しながら修正版を完成・検証し、その後の提出を判断する方針にしています。この先の修正と検証の詳しい経緯は、別の記事でまとめたいと思います。
追記:10月27日の回答と、追加点検の位置付け
10月20日時点の記録と10月23日の点検より後、10月27日にApp Review Supportから問い合わせへの返信が届きました。第9回の追記でも紹介したとおり、審査は継続中で、追加の時間が必要という回答でした。遅延の具体的な理由や完了予定日は示されず、新たな修正要求もありませんでした。
この回答は、追加点検で見つかった不足をAppleが指摘したことも、問題なしと認めたことも意味しません。ポリシーへの導線とManifestの点検結果は、審査長期化の原因とは分けて扱います。10月27日の時点では現在の審査を維持しながら、修正版の準備・検証を並行して進める方針です。修正版を準備していることと、それをAppleへ提出したことも区別しています。
iOS版の開発を振り返って
最初は、PDFを見開きで表示できることが出発点でした。実際にiPadで使い続けると、画質、メニューを表示したときの大きさ、右綴じの順序、検索のハイライトなど、読む途中で気になる点が出てきました。さらに、公開できるテストPDFを用意し、再起動後の状態復元や設定の保持を確かめ、診断やコード整理へと作業が広がりました。
この連載では、使って気付いたことと、コードや作業ログで確かめられたことを照らし合わせて振り返りました。Codexと開発を進める場合も、期待する動作を具体的に伝え、結果を確かめる作業は続きます。
10月20日時点でiOS版はまだ公開できていませんでした。審査結果を待つ間に、申請画面だけでなく提出版そのものへ確認を広げたことで、修正すべき点が見つかりました。審査からの連絡を待つことと、自分で実装や配布物を点検することの両方が必要だったと感じています。
一方、Android版はGoogle PlayストアでVer.2.0.0を公開中です。Android版の開発については、別の記事にまとめる予定です。
ソースコードはGitHubのtyamada/MihirakiPDFViewerで公開しています。10月20日時点の開発履歴、10月23日の追加点検・修正記録、10月27日のAppleからの回答を分けて紹介しました。10月27日時点でも審査結果と長期化の理由は確認できていません。今後も、確認できた進展を記録していきたいと思います。



