Privacy report を生成できる Command Plugin を作った

その名の通り。All Swift, no dependencies.

github.com

Privacy report とは、アプリと利用するパッケージが収集しているプライバシー情報を要約した PDF ファイルです。 App Store の Privacy Nutrition Labels に対応しており、 このレポートを見ながらストア上の情報を更新することができます。

Privacy report - Get started with privacy manifests より

レポートは Xcode の Organizer からしか生成することができず、出力も PDF なのでパッケージ更新時の差分比較がしにくいな〜と感じていました。理想はストア上のプライバシー情報が自動で反映されてくれることなのですが、いまのところそうなる気配もなく、ドキュメントにもレポートを参照して設定するといいよというニュアンスなので、

Refer to this report when you provide your app’s privacy details in App Store Connect.

比較しやすいフォーマットのファイルで出力できたらいいなということで作ったのがこのツールです。Xcode で生成するレポートと同じ内容で出力されるはずです(違ったら教えてほしい)。Plist と JSON にひとまず対応しています。SPM の Command plugin 経由で実行できるようにしてあります。

$ swift package plugin --allow-writing-to-package-directory generate-privacy-report --xcarchive-path '/path/to/your/App.xcarchive' --json

JSON だとこんな↓感じで出力してくれます。各プライバシーデータの項目に対して、どの経路で利用されているのかわかるようになっています。

{
  "NSPrivacyCollectedDataTypeAdvertisingData" : {
    "SampleAd_resources.bundle" : {
      "bundlePath" : "SampleApp.app/SampleAd_resources.bundle/PrivacyInfo.xcprivacy",
      "collectionPurposes" : [
        "NSPrivacyCollectedDataTypePurposeAnalytics",
        "NSPrivacyCollectedDataTypePurposeDeveloperAdvertising",
        "NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising"
      ],
      "isLinkedToUser" : true,
      "isUsedForTracking" : true
    },
    "SampleApp.app" : {
      "bundlePath" : "SampleApp.app/PrivacyInfo.xcprivacy",
      "collectionPurposes" : [
        "NSPrivacyCollectedDataTypePurposeAnalytics",
        "NSPrivacyCollectedDataTypePurposeAppFunctionality"
      ],
      "isLinkedToUser" : true,
      "isUsedForTracking" : false
    }
  }
}

その他オプションなどは README に書いてあります。実用的はまだわからないけど、定期配布の時にレポートに差分がでたらPRを作ってくれるとかやれると良さそうとか妄想中です。

ひとまず作ったよ報告でした👋