◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-05-23上級

Rork 生成 Expo アプリの Privacy Manifest を SDK 連鎖まで監査する — 提出前1日で洗い切る個人開発者の手順

Rork が生成する Expo アプリの依存 SDK を Privacy Manifest 観点で全数監査する手順です。Required Reason API の事前検出、ITMS-91053 と ITMS-91061 の切り分け、npm では見えない Pod を Podfile.lock から拾う照合まで、個人開発の運用としてまとめました。

Privacy Manifest4SDK監査Required Reason API4Rork585Expo219App Store審査8ITMS-91053ITMS-91061個人開発218

✦ プレミアム記事

提出ボタンを押した数時間後に、App Store Connect から「ITMS-91053: Missing API declarations」とだけ書かれたメールが届いた朝がありました。壁紙アプリの小さな更新で、前の版はそのまま通っていたものです。私は個人で壁紙アプリと癒し系の音源アプリを長く運用しておりますが、2024 年に Privacy Manifest が必須化されてから、この種の差し戻しに当たる回数が一気に増えました。

ここで一番こたえたのは「自分が書いたコードのせいではない」ことでした。Rork や Expo が読み込むネイティブライブラリの奥深く、自分が触ったことのない SDK の中で UserDefaults が呼ばれていて、その宣言が一枚抜けているだけで提出全体が止まってしまいます。Apple の自動チェックは機械的で、しかも理由が表に出てくるまでに数時間かかります。事後対応ばかりしていると、月のリリース計画がじわじわ崩れていくのです。

この記事は、その「事後対応モード」から「事前監査モード」へ移行するための実用手順をまとめたものです。Rork で生成した Expo / React Native アプリを前提に、提出 1 週間前の半日〜1 日で SDK 連鎖を全数洗うフローを示します。読み終わったあとに、npm ls と find だけで実用的な監査スクリプトを 1 本作れるところまで持っていきます。

なぜ「リジェクト後対応」では遅いか

Required Reason API の事後対応は、見かけより重い作業です。1 回目のリジェクトを受けてから対応すると、最低でも次のサイクルが回ります。

まずリジェクトメールが届くまでに自動審査で 2〜6 時間。原因 SDK を突き止めるのに 1〜3 時間。PrivacyInfo.xcprivacy の編集と EAS Build のやり直しに 30 分〜2 時間。再アップロードとプロセスが終わるまでにさらに 1 時間。順調にいって半日、悪くて 1.5 日が消えます。

私の場合、2024 年の春にこれを 3 回続けてやりました。AdMob を入れる前は通っていたビルドが、AdMob を足したとたんに UserDefaults 系の Required Reason 違反で返ってきます。RevenueCat を追加すると、今度は NSPrivacyAccessedAPICategoryDiskSpace の宣言が要ります。SDK を 1 個入れるたびに 1 回差し戻され、リリース予定がまるごと 1 週間後ろへずれました。

事前監査に切り替えてから、私の個人開発のリリースサイクルでは ITMS-91053 のリジェクトはほぼゼロになりました。事前監査が「審査運に賭ける作業」を「再現性のある工程」に変えてくれたわけです。

SDK 連鎖の正体を最初に把握する

Privacy Manifest は階層構造を持ちます。アプリ本体の PrivacyInfo.xcprivacy 1 枚で済むケースはほぼなく、ネイティブモジュールごとに同じファイルが必要になります。Apple の判定はビルドされた .ipa の中身全体に対して行われるため、依存 SDK のどこか 1 枚でも未宣言だと全部落ちます。

Rork が生成する典型的な Expo アプリの構造は、おおよそ次の 3 階層になっています。

  • アプリ本体(app/ 配下と app.json から生成される iOS プロジェクト)
  • Expo SDK(expo-* 系モジュール、約 20〜40 個)
  • サードパーティ React Native ライブラリ(広告・課金・分析・ストレージ・通知系、5〜15 個)

このうちアプリ本体は自分で PrivacyInfo.xcprivacy を置けば終わりですが、残りの 2 階層は SDK 提供元が同梱しているかどうかに依存します。2026 年 5 月時点で、Expo SDK 53 系・54 系はほぼ全モジュールが対応済みですが、サードパーティはまだムラがあります。

特に注意すべきは、Expo の Config Plugin で動的にネイティブコードを差し込むタイプのライブラリです。Plugin 経由で追加されるネイティブ参照は EAS Build のたびに生成されるため、ローカルの ios/ フォルダを grep しても見えないことがあります。私自身、expo-notifications の Plugin が出力するファイルに PrivacyInfo.xcprivacy が含まれていないことに気づくのに 1 日かかった経験があります。

✦

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

この記事の続きを読む

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

この記事で得られること
✦Rork 生成アプリの依存ツリーから Privacy Manifest 未同梱 SDK を 30 分以内で全数列挙する具体コマンドが手に入る
✦AdMob・Firebase・RevenueCat・MMKV・Sentry など実運用で詰まりやすい SDK の 2026 年 5 月時点の対応状況早見表が読める
✦提出当日になって ITMS-91053 でリジェクトされるパターンと、リリース 1 週間前に動かす監査スクリプトのテンプレが揃う
✦ITMS-91053 と ITMS-91061 の違い、および npm 名では見えない hermes などを Podfile.lock から拾って Apple の一覧と突き合わせる方法が分かる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ 開発ツール2026-09-03
リンクを押してもアプリが開かないとき、疑うのは assetlinks.json の置き場所より先に署名鍵です
Android App Links が検証されずブラウザに吸われる原因の多くは指紋の食い違いです。keytool の実出力と、手元で照合できる小さな検査スクリプトの実行結果を添えて整理しました。
⬡ 開発ツール2026-08-14
ライセンス表示に載せる依存は、lockfile の dev/prod では決まりません
AI ビルダーが書き出したプロジェクトの依存を実際に分類し、ライセンス表示に載せる範囲をどう決めたかの記録です。copyleft の検出結果と配布物の境界の食い違いを、本番プロジェクトの実データで確かめました。
⬡ 開発ツール2026-10-15
EXPO_PUBLIC_ の値が、開発では読めて本番だけ undefined になる書き方を、変換結果で見分けます
API の URL が開発中は読めるのに、ビルドした途端に undefined になる。原因は process.env の書き方でした。babel-preset-expo の変換結果を開発・本番で並べ、置き換わる書き方と残ってしまう書き方を表にしました。