ANTIGRAVITY LABEN
記事一覧/アプリ開発
アプリ開発/2026-09-08中級

年齢レーティングの質問票に、記憶ではなくリポジトリの宣言で答える

2026年9月から必須になった App Store の年齢レーティング質問票を、リポジトリ側の宣言ファイルと標準ライブラリだけの照合スクリプトで毎回同じ答えにする手順を、実際の出力とともにお伝えします。

app-store6ios37app-dev52ci5

プレミアム記事

9月の頭、壁紙アプリの更新を提出しようとして、App Store Connect の途中で手が止まりました。これまでになかった質問票が挟まっていたのです。2026年9月以降、新規アプリとアップデートの提出時、それから代替配布のための公証申請時に、この回答が必須になりました。iOS 27 / iPadOS 27 / macOS 27 の年齢レーティングと Time Allowances の挙動を決めるものです。

私は記憶で答えようとしました。二問目で止まりました。「アプリ内でウェブを開くか」という問いに、はい と いいえ のどちらとも言い切れなかったのです。設定画面のどこかに、ヘルプを開く導線を置いた覚えがありました。三年前の自分が置いたもので、いま画面を見ても目に入りません。

そのとき決めたことを、そのまま原則にしました。

提出画面で思い出そうとする質問は、リポジトリに書いてあるべき答えです。

個人開発でアプリを複数本出していると、同じ質問票を年に何度も、アプリの数だけ埋めることになります。そのたびに記憶を掘り返していては、いつか答えがぶれます。ぶれた側が正しいのか、実装の側が正しいのかも分からなくなります。ここでは、回答を一枚の宣言ファイルに置き、実装と食い違ったら止まる仕組みを作るところまでをお伝えします。

質問票が訊いているのは「するか」ではなく「しうるか」

最初に引っかかったのはここでした。この種の質問票は、アプリが日常的に何をするかではなく、利用者がその機能に到達しうるかを訊いています。

たとえば広告です。広告そのものは年齢レーティングの一項目ですが、それとは別に、広告のランディング先はアプリ内ブラウザで開かれます。つまり広告 SDK を同梱している時点で、自分のソースに WKWebView が一行もなくても、利用者はアプリの中から任意のウェブページに辿り着けるのです。

もうひとつは、機能を外したあとの残骸です。トラッキングの許諾を出すのをやめて ATTrackingManager の呼び出しを消しても、Info.plistNSUserTrackingUsageDescription は消し忘れがちです。審査側から見れば、その鍵が残っているアプリは許諾を求めうるアプリです。

入口の種類証拠が残る場所自分のソースを読んで気づけるか
自分で書いた機能Swift / Kotlin のソース気づけます
過去に消し残した宣言Info.plist気づきにくいです
依存 SDK が持ち込む導線Podfile.lock / Package.resolved気づけません

「該当なし」と答えた項目ほど、あとで状況が変わっても誰も気づきません。守る値打ちがあるのは、まさにその「いいえ」のほうです。

回答を一枚の宣言ファイルにする

まず、質問票の答えをアプリごとに一枚のファイルへ書き出します。標準ライブラリだけで読めるように JSON にしました。

{
  "app": "WallpaperApp",
  "questionnaire_version": "2026-09",
  "answers": {
    "in_app_browser": "none",
    "advertising": "contextual",
    "user_generated_content": "none",
    "in_app_purchase": true,
    "location_sharing": false,
    "tracking": false
  }
}

questionnaire_version を入れているのには理由があります。質問票そのものが改訂されるからです。改訂が来たときに「この回答はどの版の設問に対するものか」が残っていないと、翌年また記憶を掘り返すことになります。

この段階では、まだ答えは間違っていて構いません。上の内容は、実際に私が記憶で埋めたときの回答をそのまま写したものです。ここから機械に反証させます。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
質問票の回答を毎回思い出す作業をやめ、リポジトリの一枚の宣言から同じ答えを取り出せるようになる
提出後に回答の誤りを指摘される前に、宣言と実装が食い違っている項目を自分の手元で見つけられるようになる
自分のソースに一行も現れない入口まで含めて、アプリが何をしうるかを説明できるようになる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

アプリ開発2026-07-03
ダウンロードサイズの逆行に提出直前で気づかないために — AAB/IPA のサイズ予算をエージェントの週次ゲートで守る
メディエーションSDKやアセットの追加で静かに膨らむダウンロードサイズに、bundletool と App Thinning レポートを使ったサイズ台帳・予算ゲート・増分の内訳特定で歯止めをかける設計をまとめます。
アプリ開発2026-06-28
メディエーションを増やしたら iOS の計測が静かに痩せた — SKAdNetwork ID のズレを4アプリで揃える
メディエーションに新しいパートナーを足したのに iOS の収益が伸びず、SKAdNetwork ID の登録漏れが原因だった実体験。Info.plist の SKAdNetworkItems を4アプリで突き合わせ、Antigravity エージェントに照合させて人間が採否を決める運用を紹介します。
アプリ開発2026-06-25
Xcode Cloud の無料25時間が月末に静かに尽きるとき — コンピュート時間を計測して守る運用メモ
Xcode Cloud の無料コンピュート枠が月末に枯渇し、ビルドがキューで待たされる前に。消費の内訳を App Store Connect API で実測し、不要ビルドの早期停止・テスト分割でCI時間を運用で守る実践メモです。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます