開発
個人開発
Flutter
SonicGarden Gym

【Flutter 個人開発】iOSアプリレビューの Minimum Functionality を突破するためにやったこと

created: 2023-03-29
186 views

サマリ

iOSアプリ開発者が最も恐れる Minimum Functionality によるリジェクト。今回僕もこのリジェクトに悩まされたので、対応を記録しておこうと思います。
大まかに言えば、「ネイティブアプリである必要性がある機能をリリースした上で、アピールする」ことが大事かなと思いました。

経緯

【Flutter 個人開発】スマホアプリ「どのドア」をリリースしました | ryoito.jp で書いた通りなのですが、乗り換えに便利なドア番号を表示するアプリを作成しました。
実装も終わったし、よしレビュー申請!と思いきや、即リジェクトの知らせが届きました。リジェクト理由を見てみると、 Guideline 4.2 - Design - Minimum Functionality とあります。
どうやらこれ、iOS最悪のリジェクト内容らしいのです。

【iOS】4.2 Minimum Functionalityの内容と対応事例まとめ
こちらが非常に良い記事でかなりお世話になったのですが、ここには、以下のように書かれています。

中でもこの4.2 Minimum Functionalityは個人開発者にとっては最もキツイ内容です。
(中略)
要するに「これコンテンツを表示させるだけだったり、機能が少なすぎたりでアプリにする必要ないよね。Webでよくね?」といった内容です。
これの何が厳しいかというと「どうすればよいかが不明確」だからという点に尽きます。
(中略)
このように大概のリジェクトは「どう対応すればよいか」まで明示されていますが、4.2 Minimum Functionalityに関しては「どこまで機能を追加すればOKか」や「何を直せばOKか」が明確でないです。
そういった内容も相まって、開発者泣かせのリジェクトとして扱われています。

なるほど。。なかなか手強そうですね。。かなり高いお金を払わせて AppStoreConnect に登録させたと思いきや、Webで良くね?とか言ってリジェクトする。こんな横暴に屈してはいけません。

方針

対応事例をいくつか読み、以下のように方針を立てました。

  1. Webで良くね?と言われる心当たりは確かにあったので、ネイティブアプリならではの機能を実装する
  2. それでもダメなら、返信してアプリのコンセプトや機能をアピールする

いくつかの記事を読む限り、闇雲に実装してリジェクトを食らい続けるのが一番しんどいだろうと想像しました。一方で、確かに「Webで良くね?」と言いたくなる程度の機能だという自覚もあったので、その部分だけは最低限クリアし、それでもダメなら機能をアピールしてみようと思いました。

ネイティブアプリならではの機能を実装する

元々のアプリのコンセプトから大きく外れず、かつネイティブアプリならではの機能を実装することが大事だと思います。いずれ実装しようと思っていたような機能であれば、対応するにもまだ気が楽ですし、あとでアピールする際にもコンセプトの一貫性を損ねることがありません。

ネイティブアプリならではの機能というと、以下のようなものが挙げられると思います。

  • Webだとログインが必要だが、ネイティブアプリだと端末にデータを保存すれば済むような機能
  • カメラやセンサーなど、端末の機能を利用するような機能

今回は、前者としてお気に入りの駅を端末に保存する機能を実装しました。

アピールする

お気に入り機能を実装して再申請しても、なお Minimum Functionality 。
よく読むと、2回目のレビューコメントには何やらこんなコメントがくっついていました。

It would be appropriate to add user-facing interactive features.

いやいや、「ユーザー目線のインタラクティブな機能」、あると思うんですが。やはり方針自体は間違っていないように感じました。
そこで、ラブレターを書いてアピールします。

App Review Board は返事が遅い

App Review Board と言って、おそらくレビュアーより上位の組織にアピール(クレーム?)をすることができます。他の記事を読む限り、 App Review Board に書き込むことで、元々のレビュアーとは別の人が見てくれて、それによってレビューが通過する場合があるようです。
無駄なやり取りをしたくないなと思い、割と早々に App Review Board に送信してみました。
アピールした内容は箇条書きにすると以下のような感じです。

  • 2回目の審査申請ではお気に入り機能を追加したこと
  • アプリのコンセプトや、コンセプトにおいてお気に入り機能が重要な意味を持つこと
  • ネイティブアプリにお気に入り機能が実装されていることで、ユーザーはログインをする必要がないこと

が、なかなか返事がこない。
結局1週間以上音沙汰がなかったので、諦めて App Review に返事をすることにしました。

App Review に返事をしたらすんなり通過 🎉

同じ内容で App Review に返事をしたら、「お気に入り機能の使い方がわからないから教えて!」と返事が。お、これは望みがあるのでは?
お気に入り機能の使い方と、お気に入りの駅を表示するページを別で作らなかった理由を説明。

すると、すんなりレビュー通過しました!最初から App Review に返信しておけばよかった。まあ結果論ですが。。

終わりに

というわけで、 Minimum Functionality に対応した1つの事例をまとめました。今回の事例は数多ある中のひとつでしかありませんが、できるだけ消耗しないように方針を立てることと、場合によっては実装よりもアピールすることが大事なのかなと感じました。
このリジェクトで困っている方の助けになれば幸いです!