金曜の夜に Rork Companion で iPhone に転送したアプリを、翌週の火曜に開こうとしたら起動しませんでした。アイコンをタップしても一瞬で閉じる。設定を開くと「このAppはデベロッパを検証できないため開けません」と出ている。手元では動いていたはずのものが、数日置いただけで沈黙する。個人開発を始めた頃の私は、これをアプリのバグだと思い込んで半日つぶしました。
原因はコードではなく、署名の有効期限でした。同じ場面で足止めされている方のために、何が起きているのかと、その場で戻す手順、そして繰り返さないための運用を整理します。
症状 — 「昨日まで動いていたのに開かない」
典型的なパターンは二つあります。
一つ目は、実機に転送した直後に出る「デベロッパを検証できないため開けません(Untrusted Developer)」の表示です。これは初回に一度だけ出ます。
二つ目が厄介で、しばらく(多くは7日ほど)経つと、タップしても起動せずホーム画面に戻される、あるいは「App が利用できなくなりました」と表示される状態です。アイコンは残っているのに中身だけが死んでいます。
コンソールに出るのは、おおむね次のような署名まわりのメッセージです。
The operation couldn't be completed.
(NSCocoaErrorDomain error 4099)
... valid provisioning profile for this executable was not found.「バグを直そう」とコードを追っても、ここは一生直りません。原因が別の層にあるからです。
再現条件 — 無料アカウントで署名しているか
この現象は、有料の Apple Developer Program(年 9)に登録せず、無料の Apple ID(Personal Team)で署名したビルドを実機に入れているときに起きます。Rork Companion で有料アカウント無しに実機テストを回せるのは大きな利点ですが、その署名は無料枠の制約をそのまま引き継ぎます。
無料枠の主な制約は次のとおりです。
| 項目 | 無料 Apple ID(Personal Team) | 有料 Apple Developer Program |
|---|---|---|
| 署名(プロビジョニング)の有効期限 | 約7日 | 1年 |
| 初回起動時の「信頼」操作 | 必要 | 必要(配布方式による) |
| 同時に入れられるApp数 | 3本まで | 実質制限なし |
| TestFlight・本番プッシュ | 不可 | 可 |
| 費用 | 無料 | 年 9 |
つまり「数日で開けなくなる」のは不具合ではなく、無料署名の仕様です。7日を過ぎると署名が失効し、iOS がそのアプリの実行を拒否します。
その場で戻す — 二段構えの対処
1. 初回の「検証できない」表示を通す
転送直後に出る Untrusted Developer は、端末側でデベロッパを信頼すれば消えます。
設定 → 一般 → VPNとデバイス管理(端末により「プロファイルとデバイス管理」)を開き、自分の Apple ID のデベロッパ App を選んで「信頼」をタップします。これで初回起動の壁は越えられます。
一度信頼すれば、同じ Apple ID の別アプリには再度求められないことがほとんどです。
2. 7日で失効したら「再インストール」で署名し直す
期限切れは、信頼の再設定では戻りません。署名をやり直す=ビルドを入れ直すのが正解です。Rork Companion からもう一度実機に転送すれば、新しい有効期限の署名で上書きされ、また開けるようになります。
手元の署名済みビルド(.ipa や embedded.mobileprovision)があるなら、失効日は次のコマンドで確認できます。締め切り前に「まだ何日もつか」を把握しておくと慌てません。
# 展開済みの .app/.ipa 内にある embedded.mobileprovision の失効日を読む
security cms -D -i embedded.mobileprovision \
| plutil -extract ExpirationDate raw -o - -個人開発では、私自身、テスト機に入れたビルドの失効日をメモしておき、期限が近づいたら朝のうちに転送し直す運用にしています。開こうとした瞬間に失効に気づくと、たいてい一番急いでいるときです。
繰り返さないための運用
対処を覚えても、7日ごとに転送し直すのは地味に効いてきます。作業のリズムを崩さないために、私は次のように分けています。
日々の確認は、実機ではなくブラウザのライブシミュレータで回します。レイアウトや画面遷移の大半はここで十分に見えます。実機を使うのは、カメラや触覚、パフォーマンスなど「実機でしか分からないところ」を確かめる要所だけに絞ります。こうすると失効に振り回される回数が減ります。
そして、外部の人にテストしてもらう段や、本番プッシュ・実機課金を試す段に来たら、そこが有料 9 の切り替え点です。無料署名では TestFlight に載せられないので、配布を他人に頼む時点で無料枠の天井に当たります。ここは粘らず、締め切りの数日前に登録を済ませておくのが安全です。審査アカウントの有効化に時間がかかる日もあります。
つまずいたときの見分け方
「開かない」に出会ったら、まずコードを疑う前に一つだけ確認してください。最後に実機へ転送したのはいつかです。7日以上前なら、原因はほぼ署名の失効です。転送し直して開けば確定、それで直らなければ初めてビルドの中身を見にいきます。
私はこの切り分けを覚えてから、同じ表示に出会っても慌てなくなりました。原因の層を取り違えないだけで、半日は救えます。私が最初に溶かした半日が、どなたかの数分になれば嬉しいです。