CLAUDE LABEN
APPLY — ant CLI v1.30.0 に ant apply が入りました。エージェント・環境・スキル・メモリストア・デプロイメントを、リポジトリのファイルから作成・更新できますLOCKFILE — 書き出される claude-lock.json は必ずコミットしてください。忘れると、実行のたびに同じリソースが新しく作られていきますPLAN — ant apply は適用の前に計画を表示し、承認を挟みます。CI で無人実行するなら、この承認をどう扱うかを先に決めておくことですPRICING — Claude Sonnet 5 の 3 ドル / 15 ドルへの値上げは実施されていません。導入価格の 2 ドル / 10 ドルがそのまま標準価格になりましたSOURCE — 価格と版番号は二次ニュースに誤りが混じります。platform.claude.com のリリースノートで裏を取ってから書くようにしていますBETA — Agent Skills と Skills API はベータを抜け、skills-2025-10-02 ヘッダが不要になりました。Files API はヘッダの有無でレスポンス形式が変わる点に注意ですAPPLY — ant CLI v1.30.0 に ant apply が入りました。エージェント・環境・スキル・メモリストア・デプロイメントを、リポジトリのファイルから作成・更新できますLOCKFILE — 書き出される claude-lock.json は必ずコミットしてください。忘れると、実行のたびに同じリソースが新しく作られていきますPLAN — ant apply は適用の前に計画を表示し、承認を挟みます。CI で無人実行するなら、この承認をどう扱うかを先に決めておくことですPRICING — Claude Sonnet 5 の 3 ドル / 15 ドルへの値上げは実施されていません。導入価格の 2 ドル / 10 ドルがそのまま標準価格になりましたSOURCE — 価格と版番号は二次ニュースに誤りが混じります。platform.claude.com のリリースノートで裏を取ってから書くようにしていますBETA — Agent Skills と Skills API はベータを抜け、skills-2025-10-02 ヘッダが不要になりました。Files API はヘッダの有無でレスポンス形式が変わる点に注意です
記事一覧/Claude Code
Claude Code/2026-05-18上級

Apple Privacy Manifest を個人開発で取り回す — 依存ライブラリの追従漏れを Claude Code で防ぐ実装

Apple Privacy Manifest(PrivacyInfo.xcprivacy)の運用は、個人開発者が依存ライブラリのバージョンアップに振り回されやすい領域です。累計5,000万ダウンロードの iOS アプリ群を運用してきた経験から、Claude Code を使った追従漏れ検出・申請拒否対応・CI 組み込みまでの実装をまとめます。

Claude Code250Apple Privacy ManifestPrivacyInfo.xcprivacyiOS25個人開発126App Store8依存ライブラリ

プレミアム記事

2014年から個人で iOS アプリを作り続けて12年目に入り、累計5,000万ダウンロードを超えるあたりからは、Apple のポリシー変更に振り回される時間が機能開発と同じくらいの比重を占めるようになりました。中でも 2024 年に必須化された Apple Privacy Manifest(PrivacyInfo.xcprivacy)は、個人開発者にとって厄介な領域です。理由は単純で、自分のコードだけでなく、依存している SDK の側にも対応版が揃っていないと申請が通らないからです。

Beautiful HD Wallpapers のように長期運用しているアプリでは、AdMob・Firebase Analytics・RevenueCat といった SDK が混在しています。あるとき AdMob を一段上のバージョンに上げたら、ストア申請で「Privacy Manifest に必要な NSPrivacyAccessedAPITypes が宣言されていない」と返ってきました。同じ更新を、別の癒し系アプリでは半年前に通しているのに、です。差分は一目では分からず、結局 1 日を Privacy Manifest の比較に溶かしました。本記事はその経験を踏まえ、Claude Code に追従作業をどこまで任せられるかを、運用中のワークフローと差分つきで書きます。

なぜ個人開発者ほど Privacy Manifest に振り回されるのか

Privacy Manifest は、Apple が 2024 年春以降のリリースで段階的に必須化した宣言ファイルです。アプリ本体だけでなく、Apple が指定する「commonly used APIs」を呼ぶ SDK にも、対応する宣言ファイルの同梱が求められました。個人開発者にこれが重く感じられる理由は、構造的に三つあります。

ひとつ目は、依存ライブラリの数に対して、各 SDK の対応速度が一律ではないこと。一般的な iOS アプリは AdMob、Firebase、Sign in with Apple、SwiftLint、Reachability 系ユーティリティ……と、すぐに 20 を超えます。個人開発では、これら全てを朝のメール 1 通で監視する仕組みを持っていない場合がほとんどです。

ふたつ目は、追加した瞬間は問題ない依存が、半年後の更新で突然 required reasons を要求してくること。Apple のリストはじわじわ拡張されており、UserDefaultsfileTimestampsystemBootTimediskSpace 等が後発で対象に加わりました。これらは古い個人開発アプリほど無意識に使っています。

みっつ目は、申請拒否時にメッセージが断片的なこと。リジェクト本文には「NSPrivacyAccessedAPITypes に対応する宣言が見当たりません」とだけ書かれるパターンが多く、どの SDK が原因で、どの API カテゴリに対する宣言が足りないのか、自分で照合する必要があります。

この 3 つを毎月の運用に組み込むには、AI に「監視と差分案の生成」を任せる仕組みが現実的です。

Privacy Manifest と Required Reasons API の関係を最短で整理する

ここから先の章のために、最低限の語彙だけ揃えておきます。

PrivacyInfo.xcprivacy には大きく 4 つのキーを宣言します。NSPrivacyTracking はトラッキングの有無、NSPrivacyTrackingDomains はトラッキングを行う通信先、NSPrivacyCollectedDataTypes はアプリが収集するデータの種類、そして NSPrivacyAccessedAPITypes が今回の主役で、Apple が指定する「commonly used APIs」を使う場合の理由を宣言する配列です。

Required Reasons API として現時点で対象となっているのは、File timestamp APIsSystem boot time APIsDisk space APIsActive keyboard APIsUser defaults APIs などのカテゴリです。各カテゴリにはあらかじめ用意された理由コード(例: User Defaults APIs には CA92.11C8F.1C56D.1AC6B.1 といった ID)が割り当てられ、複数を配列で宣言できます。

実際のファイルはこういう形になります。

<!-- PrivacyInfo.xcprivacy の最小実装例 -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>NSPrivacyTracking</key>
  <true/>
  <key>NSPrivacyTrackingDomains</key>
  <array>
    <string>googleads.g.doubleclick.net</string>
  </array>
  <key>NSPrivacyCollectedDataTypes</key>
  <array/>
  <key>NSPrivacyAccessedAPITypes</key>
  <array>
    <dict>
      <key>NSPrivacyAccessedAPIType</key>
      <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
      <key>NSPrivacyAccessedAPITypeReasons</key>
      <array>
        <string>CA92.1</string>
      </array>
    </dict>
    <dict>
      <key>NSPrivacyAccessedAPIType</key>
      <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
      <key>NSPrivacyAccessedAPITypeReasons</key>
      <array>
        <string>C617.1</string>
      </array>
    </dict>
  </array>
</dict>
</plist>

注意したいのは、NSPrivacyAccessedAPITypeReasons の値は理由コードであって、自由記述ではないという点です。User Defaults APIs の場合は CA92.1(同じアプリ内での読み書き)、AC6B.1(管理者からの設定取得)など、ユースケースごとに ID が決まっています。Claude Code に生成してもらうときは、後述するように Apple 公式の理由コード一覧をプロンプトに含めておくのがコツです。

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

この記事の続きを読む

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

この記事で得られること
Apple Privacy Manifest と Required Reasons API の関係を、個人開発者が現場で必要な粒度だけ抜き出して整理できます
依存ライブラリの追加・更新時に Privacy Manifest の追従漏れを検出する Claude Code ワークフローを、実コマンドつきで持ち帰れます
App Store Connect の申請拒否ログから差分パッチを生成し、Privacy Manifest を更新して再申請するまでの導線を再現できます
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Claude Code2026-07-08
自コードの Required Reason API 申告漏れを Claude Code で棚卸しする
PrivacyInfo.xcprivacy の理由コードは、依存ライブラリだけでなく自分のコードにも必要です。個人開発の壁紙アプリで申告漏れを見つけた経験から、Swift ソースを走査して該当 API と理由コードを突き合わせる Claude Code ワークフローをまとめます。
Claude Code2026-09-04
Claude Code に project.pbxproj だけは直接触らせていません
Xcode のプロジェクトファイルは、開けなくなる壊れ方より開けてしまう壊れ方のほうが高くつきました。直接編集をやめてスクリプト経由に寄せるまでに測ったことと、いま引いている線を書き残します。
Claude Code2026-07-06
同意ダイアログより先に広告SDKを初期化していた — Claude Code で ATT と AdMob の順序を直す
起動と同時に広告SDKを開始すると、ATT の同意が取れる前に IDFA が空のまま初期化され、フィルレートは正常なのに計測だけが薄くなります。散らばった初期化順序を Claude Code で洗い出し、ATT の解決を待ってから広告を開始する形へ直した実装を共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます