◉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.plist の NSUserTrackingUsageDescription は消し忘れがちです。審査側から見れば、その鍵が残っているアプリは許諾を求めうるアプリです。

入口の種類証拠が残る場所自分のソースを読んで気づけるか
自分で書いた機能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-04-19
Antigravity で構築する iOS アプリ全自動リリースパイプライン — AI がスクリーンショット生成・メタデータ最適化・審査対応まで担う上級実装ガイド
Antigravity × App Store Connect API × GitHub Actions で、ビルドからApp Store審査提出まで全工程を自動化。AI によるスクリーンショット説明文生成・メタデータ最適化・リジェクト対応提案を完全実装する上級ガイド。
▣ アプリ開発2026-04-03
Antigravity × Capacitor ハイブリッドアプリ実装ガイド:WebアプリをiOS/Android両対応ネイティブアプリに変換するAI駆動ワークフロー
個人で運用しているアプリの経験を踏まえ、Capacitor と Antigravity で既存 Web アプリを iOS/Android ネイティブ化する実装手順を整理しました。ネイティブ API の統合、AdMob の初期化順序、起動時の白画面対策、ストア申請前の確認項目までを、確認できた範囲と未確認の範囲を分けて記しています。
▣ アプリ開発2026-09-10
iOS 27 の配信日が決まってから、私が最初に grep したのは AGENTS.md でした
iOS 27 と iPadOS 27 の配信は9月14日です。版数の文字列はソースだけでなく、エージェントが読む設定ファイルにも残ります。両方を数えるスクリプトと、keyword 検索では拾えない一行の話を書き残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます