Visual Studio 2022 の .NET MAUI Hot Restart で iOS 実機へデプロイすると、Apple の契約もキーも有効なはずなのにエラーで止まることがあります。多くは証明書ではなく、アカウント種別(Individual / Enterprise)と App Store Connect API キー周りの取り違えが原因です。現場で迷わない切り分けと再設定手順をまとめます。
まず確認:Hot Restart を使える Visual Studio と前提条件
最初に押さえたいのは、「そもそも Hot Restart が使える環境かどうか」です。Hot Restart は Visual Studio 2022 での利用を前提に説明されており、新しい Visual Studio では Hot Restart がサポートされない旨が明記されています。もし Visual Studio のバージョンを上げた直後から急に動かなくなった場合、設定以前に“機能の提供範囲”が原因になっているケースがあります。
Hot Restart の基本要件は、ざっくり言うと「Visual Studio 2022(一定バージョン以上)」「iTunes」「有料の Apple Developer Program」です。iPhone/iPad を USB 接続して、Windows 側からデバッグビルドを実機へ差し込む仕組みなので、端末認識(iTunes)と Apple 側の開発者権限(有料契約)が両方そろっていないと先に進めません。
| チェック項目 | OK の目安 | 確認方法 | つまずきやすい点 |
|---|---|---|---|
| Visual Studio | Visual Studio 2022(例:17.3 以上)で Hot Restart が有効 | ヘルプ → バージョン情報/オプションで Hot Restart が表示される | 新しい VS へ移行すると Hot Restart 自体が非対応のことがある |
| iTunes | Windows にインストール済み | iTunes を起動して端末が認識されるか | インストールしていても初回起動・追加プロンプト未完了で端末検出に失敗する |
| Apple Developer Program | 有料契約が有効 | Apple 側の開発者ポータル/App Store Connect で契約状態を確認 | 契約更新直後や同意未完了(利用規約/契約)で API 側が止まることがある |
| 接続端末 | 64-bit iOS デバイスが USB 接続で認識 | 端末側で「このコンピュータを信頼」を許可 | USB ケーブル品質/ハブ経由/端末側の信頼ダイアログ見逃し |
なお、Microsoft Learn では「Visual Studio 2026 では Hot Restart はサポートされない」「新しい Visual Studio では Pair to Mac が推奨」という注意書きがあります。Hot Restart 前提の記事や動画を見て試したのに、手元の VS バージョンが違っていた――というのは非常に多い落とし穴です。
Hot Restart セットアップの流れ(Visual Studio 2022)
設定の全体像が見えていないと、「どこで何を入れるべきか」が混乱しがちです。Hot Restart のセットアップは、だいたい次の流れで進みます。
- Visual Studio のデバッグターゲットで iOS Local Devices → Local Device を選ぶ
- セットアップウィザードが起動する
- iTunes が無ければインストールを促される
- iOS 端末を USB 接続し、端末側で「信頼」を許可する
- サインインで Individual / Enterprise を選び、必要情報を登録する
- 完了後、プロジェクト側で iOS の署名設定(自動プロビジョニング)へ進む
Hot Restart の制約も把握しておく
Hot Restart は便利ですが、Mac での通常ビルドの代替ではありません。デバッグ構成のみ、静的ライブラリや XCFramework 等が未対応など、制約があります。ここを知らずに「起動しない=キーが悪い」と誤認すると、切り分けが遠回りになります。
「Apple キーが有効なのにエラー」の正体:キーの種類を分けて考える
トラブル相談で頻出するのが「Apple のキー(ID)は有効です」という表現です。実際には、Hot Restart 周辺で出てくる“キー/ID”は複数あり、どれが壊れているのかで対処がまったく変わります。
| 呼ばれがちなもの | 実体 | 使われる場面 | よくある勘違い |
|---|---|---|---|
| Apple ID | メールアドレス+パスワード(2FA 含む) | Apple Developer / App Store Connect へのログイン | Apple ID が通る=Hot Restart の API 認証も通る、ではない |
| App Store Connect API キー | Key ID / Issuer ID / .p8(秘密鍵) | Individual アカウントで Hot Restart にサインインするときに要求される | 証明書(p12)やプロビジョニングと同じだと思ってしまう |
| 署名用証明書 | Apple Development / Distribution 証明書(秘密鍵付き) | アプリ署名・端末インストール | 証明書を作り直せば API 認証エラーも直る、と思いがち |
| プロビジョニングプロファイル | 端末 UDID や App ID を含む設定ファイル | 実機デプロイに必要 | 原因が API キーでも「プロビジョニングが悪い」と見当違いの修正をしやすい |
今回の「Apple キーは有効なのにエラーが出る」系で多いのは、Apple ID 自体は問題ないのに、Hot Restart が必要としている App Store Connect API キーが無効(失効/権限不足/取り違え)になっているケースです。特に Individual アカウントでは“Apple ID でログイン”ではなく、“API キーを入力”するルートを選ぶ必要があります。
結論:Individual(個人)と Enterprise(企業)で同じ「キー運用」はしない
質問の核心である「Individual / Enterprise で同じキー運用で良いのか?」については、答えは明確に 同じではありません。Hot Restart のセットアップ手順自体が、個人アカウント向けと企業向けで分岐します。
| 区分 | 代表的な契約 | Hot Restart のサインイン | 必要になるもの | ハマりどころ |
|---|---|---|---|---|
| Individual(個人) | Apple Developer Program(個人/小規模) | App Store Connect API キーを入力 | Key ID / Issuer ID / .p8(秘密鍵) | キーの失効・権限・入力ミスで「トークン期限切れ」系エラーが出やすい |
| Enterprise(企業) | Apple Developer Enterprise Program など | 状況によってはパスワードでログイン | Apple ID 資格情報、チーム所属 | App Store Connect API の仕組み自体が使えない前提がある |
Apple 側のドキュメントでも、Enterprise Program の場合は App Store Connect API ではなく Enterprise Program API を使う旨が示されています。また、App Store Connect API キー(個人/チームキー)の機能は Enterprise Program API では利用できない、という注意が入っています。つまり「Enterprise なのに App Store Connect API キーで頑張る」方向に寄せると、そもそも土台が違う可能性があります。
エラー文の読み方:「期限切れ」は API キーではなく“Bearer Token”の話のことが多い
Visual Studio 側のエラーで特に多い文言が、次のような「Bearer Token(署名付きトークン)」に関するものです。
Authentication credentials are missing or invalid. Provide a properly configured and signed bearer token, and make sure that it has not expired.
ここで注意したいのは、「API キー(.p8)が期限切れ」というより、API キーから生成される JWT(Bearer Token)が無効扱いになっている可能性が高い点です。App Store Connect API では、API キー(.p8)を使って JWT を作り、その JWT を短い有効期限で使い回します。トークンの有効期限が長すぎると無効になる、という仕様もあるため、PC の時刻ずれや入力ミスで「期限切れ」扱いになります。
| エラーの雰囲気 | 起きていること | 最短の対処 | 補足 |
|---|---|---|---|
| bearer token / expired | JWT が無効(署名不正、時刻、キー不一致) | API キーを作り直し、VS 側の登録も入れ直す | Windows の時刻自動設定がズレていると再現しやすい |
| missing or invalid credentials | Key ID / Issuer ID / p8 が合っていない、または権限不足 | 入力値の突合とロール見直し | チーム/個人キーの種別が前提と違うと通らないことがある |
| チームが選べない | 所属チームが取得できない | アカウント種別の見直し、チーム招待の再確認 | 企業アカウントでよく起きる |
Individual(個人)アカウントの解決手順:App Store Connect API キーを新規に作り直す
Individual(個人)で Hot Restart を使う場合、Visual Studio のセットアップ手順として「App Store Connect API キーを作成して入力する」ことが案内されています。エラーが出続ける場合は、既存キーが失効している(Revoke された)、権限が足りない、または値が取り違えられている可能性が高いので、最短で切り分けるなら“作り直し”が有効です。
App Store Connect 側でやること
- App Store Connect にログインし、「Users and Access」から API キー管理画面へ進む(Integrations → App Store Connect API)
- 初回の場合は API 利用のアクセス申請(Request Access)が必要なことがある
- チームキー(Team Keys)または個人キー(Individual Keys)を生成する
- .p8(秘密鍵)をダウンロードして安全な場所に保管する(ダウンロードは基本的に一度きり)
- Issuer ID と Key ID を控える
Apple 側の案内では、チームキーは Account Holder / Admin が作成でき、個人キーはユーザー単位で作成・失効できる、と整理されています。また、個人キーは「1ユーザーにつき有効なキーは1つ」という制約があるため、過去に作ったキーを放置していると作成できない/意図せず失効している、といった事故が起きます。
Visual Studio 側でやること(Hot Restart への登録)
Hot Restart のセットアップウィザードでは、Individual と Enterprise でサインイン導線が分かれています。個人アカウントの場合は「Sign in with an individual account」側を選び、App Store Connect API キーの情報を入力します。
| Visual Studio の入力欄 | 何を入れる? | 入手元 | よくあるミス |
|---|---|---|---|
| Name | 自分が識別しやすい名前(任意) | 任意 | ここは認証に直接関係しないので、他項目と混同しない |
| Issuer ID | Issuer ID(発行者 ID) | App Store Connect の API 画面 | 別チームの Issuer ID を貼ってしまう |
| Key ID | Key ID | App Store Connect の API 画面 | p8 ファイル名に含まれる ID と取り違える/コピー漏れ |
| Private key path | ダウンロードした .p8 ファイル | App Store Connect から取得 | 別キーの p8 を選ぶ、またはファイルを紛失してしまう |
設定を入れ替えるときは、Visual Studio に残っている古いアカウント情報が邪魔になることがあります。うまくいかない場合は、いったん Apple Accounts から既存の登録を削除し、Visual Studio を再起動してから新しいキーで再登録すると切り分けが早いです。
Hot Restart が無効化されていないかも確認
環境を移行した場合など、Hot Restart がオプションで無効になっていることがあります。Visual Studio 2022 のオプションで Hot Restart を有効化できる導線が案内されているため、ウィザードが出ない/選べないときはここも見ておくと安全です。
補足:API キー作り直しで直らないときの実務チェックポイント
「新しいキーを作ったのに同じエラーが出る」場合、原因はキーそのものではなく、周辺条件にあることが多いです。現場で再現が多いポイントを、上から順に潰せる形にまとめます。
| チェック | 症状 | 確認ポイント | 対処の方向性 |
|---|---|---|---|
| App Store Connect API のアクセス申請 | キーはあるが API が通らない | Account Holder が Request Access を実施済みか | 未申請なら申請→承認待ち(審査が入る) |
| ロール(権限) | 認証は通るが操作が失敗する | Team Key の Access(ロール)設定 | 必要権限を満たすロールで作り直す |
| 規約・契約の同意 | プロビジョニングで不可解に失敗 | Apple Developer / App Store Connect で未同意の契約がないか | ブラウザでサインインして同意を完了する |
| PC の時刻ずれ | 「expired」系が繰り返す | Windows の時刻自動設定/時刻同期 | 時刻同期を直してから再試行 |
| ネットワーク(プロキシ等) | 社内回線でだけ失敗 | SSL インスペクション、プロキシ設定 | 一時的に別回線で検証し切り分け |
| 端末検出(iTunes) | ウィザードで端末が見えない | iTunes が端末を認識しているか | ケーブル/ポート変更、iTunes 初回起動の確認 |
特に見落としやすいのが「規約・契約の同意」です。Visual Studio 側の自動プロビジョニングは Apple 側の契約状態の影響を受けるため、Apple Developer と App Store Connect の双方で未同意がない状態にしておく必要があります。
Enterprise(企業)アカウントのポイント:パスワードログインが求められる理由
Enterprise で迷いやすいのは、「同じ Apple の画面なのに、個人と違って API キー入力欄が出ない/逆に API キーを入れろと言われる」など、導線が揺れることです。Hot Restart の案内では、個人アカウントとは別に「enterprise account でサインインする」リンクが用意され、そこで資格情報を入力する流れが説明されています。
加えて、Apple 側の整理として、Enterprise Program の場合は App Store Connect API ではなく Enterprise Program API を使う旨が示されています。App Store Connect API の個人/チームキーは Enterprise Program API では使えないため、企業契約の種類によっては「App Store Connect API キーを準備する」という発想自体がズレていることがあります。
Enterprise でよくある“チームが出ない”問題
企業アカウントでは、Visual Studio 側で「Select a team」が空になったり、チームが取得できないケースが報告されています。原因としては、単純な招待未承認だけでなく、そのチームを代表する Apple Developer アカウントでログインしていないことが影響することもあります。社内で役割分担している場合は、アカウントホルダー(Team Agent)側での設定・確認が必要になる場面があります。
「証明書/プロビジョニング」の直しどころは最後に回す
Hot Restart のエラーを見ると、つい証明書やプロビジョニングプロファイルを疑いたくなります。ただし、今回のように「Apple の契約は有効」「キーも有効」と感じているのに認証で落ちる場合は、まず API キーとアカウント種別の整合を取るのが近道です。
Visual Studio の自動プロビジョニングは、Apple アカウントが正しく追加されていることを前提に、署名 ID・App ID・プロビジョニングを自動で作成/更新します。逆に言えば、アカウント認証が不安定な状態だと、証明書をいくら作り直しても根本解決になりません。
| 切り分け順 | 見るべきもの | 狙い | ここが OK なら次へ |
|---|---|---|---|
| 最優先 | アカウント種別(Individual / Enterprise) | 入口の前提違いを潰す | 正しい導線でサインインできる |
| 次 | App Store Connect API キー(Individual)/ 資格情報(Enterprise) | 認証が安定する状態を作る | ウィザードが最後まで完了する |
| その次 | 自動プロビジョニング設定(iOS Bundle Signing) | チーム選択と署名の自動生成 | Provisioning が成功する |
| 最後 | 証明書/プロファイル/Capabilities | アプリ固有要件の調整 | 端末で起動・デバッグできる |
安全に運用するためのキー管理(再発防止)
Hot Restart が動いた後に重要になるのが「キーの扱い方」です。特に App Store Connect API の .p8 は秘密鍵そのものなので、漏えいすると第三者が App Store Connect API を操作できるリスクがあります。運用のコツを押さえておくと、PC 乗り換えやチーム移動のときに詰まりにくくなります。
- Hot Restart 用にキーを分ける:汎用キーを使い回さず、用途を限定したキーを作る(失効させる判断がしやすい)
- 権限は必要最小限:Team Key の Access(ロール)を広げすぎない
- .p8 は「再ダウンロードできない」前提で保管:紛失したら revoke→再発行が基本
- リポジトリに入れない:Git 管理・チャット添付を避け、パスワードマネージャーやセキュアストレージで管理
- いつ・誰が・どの Key ID を使っているか棚卸し:チーム運用では特に重要
それでも解決しない場合:Pair to Mac を“逃げ道”として用意する
Hot Restart は開発体験を速くするための手段ですが、万能ではありません。Microsoft Learn でも Hot Restart は Mac ビルドの代替ではない点や、より新しい Visual Studio では Pair to Mac が推奨される点が明記されています。詰まったときに開発を止めないためにも、Mac ビルド(Pair to Mac)に切り替えて進められるルートを用意しておくのが現実的です。
本件のような「キーは有効なのにエラー」問題は、原因が一つに見えても、実際は アカウント種別の前提違い と API キー(またはトークン)周辺の不整合 の組み合わせで起きることがほとんどです。Individual は App Store Connect API キーを作り直して Visual Studio 側も新規情報で登録し直す。Enterprise は“API キーではなく資格情報でログインする”前提を疑わない。この二点を押さえるだけで、再現率の高い詰まり方はだいぶ減らせます。

コメント