1
/
5

iOSアプリ|プライバシーマニフェスト対応要否の確認方法

前の記事はこちら

『iOSアプリ|そろそろ大丈夫?プライバシーマニフェスト対応』
https://www.wantedly.com/companies/company_2563374/post_articles/896115

Apple公式からのお知らせ

『リマインダー:アプリ提出時のプライバシー要件が5月1日から適用されます』
https://developer.apple.com/jp/news/?id=pvszzano

手探りで確認するとしたら...

Xcodeの検索機能を用いてCoreAPIでピックアップされているモノを全て検索すれば、テキストベースで目視確認できます。各自でチェックシートを作り、creationDateやfstatを探し出せば網羅できるはずです。

サードパーティーのライブラリもpod installしたのであればPodfile.lockを確認すれば導入状況をチェックできるはずです。

ですが、規模の大きなアプリケーションとなるとチェック漏れ防止のためにも上記手段は避けたいところです。何時間も掛かる訳だし、「ボーッとした瞬間」に確認漏れのリスクが高まります。

個人的には規模に限らず、闇雲にチェックする方法は避けた方が良いと思っています。
−−−−というか、世界中のエンジニアがそう思ってるはずです。。。

待ってました自動チェックツール!!

GitHubで機械的にチェックできるソースを公開してくれています。(ありがとぉぉぉぉWooderさん!!)

GitHub - Wooder/ios_17_required_reason_api_scanner: A simple shell script collection to scan your Xcode Swift project for required reason API usage to ensure privacy compliance and to simplify the creation of privacy manifests.
A simple shell script collection to scan your Xcode Swift project for required reason API usage to ensure privacy compliance and to simplify the creation of privacy manifests. - Wooder/ios_17_requi...
https://github.com/Wooder/ios_17_required_reason_api_scanner
【 "ios_17_required_reason_api_scanner" を利用する注意点】
Appleが公言しているサードパーティライブラリ、CoreAPIはカバーできています。(記事執筆時点)
このツールを利用すれば審査に100%通るという保証はありませんのでご承知おきください。

ちなみに、私の仲間うちでは「公言されていないライブラリも指摘を受けた」との報告がありました。
厳しい審査員に当たってしまったのかもしれないですね。。。
-----------------------------------------------------


実際に使ってみよう

まずはXcodeでプロジェクトを用意しましょう。WelcomeウィンドウからCreateメニューで作ったばかりのプロジェクトをWorkフォルダに設置しました。


次にターミナルを使ってGitのcloneコマンドでリポジトリをローカルにダウンロードします。clone先はXcodeのプロジェクトと同じく、Workフォルダに設置しました。

[ターミナルコマンド]
cd /Users/Shared/work/ # 場所は任意のフォルダでOKです。
git clone git@github.com:Wooder/ios_17_required_reason_api_scanner.git


では、新品箱出し状態のTest001プロジェクトをツールでスキャンしてみましょう。以下はターミナルでテキストベースのスキャンを行う例です。

[ターミナルコマンド]
cd ./ios_17_required_reason_api_scanner
sh required_reason_api_text_scanner.sh ../Test001

正常にスキャンが走りました。何もCoreAPIやサードパーティライブラリを導入していないので、スキャン結果が空っぽですね。プライバシーマニフェスト対応が必要無いということが確認できました。


次に、検索結果が出てくる表示パターンが気になってきますね。
XcodeでTest001プロジェクトを修正します。よく利用されている「UserDefaults」を記述してみましょう。

[ContentView.swiftに追加したコード]
init() {
UserDefaults.standard.object(forKey: "")
}


再度ターミナルでスキャンします。

[ターミナルコマンド]
cd ./ios_17_required_reason_api_scanner
sh required_reason_api_text_scanner.sh ../Test001

「UserDefaults」がヒットしました。「Line numbers」でコードの行番号まで表示されています。
ちなみにCoreAPIをコメント化していてもスキャンでヒットします。不要なコメントは削除しましょうね。

ーーということで以上のスキャン結果から、

  • どのファイルが
  • 何のAPIを使用していて
  • マニフェストにAPI使用理由を書かないとリリース審査で落ちる

ということが分かりました。
的確ですね...自分もこのツールを使用してチェックしたかったです...

次の記事ではプライバシーマニフェストファイルをプロジェクトに追加して何を記入すれば良いのかを記事にしてみたいと思います。



代表がエンジニア|経験者
SESだからという言葉で片付けず、本当に解決するべき課題を一緒に考えます!
メーロンは「エンジニアが作ったエンジニアが活躍するためのSES」です。 どのようにしてエンジニアが活躍できる環境を作っているのかをご紹介します。 ◆案件を決定するまで エンジニアが求めているものを実現できるように、ヒアリングを行なった上で案件を探します。 PHP、Javaを用いた開発案件やインフラ運用が中心ではありますが、案件ありきではないため、業界は特化していません。 ・スキルアップやキャリアアップ 身につけたいスキルやなりたい姿に合わせて、それが実現しやすいような環境を探します。メンバーの中には、インフラエンジニアから開発エンジニアになった方もいます。お客様先でインフラ案件に参加しながら開発案件にも携わり、スキルを身につけられたことで、現在は開発エンジニアとして活躍中です。 ・給与 入社歴や経験年数ではなく、クライアントからの評価で給与が決まります。自分がいくらの単金で働いていて、実際にどのくらい給与として入ってくるのかを契約書で確認した上で、納得して案件に参加いただきます。 ・ワークライフバランス 子育てなど家庭の事情を考慮し、リモートが多い案件を選んだり、子どもがいることをお客様に事前に伝えておいたり、保育園へのお迎えもしやすい環境づくりを行います。現場で調整ができれば、自由に休んでいただいて大丈夫です。調整がしづらい場合には、営業から話を伝えます。 ◆もし合わなかったら? 仕事をスタートして働きにくさを感じた場合には、その案件から抜けていただいても大丈夫です。もちろんお客様とのご契約は守りますが、優先するのはメンバーが納得して働けているかどうか。なぜ合わないのかをヒアリングした上で、どのような働き方が良いかを一緒に考えていきます。 また当社では、医療系アプリケーション開発や求人サイトパッケージソフト開発など、自社開発も行なっています。本人の希望次第では、こちらに関わっていただくことも可能です。
メーロン株式会社
If this story triggered your interest, why don't you come and visit us?
夢を叶えたい方、大歓迎|あなたは3年後どんなエンジニアになりたいですか?
メーロン株式会社's job postings
4 Likes
4 Likes

Weekly ranking

Show other rankings
Like junichi ito's Story
Let junichi ito's company know you're interested in their content