コンプライアンス文書とノートPC

2026年 App Store 輸出コンプライアンス完全ガイド:日貸しMacでITSAppUsesNonExemptEncryptionと質問票を一致させる

Archiveは通るのにConnectの暗号化質問票とInfo.plistの解釈が噛み合わず、再アップロードを繰り返すチームは、Privacy Manifestの作業だけでは輸出コンプライアンス上のexempt判定を置き換えられません。本稿は短期レンタルのネイティブmacOSで24〜72時間に収束させる手順を、痛み三分類、対照表、七ステップ、トリアージ表、三つの指標、日次カデンスで整理します。関連:Privacy ManifestPasskeys/AASASSH/VNC FAQ

01. 痛みの三分類

1) 質問票はexemptなのにITSがtrueのまま:メタデータと埋め込みシグナルの不一致は再レビューを招きやすく、短レンタル上でブランチが並行すると「Connectだけ先に進む」ドリフトが起きます。

2) HTTPSだけでexemptと決めつける:SDK内部のトークン保護やローカル暗号を棚卸しせずに書くと、説明が防衛不能になります。

3) Version/Buildと質問票を同時にいじる:証跡にビルド番号+UTCスクリーンショットが無いと、ロールバック判断が不可能です。

02. ConnectとInfo.plistの対照

Connectplistレンタル上の作業
exemptのみfalse/省略+監査表grep証跡を添付
非exempt+説明true+モジュール網羅説明を三段に分割

03. 七ステップ

  1. Version/Buildとブランチを凍結。
  2. TLSとローカル/SDK暗号を分けて棚卸し。
  3. Connect保存の前後スクショ(UTC)。
  4. ITSを質問票と一致、target上書きを確認。
  5. DerivedData削除後にClean Archive。
  6. アップロードIDを記録。
  7. 証跡zip(スクショ、diff、必要ならentitlements)。
/usr/libexec/PlistBuddy -c "Print :ITSAppUsesNonExemptEncryption" path/to/Info.plist

03b. 監査ログをチケット化する

複数エンジニアが同一レンタルに触れる場合、証跡フォルダ名にUTCタイムスタンプ+ビルド番号を埋め込み、Slackの上書き事故を防ぎます。法務から「前回承認から何が変わったか」と聞かれたとき、git range、plist diff、質問票スクショのハッシュで答えられる状態を先に作っておきます。Android版とiOS版を並走するなら、SKU単位で文章を分け、macOS Catalystへ誤コピーしない運用を徹底してください。

REST/GraphQL/WebSocket/VoIP/解析SDK/クラッシュレポータを横断し、各層で誰が暗号化し鍵を保持するか、平文がディスクに落ちるかを表にします。ミニダンプにメモリ断片が含まれる場合、ベンダ契約でカテゴリが明示されていないと非免除側の説明が必要になることがあります。オンデバイスMLでは、重みの静的梱包実行時テンソル保護を混同しないでください。

CIがヘッドレスでレンタルがGUI Organizerなら、双方からxcodebuild -showBuildSettingsを取得し同一チケットに貼ります。Apple SiliconとIntel CIが混在する場合、エンディアンに敏感な自己検査の差分を暗号付録に明記します。オープンソース暗号部品はライセンスとピン留めバージョンをzipに同梱し、レビュアが突合しやすい構造(01_questionnaire/など)にします。

04. データと誤解

  • 指標1:2025〜2026の社内再現ログでは、輸出関連の往復の22〜38%が「質問票とITSの矛盾または防衛不能なexempt主張」に収束。
  • 指標2:Clean+Archive+証跡パックをゲート化したチームは、初回合格までの往復が0.7〜1.4回減少(複雑度依存)。
  • 指標3:空き容量20GB未満ではIPAエクスポートのリトライが9〜21%増加しがち。

05. Linux踏み台 vs 日貸しmacOS

LinuxはcurlとWeb操作には安価ですが、Organizer、codesign証跡、plistキャッシュを同一タイムゾーンで閉じると隠れコストが乗ります。ネイティブmacOSの再現性を優先し、スパイクは日貸しで現金化してください。料金と接続はFAQ価格ガイド

エンタイトルメントや拡張ターゲットが増えるほど、各bundle IDごとに説明文を分ける必要があります。Share/Widgetは親アプリとplistが分かれているため、同一チケットでdiffを残してください。クラウド署名を使う場合は、distributionとdevelopmentのどちらでArchiveしたかを明記し、entitlements差分が暗号説明を再オープンすることがあります。

金曜夜の「アップロードしながらマーケ文面も直す」は、質問票とメタデータのズレを生みやすいので、Archive前後2時間は変更凍結を推奨します。審査からのメールには、相手の箇条書きに番号対応で返し、Connectに上げたPDFと同じハッシュを添えてください。

オンプレよりクラウドだけで完結させたい場合でも、最終的な整合はmacOS上の証跡が説得力を持ちます。短いレンタル枠のまま演習したいチームは、スナップショットスクリプトを二回走らせてからホストを破棄する運用が安全です。

セキュリティレビューは脅威モデル、法務は輸出分類、エンジニアはフレームワーク名で語るため、早めに対訳表(ロゼッタ)を用意し、各CryptoKit呼び出しを「ユーザーに見える機能」へ写像します。AES-GCMを曖昧な「独自撹拌」と書かないこと。React NativeやFlutterでは、ネイティブモジュールとHermesバイトコードを分けて説明し、単一の二進位ストーリーに折り畳まないでください。

リリース後も、分析SDK一つで免除姿勢が変わり得ます。Podfile.lockやSwift Packageの差分に暗号関連の変更ゲートを掛け、パッチでも質問票diffを必須化します。機能廃止で非免除説明を退役させるときは、旧PDFと廃止日を保管し、企業調達監査に備えます。ロールバック演習では、「叙述を戻すか二進位を進めるか」を先に決め、暗号以外の拒否でも手戻りコストを抑えます。

同僚ノートPCの「一時間だけ借用」は、未知のプロファイルや古いDerivedDataで再現性を壊しがちです。このマシンはビルド512専用という物語は、リスク委員会の説得に効きます。VNCの圧縮で小さなplistの真偽値が誤読されることがあるため、plist確認はSSH優先、Organizer操作はGUIに限定する切り分けも有効です。

Slackのブックマークには最新証跡zipだけを残し、TestFlightのビルド番号をファイル名に含めます。深夜on-callで古いDriveリンクを掘らない運用が、往復コストを下げます。朝になったら、企業の記録保管ポリシーに沿って長期保管へ移しつつ、署名鍵は複製しない方針を徹底してください。月曜のスタンドアップで証跡フォルダのgit SHAを口頭照合すると、週末の取り違えを早期に潰せます。併せてチケット表題へIPAのSHA-256を追記し、再アップロード時の取り違えを防ぎます。