Appearance
無料 Apple ID(Personal Team)での iOS 実機ビルドと制約
Apple Developer Program(年 $99)に加入しなくても、無料の Apple ID(Personal Team)で 自作アプリを実機で動かせる。何ができて何ができないかの整理。
できること
- 実機へのインストール・実行(プロビジョニングは約 7 日で失効 → 再ビルドで更新)
- Core Location(位置・コンパス heading)、Core Motion(加速度/シェイク)、ローカル通知
- センサーや UI/演出の実機確認
できないこと(Developer Program 必須)
- CloudKit / iCloud capability(entitlement が有料限定)
- Push 通知(APNs)
- Associated Domains(Universal Links)
→ CloudKit・push に依存する機能は無料では検証不可。センサー+UI までが無料の範囲。
セットアップ手順
- Xcode に Apple ID をサインイン(Settings → Accounts → +)。Personal Team が登録される。
- iPhone を USB 接続し「このコンピュータを信頼」。
- iPhone:設定 → プライバシーとセキュリティ → デベロッパモード をオン → 再起動。
- 初回起動時「信頼されていないデベロッパ」が出たら 設定 → 一般 → VPN とデバイス管理 で証明書を信頼。
Team ID の取得
bash
security find-identity -p codesigning -v # "Apple Development: <mail>" があるか
# 一度 Xcode で Signing & Capabilities → Automatically manage signing → Team を選ぶと
# project.pbxproj に DEVELOPMENT_TEAM が入る。そこから 10 桁の Team ID を拾える
grep -m1 DEVELOPMENT_TEAM app/HiYu.xcodeproj/project.pbxprojXcodeGen + SwiftPM 構成での実機ビルド
CLI だけで完結させる場合のポイント:
xcode-selectが CLT を指しているとxcodebuildが使えない。グローバル切替(sudo)の代わりに 各コマンドでDEVELOPER_DIR=/Applications/Xcode.app/Contents/Developerを指定すれば回避できる。- project.yml(XcodeGen)に自動署名を書いておくと再生成しても署名設定が保たれる:
yaml
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: <your.bundle.id>
CODE_SIGN_STYLE: Automatic
DEVELOPMENT_TEAM: <TEAM_ID>- ビルド&インストール:
bash
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
xcodegen generate # ファイル追加時のみ
xcodebuild -project App.xcodeproj -scheme App \
-destination 'generic/platform=iOS' -allowProvisioningUpdates build
xcrun devicectl device install app --device <DEVICE_UUID> \
"<DerivedData>/Build/Products/Debug-iphoneos/App.app"-allowProvisioningUpdatesで実機登録とプロファイル作成を自動化(Apple ID サインイン済み前提)。xcrun devicectl list devicesで接続実機の UUID を取得。
実機検証環境(hi-yu・2026-06 時点)
| 項目 | 値 |
|---|---|
| 実機 | iPhone 16 Pro(iOS 26.5, iPhone17,1) |
| devicectl UUID | 96677E6B-A646-5B92-80F5-88E1F86E11B7 |
| xctrace ECID | 00008140-0014605E0862201C |
| Bundle ID / Team | hiyu.yur4.net / 5W85D9C7S8 |
| 署名 | Apple Development: myura3939@gmail.com(Personal Team) |
xcrun xctrace list devices ではロック中などに "Devices Offline" に出るが、 xcrun devicectl list devices が available (paired) なら install/launch は通る。
検証済み CLI(このマシンは xcode-select が CLT を指すので DEVELOPER_DIR 指定が必須):
bash
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
cd ~/Documents/project/hi-yu/app
# ① コンパル確認は署名不要なシミュレータが速い
xcodebuild -project HiYu.xcodeproj -scheme HiYu \
-destination 'platform=iOS Simulator,name=iPhone 17' build
# ② 実機ビルド(id= は xctrace ECID)
xcodebuild -project HiYu.xcodeproj -scheme HiYu \
-destination 'platform=iOS,id=00008140-0014605E0862201C' \
-allowProvisioningUpdates build
# ③ install/launch は devicectl UUID
APP=~/Library/Developer/Xcode/DerivedData/HiYu-*/Build/Products/Debug-iphoneos/HiYu.app
xcrun devicectl device install app --device 96677E6B-A646-5B92-80F5-88E1F86E11B7 "$APP"
xcrun devicectl device process launch --device 96677E6B-A646-5B92-80F5-88E1F86E11B7 hiyu.yur4.netハマりどころ
- Developer Mode 無効だと
devicectl installがerror 10005で失敗。端末側で有効化+再起動。 - Command Line Tools 単体にはテスト FW(XCTest / swift-testing)が無い。 ロジックの自動検証は test ターゲットではなく 実行ターゲット(
swift run)+ assert で代替できる。 - シミュレータは 磁気コンパス(heading)を供給しない → 方向系はデモ/手動入力で確認、実方位は実機。
- シミュレータの位置許可ダイアログが SpringBoard に残ることがある →
xcrun simctl privacy ... reset/grantやシミュレータ再起動でクリア。
関連
- 適用プロジェクト → [[hi-yu]]