・ iOSアプリ開発
iPhone Duoアプリ対応:Xcode 27.1で確認する8つ
はじめに:まず作り直しが必要かを切り分ける
iPhone Duoは、外側と内側の2つの表示領域を持つ折りたたみ型iPhoneです。Appleは、iPhone Duoが10月23日に発売され、iOS 27.1で動くと発表しています。Get ready with the latest beta releases
画面が大きくなると聞くと、既存アプリを作り直す必要があるように感じるかもしれません。ただ、アプリはそのままでもiPhone Duo上で動きます。確認が要るのは、開く・閉じる・途中まで折る・回転するたびに変わる表示領域に、今のレイアウトが追従できるかどうかです。
AppleのPreparing your app for iPhone Duoによると、iPadやMacで動くアプリなら準備の大半は済んでいます。iPhoneミラーリングでのリサイズに対応済みのアプリも同じです。
この記事は2026年9月26日時点のApple公式情報をまとめたものです。
0. 最新のXcodeでビルドし直す
最初の一手は、Xcode 27.1でビルドし直すことです。Xcode 26以前でビルドしたアプリは、iPhone Duo上でステータスバーとカメラの下まで表示が広がりません。
Xcode 27.1 betaは9月18日に公開され、iOS 27.1 SDKとiPhone Duo用のSimulatorを含んでいます。Build for iPhone Duo with new resources
Xcode 27.1のリリースノートで、事前に押さえたい条件は次の4つです。
- macOS Tahoe 26.6以降が必要
- Simulatorの初回起動は数分かかることがある
- iPhone Duo SimulatorではStandByが使えない
- 多くのApp Extensionは実行もデバッグもできない
ウィジェットや共有拡張などのApp Extensionを持つアプリは、Simulatorだけでは確認しきれません。本体アプリの画面を先に直し、拡張は実機が手に入ってから確かめる順番が現実的です。
同じリリースで、Xcode Previewsのキャンバスにも「Display」の切り替えが加わりました。もう一方の画面での見え方をプレビューで確認できます。
1. 使える領域の広さでUIを切り替える
内側の画面は、向きだけ見ても使える広さが分かりません。Appleは、UIKitで userInterfaceIdiom や UIInterfaceOrientation をレイアウトの判断に使わないよう明記しています。
代わりに使うのはsize classです。
- SwiftUIでは環境からsize classを読む
- UIKitではtrait collectionの変化を追う
- ビューの大きさは親ビューを基準に決める
- UIKitではAuto Layoutでリサイズできるようにする
外側はコンパクト幅、内側はより広い領域を持ちます。内側で幅に余裕があるときだけ補助情報を足し、狭いときにも同じ操作ができる構成にします。
これは「Duo専用画面」を増やすという意味ではありません。Appleも、コンパクトとレギュラーのsize classを軸にしたレイアウトを勧めています。Design for iPhone Duo
2. UIScreen.mainで画面を決め打ちしていないか確認する
2つの画面を持つ端末では、UIScreen.mainがどちらの画面を指すかを前提にできません。Appleは、sceneや親ビューのboundsからレイアウトを計算するよう案内しています。
たとえばサムネイルの大きさ、ポップオーバーの位置、独自の余白を画面幅から計算している箇所を洗い出します。そのうえで、ビューに近いbounds・trait collection・safe areaから導けないか確かめましょう。
直した画面は、iPadでウィンドウの大きさを変えたときにも崩れにくくなります。
3. ツールバーが画面の横に縦に並ぶ前提で整理する
iPhone Duoで見落としやすいのがこの変化です。姿勢によっては、ナビゲーションバー・ツールバー・タブバーが画面の横に縦にまとめて表示されます。閉じた状態の外側の画面と、開いた状態の内側の画面の一部のビューで起きます。
システムが縦に表示してくれるのは、標準のナビゲーションコンテナが持つバーだけです。
- SwiftUIは
NavigationStackかNavigationSplitViewにtoolbar(content:)を付ける - UIKitはナビゲーションコントローラ配下のビューコントローラにツールバー項目を設定する
UIToolbarなどで自作したバーは縦にならない
項目の並べ方にもルールがあります。縦に並んだときの上端は「戻る」「閉じる」のような移動の操作、その次が「完了」のような目立つ操作という順番です。
項目にはアイコンとタイトルの両方を付けておきます。縦に並ぶときはアイコンが使われ、あふれた項目はアイコンとタイトルでメニューに入ります。タイトルだけの項目や、独自のビューを使った項目は縦に表示されません。
外側の画面では、シートのバーも既定で縦になる仕様です。縦にしたくない場合は、SwiftUIの toolbarVerticalBehavior(_:) かUIKitの preferredVerticalBarBehavior で止められます。
4. 折り目とカメラの上に操作を置かない
途中まで折りたたんだ状態では、折り目の近くにボタンを置くと押しにくくなります。標準のコンテナやシートを使っていれば、折り目や内側のフロントカメラは自動で避けてくれるので心配ありません。
独自のビューで避けたい場合、iOSはこれらを「reserved region」として渡します。種類は次の2つ。
- division:折り目が大きな画面を分ける領域
- occlusion:カメラなどのハードウェアが表示を覆う領域
SwiftUIでは GeometryReader から reservedRegions(kind:options:layoutDirectionBehavior:) で取得します。UIKitでは reservedRegions(kind:options:) です。折り目のregionは途中まで折ったときだけ有効になり、完全に開くと無効になります。
スクロールする本文まで折り目から離す必要はありません。押す・閉じる・送信するといった操作が、折り目やカメラに重ならないことが大切です。
5. 2つのビューの配置は arrangement view に任せる
一覧と詳細、地図と情報パネルのように2つのビューを並べる画面があるなら、SwiftUIの ArrangementView とUIKitの UIArrangementViewController が使えます。姿勢に合わせて、2つのビューの配置を自動で切り替えるコンテナです。
- split:横長なら左右に並べ、縦長なら上下に並べる
- overlay:普段は重ね、途中まで折ったときは折り目の両側に振り分ける
HStackやVStackで並べている画面はsplit、ZStackで重ねている画面はoverlayが対応します。ただし、Appleはarrangement viewをスクロールビューやリストの中に置かないよう注意しています。一部が操作できなくなるためです。
6. カメラを使うアプリは向きの変化を確かめる
AVFoundationで撮影するアプリは、外側・内側・背面の3つのカメラを使えます。開閉や回転で表示される画面が変わると、使っているカメラの向きが逆になることも。
完全に開いて背面カメラで撮影しているとき、外側の画面にも映像を出す構成もあります。撮影機能があるアプリは、Appleのカメラの選び方の解説を確認してください。
7. Simulatorで確認する状態を先に決める
Appleは、Xcode 27.1でiPhone Duo Simulatorを選び、開閉・回転・折りたたみを試す手順を案内しています。Prepare your app for iPhone Duo
同じ画面を次の状態で開くところから始めると、差分を見つけやすくなります。
- 外側の画面:入力欄、モーダル、キーボード表示
- 内側の画面:一覧と詳細、サイドバー、長いテキスト
- 途中まで折った状態:主要ボタン、シート、動画やカメラ
- 各状態での回転:縦に並ぶバー、操作の届きやすさ
不具合を見つけたら、端末名で分岐を増やす前に原因を切り分けます。固定幅、UIScreen.main、安全領域を無視した独自の余白、自作のバー。多くはこの4つのどれかです。
App Storeスクリーンショットは寸法だけ先に決められる
Appleのスクリーンショット仕様には、iPhone Duo用の寸法が載っています。
- 外側の画面:1398×2034px(横向きは2034×1398px)
- 内側の画面:2007×2853px(横向きは2853×2007px)
ただし9月26日時点でも、この端末向けの画像をApp Store Connectへ上げる機能は「年内提供予定」です。今すぐ提出できるわけではありません。Simulatorで外側と内側の見え方を記録しておくと、提供開始後の制作が速くなります。
申請の流れはApp Store申請手順にまとめています。対応版を出すときの審査時間の目安は、13回分を実測したApp Store審査は何時間?が参考になります。
まとめ
- 最初にXcode 27.1でビルドし直す
- レイアウトはsize classで切り替える
UIScreen.mainの寸法でレイアウトを組まない- バーは標準コンテナに任せ、項目にアイコンとタイトルを付ける
- 折り目とカメラは reserved region で避ける
iPhone Duo対応で先に見るべきなのは、端末専用の画面ではありません。変わり続ける表示領域に、今のUIが追従できるかどうかです。発売の10月23日までにSimulatorで一通り試しておけば、実機で見つかる問題は少なくなるはずです。
参考リンク
- Preparing your app for iPhone Duo(Apple Developer Documentation)
- Xcode 27.1 Release Notes(Apple Developer Documentation)
- Build for iPhone Duo with new resources(Apple Developer News)
- Prepare your app for iPhone Duo(Tech Talks)
- Design for iPhone Duo(Tech Talks)
- Screenshot specifications(App Store Connect Help)