IPA作成時のエラー「PLA Update available」の解決方法
問題説明
iOSアプリをApp Storeに提出するためにIPAファイルを作成する際、以下のエラーが発生する場合があります:
error: exportArchive: Unable to process request - PLA Update available
error: exportArchive: No signing certificate "iOS Distribution" found
この問題は通常、以下の状況で発生します:
- Apple Developer Programのライセンス契約(Program License Agreement)が更新された
- アカウントの所有者(Account Holder)が新しい契約に同意していない
- 未承認の状態ではコードサイニング証明書(iOS Distribution)が利用不可になる
- Xcodeの再起動や証明書の再インストールでは解決しない
根本的な解決手順
macOS環境での解決策(最新のXcode推奨)
重要
アカウントの所有者(Account Holder)のみが操作可能です。チームメンバーや管理者では解決できません。
Apple Developerアカウントにログイン
Apple Developerコンソールにアクセス契約更新画面を開く アカウントホーム →「契約、規約、および同意証」セクション
保留中の契約を確認 「レビューが必要」または「更新が必要」ステータスの契約があるかチェック
契約内容に同意
- 「レビュー」ボタンをクリック
- 契約全文を確認
- 最後までスクロールし「同意する」を選択
- 電子署名の手続きを完了
Xcodeの完全再起動
bash# ターミナルで強制終了 killall Xcode
プロジェクトのクリーン Xcodeで ⇧ + ⌘ + K を押してプロジェクトをクリーンビルド
よくある質問(FAQ)
契約同意後もエラーが消えない場合
- Keychain Accessで「Apple Worldwide Developer Relations Certification Authority」証明書を削除
- Apple証明書ダウンロードサイトから最新証明書をインストール
- Xcode → Preferences → Accounts → Apple IDから再ログイン
チームのアカウント所有者が不明な場合
- Apple Developer Membershipサイトにログイン
- 「Members」タブから「Account Holder」権限を持つメンバーを確認
- 該当者に契約更新を依頼
技術的背景と予防策
エラーの発生メカニズム
- Appleが開発者契約(PLA)を更新
- システムが未承認アカウントの署名機能を停止
iOS Distribution
証明書が一時的に無効化される- 開発者コンソールとXcodeとの同期が切断状態に
定期チェックスクリプト(Python)
毎日契約更新を自動チェックするスクリプト:
import requests
from datetime import datetime
def check_pla_update():
# Apple Developer APIエンドポイント(シミュレーション)
response = requests.get('https://api.example.com/apple/agreements')
agreements = response.json()
# 未承認契約のチェック
pending = [a for a in agreements if a['status'] == 'Pending']
if pending:
print(f"[{datetime.now()}] 更新が必要な契約が{pending}件あります")
# Slack通知や自動メール送信を追加可能
else:
print(f"[{datetime.now()}] 問題なし")
if __name__ == "__main__":
check_pla_update()
結論とベストプラクティス
定期的な契約確認
Appleリリースサイクル(WWDC後など)に注意複数メンバーでの対応
Account Holderが不在時のために代理承認者を設定:アカウント設定 → 契約の代理承認を有効化
自動通知システムの活用
Apple Developersコンソールの通知設定で「契約更新」を有効化
この問題はApple IDの権限レイヤーで発生するため、エラーメッセージ通りに証明書を再発行しても解決しません。契約更新問題はAccount Holderの承認後、最大24時間かかるケースがありますが、通常は即時反映されます。