レポート」を公開しました。まき2016年11月14日こんにちは。以前、このゆとり世代エンジニア交流会サイトで「エンジニア友達を作ろう」という記事を書かせていただいた、まき(@akatsuki174)です。今回は「iOSエンジニアあるある的なことがあれば」という依頼があったので、実際に前職で経験したApple審査リジェクト事例について書こうと思います。ちなみに私は以前リジェクト事例共有会で登壇しており、今回はその一部をちょっと掘り下げた記事になります。その時の勉強会参加ブログは「こちら」になります。いろんな事例が紹介されていたのでこちらも参考にしてみてください。審査ガイドラインはちょこちょこ更新されています。今回紹介した条文、事例が必ずしも正しいわけではないので注意してください。審査ガイドライン条文は「こちら」から抜粋しており、2016年10月現在の情報を元に書いています。今回は和訳はざっくりとしか書いてないので、ちゃんとした意味は原文を読んで把握してください。リジェクト事例を紹介したいと思います。functionality.「そんなミスやるわけないじゃん」と思うかもしれませんが意外とハマったりします。私がリジェクトをくらった時は、ネイティブの部分は問題なかったのですが、ヘルプを表示していたWebViewに「Androidをお使いの方は?」という文字列が入っていたという状態でした。WebViewのコンテンツに関しては作成しているのはアプリエンジニアではなく、制作の方達だったということもあり、気付かずに提出してしまいました。対策としては制作の方達が作ってくださったコンテンツには、審査提出の前には一度目を通し、問題があればその時点で差し戻して修正してもらうようにしました。functionality.当時私が扱っていたアプリはECアプリです。メールアドレス、住所の入力を求めており、どれも必須項目でした。この状態でも、ある時までは審査が通っていたのですが、ある時突然「必要ない情報取ってるよね?」とリジェクトされてしまいました。ダメ出しをされた項目は生年月日、性別あたりだった気がします。確かにアプリとしてはこれらの情報がなくても成り立つのですが、マーケティングという観点でいうと全くもって成り立ちません。どれくらいの年齢の人が何を買ったのかがわからないと次に何を入荷すべきなのかの戦略立案に支障がでてきます。これではまずいのでとりあえずApple側に抗議のメールを送ってみました。Connectから返信しました。簡単にNULLを許すわけにはいかないという事情がありました。返ってきた答えとしては「それでもダメなものはダメ」でした。これに対して社内で会議が行われたものの、どうやら結論は出なかったようで、結局バージョンアップを諦めるという対応になりました。バージョンアップされていないです。Guidelines」にいろいろと書かれているのですが、iOSにはこのようなデータはどこに保存すべき、というガイドラインがあります。このガイドラインに従っていないとリジェクトされます。ガイドラインではざっくり言うと以下の4つが規定されています。ユーザ生成、もしくはアプリ側で再生成できないデータのみ<Application_Home>/Documents以下に入れるべき。再ダウンロード、再生成可能なデータは<Application_Home>/Library/Caches以下に保存するべき。一時的なデータは<Application_Home>/tmp以下に置くべき。デバイスに残しておく必要がなければ「バックアップを取らない」設定を使用するべき。リジェクトされた当初どんな状況だったのかというと、とりあえずいろんなデータをDocuments以下に保存し、かつバックアップ対象にしているという状態でした。対応としては場所はDocumentsのままですが、バックアップ対象にはならないようにしました。Apple公式ページに「一般的なアプリケーションの却下理由」というページがあり最も一般的なリジェクト原因が紹介されているので、ここは最低限チェックする。リジェクトされたらどの条文で指摘されて、どんなコメントをもらったのか、それに対してどのような対応をしたのかについてはちゃんとメモを残しておきましょう。「今まで通ってたけどいきなりリジェクトになった」という事態はあり得るので、リリース予定日ギリギリに審査提出することのないようにしましょう。ガイドラインはちょいちょい更新されるので、こまめに情報収集しましょう。最後にいかがでしたでしょうか?今回3つしか紹介できませんでしたが、ガイドラインの項目はもっとたくさんあります。全て把握した上で開発する必要はないと思いますが、気が向いたとき、項目が更新されたとき、リジェクトされたときなどに条文を見返してみるといいかもしれません。