目的
既存アプリが iPhone Duo(画面サイズが変わる新しい iPhone)でどう表示されるかを、シミュレータで確認したかった。
Duo シミュレータは iOS 27.1 以降専用なので、Xcode 27 系が必要になる。そのために macOS と Xcode をアップグレードした。

要約
- iPhone Duo シミュレータは iOS 27.1 以降専用なので、macOS 27 と Xcode 27.1 へのアップグレードが必要
- Xcode 27 では最低対応 iOS が 15 以上になり、macOS 27 では Xcode 26.x の画面が起動しない
- Simulator.app は Device Hub に置き換わった。Duo は「画面サイズが変わる iPhone」として扱われる
アップグレード
- macOS 27 に上げ、Xcode 27.1 を入れた
- Xcode の管理には xcodes を使った
brew install xcodes aria2 xcodes list # 入れられるバージョンの一覧xcodes install 27.1 # Apple IDでのサインインが必要sudo xcodes select 27.1 xcodes installed # インストール済み・選択中のバージョンを確認 - Xcode 27 系は macOS 26.6 以降が必要。 必ず OS を先に上げる。OS が古いままでも
installは途中まで進むが、最後の段階(コンポーネントの導入)は OS を上げてから実行すること - 注意: macOS 27 では、Xcode 26.x(26.2 と 26.6 で確認)の画面が起動しない。
xcodebuildなどのコマンドラインでのビルドは動く
注意点
Xcode 27 では最低対応 iOS が 15 以上になる
| Xcode | 設定できる最低 iOS |
|---|---|
| 26.x | iOS 12.0 |
| 27.x | iOS 15.0 |
最低対応 iOS が 13 や 14 のアプリは、Xcode 27 でビルドすると次のエラーになる。
The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 13.0,
but the range of supported deployment target versions is 15.0 to 27.1.x.
- Duo で確認するには、最低対応 iOS を 15 以上に上げる必要がある。上げると iOS 13/14 の端末にはアップデートが配信されなくなるので、事前にプロダクト側で判断が必要
- Pods の最低 iOS も古いとエラーになる。Podfile の
post_installでIPHONEOS_DEPLOYMENT_TARGETをそろえる - 判断が出るまでは、リリース用のビルドを Xcode 26.x(コマンドライン)で行い、Duo での確認は 27.x で行う、という使い分けもできる
Simulator.app は Device Hub に置き換わった
- Xcode 27 には Simulator.app がなく、Device Hub(
Xcode.app/Contents/Applications/DeviceHub.app)に置き換わっている - 起動方法: Xcode のメニュー Xcode > Open Developer Tool > Device Hub、またはターミナルで
open -b com.apple.dt.Devices open -a Simulatorを使っているスクリプトやツールは動かなくなることがある。その場合はxcrun simctl boot "<端末名>"で端末を起動してから使う
iPhone Duo シミュレータ
- 端末の種類は iPhone(iPad 扱いにはならない)。iPhone 向けアプリは、Duo 専用の対応をしなくてもそのままインストールできる
- 画面サイズが変わる端末で、展開時と折りたたみ時で表示サイズが変わる
- 展開時と背面の画面について、Apple の正式な呼び方はまだない。ここでは「展開時(内側画面)/折りたたみ時(カバー画面)」と呼んでいる
レイアウトで気をつける点(一般的な折りたたみ端末の傾向から)
- 展開時は正方形に近い比率になる可能性が高い。縦長の iPhone を前提にした固定の比率や高さは崩れやすい
- 画面幅いっぱいに広げる画像や動画は、大きくなりすぎて下が見切れることがある
- 開閉で画面サイズが変わったときに、レイアウトが正しく組み直されるか確認する