Tech

iPhone Duo シミュレータを動かすまで:OS と Xcode のアップグレードの注意点

公開

目的

既存アプリが 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.xiOS 12.0
27.xiOS 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 を前提にした固定の比率や高さは崩れやすい
  • 画面幅いっぱいに広げる画像や動画は、大きくなりすぎて下が見切れることがある
  • 開閉で画面サイズが変わったときに、レイアウトが正しく組み直されるか確認する