これまでの道のりを振り返って一区切りついたところで、久しぶりに実機ビルドをしようとしたら、見覚えのある赤いエラーに迎えられました。「証明書」や「プロビジョニングプロファイル」という言葉は知っていても、実際に何が起きているのか長らく理解しないまま「とりあえず再作成」でやり過ごしていたので、今回はきちんと整理してみました。
1. 「有効な署名 ID が見つかりません」で実機ビルドが止まった
数週間ぶりに実機でビルドしようとしたら、Xcodeが次のようなエラーを出して止まりました。
No signing certificate "iOS Development" found
原因は単純で、開発用証明書の有効期限が切れていたことでした。証明書には有効期限があり、Xcodeが自動署名を使っていても、期限が切れると自動更新されずにエラーになると初めて知りました。「一度設定したら終わり」ではなく、時々失効している前提で見に行く必要があるのだと学びました。
2. 証明書とプロビジョニングプロファイルの役割を混同していた
エラーを直そうとして、最初は証明書とプロビジョニングプロファイルを同じものだと思い込んで混乱しました。
証明書: 「あなたが本人である」ことを証明する鍵(Apple Developerアカウントに紐づく)
プロビジョニングプロファイル: 「この証明書とこのApp IDとこの端末なら実行してよい」という許可証
証明書が身分証明書、プロビジョニングプロファイルがその身分証明書を使って入れる場所を定めた入館証のようなものだと整理してから、エラーメッセージがどちらの問題を指しているのか判断しやすくなりました。
3. 「自動管理」に任せていたら逆に分からなくなった
Xcodeの「Automatically manage signing」(自動署名管理)を有効にしていたのですが、任せきりにしていたせいで、いざエラーが起きたときに裏で何が変わったのか全く把握できていませんでした。
Signing & Capabilities タブ
→ Team を選択し直す
→ 一度チェックを外して再度オンにすると、証明書とプロファイルが作り直される
自動管理は便利ですが、エラー時には一度チェックを外してオンに戻す、または「Try Again」ボタンで明示的に再生成させる、という手動介入が必要になる場面があると分かりました。「自動」だからといって完全にブラックボックスにせず、裏で何が起きているかをざっくり理解しておく方が、トラブル時に落ち着いて対応できます。
4. 複数端末で作業していて証明書がバッティングした
Gitのコンフリクトのときと同様、2台のPCで開発していたことが今回も影響していました。片方のMacで証明書を作り直すと、もう片方のMacに古い証明書の情報が残ったままになり、実機ビルド時に不整合が起きていました。
Keychain Access(キーチェーンアクセス)で
古い期限切れの証明書を検索し、削除してから再ビルド
キーチェーンに残っていた古い証明書を削除し、Xcode側で最新の状態を再取得させることで解決しました。複数端末で開発する場合、証明書は「PCごとに独立している」のではなく「Apple Developerアカウントを介して共有される」ため、片方だけ古いままだと不整合が起きやすいのだと理解しました。
まとめ
- 開発用証明書には有効期限があり、時間が経つと自動的に失効する
- 証明書は「本人確認」、プロビジョニングプロファイルは「実行許可」という別々の役割を持つ
- 自動署名管理でも、エラー時はTeamの選択し直しや再生成といった手動介入が必要になることがある
- 複数端末で開発している場合、片方の端末だけ証明書が古いままだと不整合が起きる。キーチェーンの整理も選択肢に入れる
普段は意識しない仕組みですが、一度エラーに遭遇して仕組みを理解しておくと、次に同じ状況になっても慌てずに対応できそうです。
次は、async/awaitに書き換えて分かった非同期処理のつまずきをまとめます。
本記事は生成AI(Claude)を活用して執筆・編集しています。内容は実体験に基づき、執筆者本人が確認・監修しています。


コメント