今日は 2026 年 10 月 15 日。Apple の製品ページは、予約を 10 月 16 日太平洋時間午前 5:00 から、発売を 10 月 23 日からと書いている。10 月 5 日の開発者ニュースは、Xcode 27.1 での再コンパイルと提出をすでに許可している。2027 年 4 月からは、新規提出に iPhone Duo のスクリーンショットも要る。起動できることは、古いバイナリがまだ残っていることだけを示す。内画面が埋まっていること、縦横が正しい枝に入ったこと、分割のとき主ボタンがセーフエリアの中にあることは示さない。10 月 13 日の記事は、改修の工期と Mac の買い切りを一緒に計算した。この記事が答えるのは発売前の問いだけだ。コードを変えるか、そしてこの一巡のテストにいくら使うか。
起動できても再対応ではない理由
古い判断と新しい判断は、同じユーザーの一言で食い違う。古い判断は「シミュレータで起動できたら、発売後に低評価を見る」。新しい判断は、レイアウトがまだどの事実を読んでいるかから入る。画面全体か、端末の向きか、今のこの一つの窓か。Apple の準備ページは直接書く。iOS 27 SDK 以降でビルドしたアプリは、Duo を折るとサイズが変わる。画面サイズの直書き、固定の向き、端末の思い込みは、レイアウトを引き伸ばし、切り、置き場所を間違える。
同じソースが三段階の SDK で違って見える。これが発売前の第一切で、デザインの好みではない。iOS 26 SDK 以前でも動く。開くと窓は中央に余白つき、閉じると内容はステータスバーとカメラの左に寄る。iOS 27 SDK は内画面の大部分を埋め、右端のステータスバーはまだ避ける。iOS 27.1 SDK 以降が最適化の状態で、内容は表示領域を使い切り、ツールバーとタブバーはステータスバーの下に縦に立つ。ストア画像だけ替えて、バイナリが古い SDK のままのチームは、ユーザーが内画面を開いたとき余白を見せる。余白は「来週対応する」とは読まれない。
第二切は、窓は画面ではなく、向きは形ではない。準備ページは、サイズが変わるたびに読み直すよう求める。viewIsAppearing で一度読むだけでは足りない。折りはセッションの途中で起きる。UIKit は、サイズに依存するレイアウトを layoutSubviews か viewDidLayoutSubviews に置き、サイズが変わったときに処理するなら viewWillTransition(to:with:) を使う。SwiftUI は GeometryReader か onGeometryChange。スケールは trait collection から取り、UIScreen.main.scale からは取らない。二画面の端末では main screen の意味が曖昧だ。Apple は、将来のバージョンで廃止すると書いている。
第三切がテスト機だ。Xcode 27.1 の iPhone Duo シミュレータ、Device Hub 下部の開閉と回転、macOS 27 の iPhone Mirroring による極端な引き伸ばしは、どれも Mac の上にある。Windows にこの連鎖はない。チームのビルド機の選び方は Xcode Cloud とリモート Mac の比較にある。Xcode Cloud はビルドできる。Device Hub の前に座って、閉じ、半折り、開きをそれぞれ回し、分割を左から右へドラッグする代わりにはならない。
折りたたみの寸法、縦横、マルチウィンドウをどう分けるか
「iPhone Duo 対応」を一つのマイルストーンにすると、発売前の日程は必ずずれる。ユーザーが実際にぶつかる振る舞いで、四つの関門に分ける。関門が一つ欠けると、「コンパイルできた」を「対応済み」と書く。
| ツール | 入口 | 実行できること | 文脈 | 向く人 |
|---|---|---|---|---|
| 折りたたみの寸法 | 外画面、内画面、今の窓 | size class と bounds で組み、ピクセルやインチを直書きしない | 仕様ページの解像度は、桁を理解するためだけ | まだ bounds.height == 844 を比べているコード |
| 縦横 | 外画面の向き宣言。内画面のアスペクト比 | 外画面は対応向きを守る。内画面は守らず、分割も含む | テント姿勢では、閉じた端末を横に置く | interfaceOrientation でレイアウトを切り替える画面 |
| マルチウィンドウ | 分割、第二シーン、シーンアクセサリ | すべてのアプリが並ぶ。新しい窓は内画面だけ | 外画面で新しいシーンを求めると失敗する | iPad の「新しい窓」をそのまま持ってきたアプリ |
| Xcode のテスト | Xcode 27.1 の Device Hub | 三姿勢、回転、左右の分割、二回目のシーン要求 | 日額の稼働五日は 16GB の月額と同じ | 10 月 23 日までに回帰表を一枚出す人 |
寸法:二枚の画面と、変わる一つの窓
仕様ページは数字を固定している。レイアウトのコードはそれに従ってはいけない。外画面は 5.4 インチの Super Retina XDR、解像度 1398×2034、460 ppi。閉じた本体は高さ 117.8 mm、幅 84.1 mm、厚さ 11.3 mm。内画面は 7.6 インチの折りたたみ Super Retina XDR、解像度 1878×2670、430 ppi、ナノテクスチャ付き。開いたあとの高さは同じく 117.8 mm、幅 164.6 mm、厚さ 5.2 mm、重量 254 g。Apple は、二画面のアスペクト比は同じで、内容は比例して拡大縮小すると書いている。標準の矩形で測るとおよそ 5.36 インチと 7.58 インチ。実際の可視領域はより小さく、角丸は矩形の内側にある。
size class が、レイアウトの読む段だ。外画面は他の iPhone と同じ。縦持ちは垂直 regular、水平 compact。横持ちは両方 compact。内画面は水平も垂直も regular で、サイドバーを置ける。窓はさらに小さくなり得る。分割、半折り、ミラーリングの引き伸ばしは、窓を画面全体と一致させない。だから仕様ページのピクセルは桁であり、定数ではない。スケールは traitCollection.displayScale か SwiftUI の displayScale を使う。1398 や 1878 を == に書かない。
「画面サイズ」と混ざりやすいシステム挙動が二つある。角丸は iOS 26 の Concentricity を使う。SwiftUI は ConcentricRectangle、UIKit は UICornerConfiguration。折り目とカメラは予約領域で表し、自分で中央の継ぎ目を測らない。SwiftUI はジオメトリプロキシから ReservedRegion を取り、UIKit は UIViewReservedRegion を使う。ヒンジの角度は別の経路だ。onHingeChange と UIHingeInteraction は closed、partially open、fully open、そして連続した角度を出す。Apple は、角度はエフェクトに向き、レイアウトは arrangement と予約領域を通ると書く。角度で frame を変えると、発売の第一週、半折りで揺れる。
縦横:外画面は従い、内画面は従わない
準備ページの Tech Talk は、向きを二文で言う。外画面のインターフェイスの向きは他の iPhone と同じだ。Duo は横向きを足す機会でもある。閉じた端末をテントのように横へ置く人がいる。内画面は、Info で宣言した対応向きを守らない。idiom と同じで、向きをレイアウトの分岐に使わない。高さより幅が広いかは、実際に得ている幅と高さを比べる。ビューコントローラは view.bounds、ビューは superview.bounds、SwiftUI は GeometryReader のサイズ。
検索して外すプロパティは UIDevice.current.orientation、statusBarOrientation、そして interfaceOrientation。windowScene.effectiveGeometry.interfaceOrientation も含む。Human Interface Guidelines は、連続した体験を一行足す。横に置いたとき、コントロールは側面に残り、同じ垂直の高さを保つ。端末を横にしたからといって、ページ全体を組み直さない。標準のシステムコンポーネントは自らそうする。自分で描いたバーはしない。
UIRequiresFullScreen はなお有効だ。開閉のとき、アプリはやはりサイズを変える。誤読しやすい一文がある。Duo は宣言した対応向きを尊重する。ただし内画面のアプリはなお拡大縮小し、分割の中も同じだ。だから「縦をロックしたから、内画面は幅が変わらない」は成立しない。セーフエリアはしばしば非対称だ。横向きと分割では、縦に並ぶボタンが左側に出ることがある。左の inset を二倍して幅を推すと、反対側でボタンが画面の外へ出る。各辺は別々に引く。
マルチウィンドウ:分割は既定で、二枚目の窓は既定ではない
マルチウィンドウの Tech Talk はこう書く。すべてのアプリが Duo のマルチタスクに参加し、二つのアプリを並べられる。iPad か iPhone Mirroring ですでにサイズ変化へ対応しているなら、出発点はよい。動画とアプリを重ねる新しいレイアウトもある。扱いは分割と同じで、size class とシーンのジオメトリを読む。「これは動画だ」という枝を別に書かない。
Duo は、同じアプリのインターフェイスインスタンスを複数サポートする最初の iPhone だ。iPad で新しい窓を開けるなら、ここでも開ける。違いは一つ。外画面では新しい窓を作れない。その振る舞いは内画面に残す。新しいシーンの要求は、失敗を処理しなければならない。UIWindowSceneActivationAction を使う。新しい窓が使えないときは自ら隠れ、押すとエラーになるボタンを残さない。シーンアクセサリは第三の道で、補助のインターフェイスを別の画面に出す。カメラの CameraCaptureAccessory は追加のインターフェイスを外画面に置き、主画面は内画面の全画面に残す。進行中のカメラセッションが要る。閉じるとアクセサリは使えず、ボタンは onAvailabilityChange で消す。これはカメラアプリの上乗せだ。分割は上乗せではなく、すべてのアプリの既定だ。
import SwiftUI
struct LaunchCheck: View {
@Environment(\.horizontalSizeClass) private var widthClass
var body: some View {
GeometryReader { proxy in
let wider = proxy.size.width > proxy.size.height
Root(regularWidth: widthClass == .regular, widerThanTall: wider)
}
.onHingeChange { _, context in
guard let hinge = context.hinge, hinge.status == .partiallyOpen else { return }
// hinge.angle はエフェクトを駆動する。角度からレイアウトしない。
playBend(hinge.angle)
}
}
}
これは工程のひな型ではない。三つだけ固定する。内画面が regular 幅のときサイドバーを出し、外画面が compact のときは戻す。縦横は、今の窓のどちらが長いかで見、向きは見ない。ヒンジの角度は半折りのときだけエフェクトを動かし、レイアウトは size class と bounds のまま。二枚目の窓のボタンは、自動で隠れるアクティベーションアクションに渡す。外画面に、常に押せる「新しい窓」を残さない。
中核の比較:寸法、向き、窓、テスト費用
本当の差は、コードがまだ「画面は一枚、向きは一つ、窓は一つ」と思い込んでいるかであり、デザイナーが折りのエフェクトを欲しいかではない。下の二表は同じ列を使う。テスト費用は、このサイトの料金ページにある M4 16GB と 24GB のドル建てだ。日額 20.2 と 40.2、週額 54.5 と 108.5、月額 100.9 と 200.9。人日はこの記事でドルにしない。工期の段と買い切りの比較は、10 月 13 日の対応コストにある。
| ツール | 入口 | 実行できること | 文脈 | 向く人 |
|---|---|---|---|---|
| 27.1 へ再コンパイルするだけ | size class があり、画面シングルトンがない | 縦バー、予約領域、全画面画像の焦点、左右の分割を確認する | スキャンはきれい。一日で閉じられる | iPad の分割、またはミラーリングの縮小に耐えたアプリ |
| 向きの分岐が残る | interfaceOrientation がレイアウトを決める | 幅と高さの比較に変える。外画面の横は、テント姿勢を別に見る | 内画面は対応向きを守らない。縦をロックしても幅の変化は止まらない | ニュース、読書、プレーヤーに、横向きの if が多い |
| 単一窓の思い込み | iPad の「新しい窓」をそのまま持ってくる | 外画面は入口を隠す。内画面は作成の失敗を処理する。分割は既定にする | 第二インスタンスが正当なのは内画面だけ | 書類、メール、デザインツール |
| 固定ピクセル | 844、1398、または機種表一枚 | コンテナを作り直し、非対称の inset、idiom を外す | 仕様ページの解像度は定数に書けない | 何年も一枚の iPhone 画面に描いてきた店 |
| ツール | 入口 | 実行できること | 文脈 | 向く人 |
|---|---|---|---|---|
| 手持ちの Apple Silicon | ローカルの Xcode 27.1 | シミュレータの全行列 | 機材の増分は 0。ただし日常の DerivedData とディスクを争う | 機械が、固定した Xcode をすでに入れられる |
| M4 16GB の日額 | リモートデスクトップ | Device Hub を一巡 | 1 日 20.2 ドル。稼働五日で 101.0 ドル | スキャンはきれいで、二日以内に本当に閉じる |
| M4 16GB の週額 | リモートデスクトップ | 一暦週 | 週 54.5 ドル。二週で 109.0 ドル。月額よりなお高い | 金曜を超えるかもしれない。二か月目には入らない |
| 16GB / 24GB の月額 | リモートデスクトップ | 回帰の全期間。24GB はシミュレータを同時に多く開ける | 月 100.9 または 200.9 ドル。24GB の日額五日は 201.0 ドル | 向きかピクセルの分岐が、二日目に出る |
| Xcode Cloud | クラウドのアーカイブ | コンパイルと署名 | ログに、Home インジケータをドラッグした一瞬はない | ビルドはクラウドのまま。姿勢はリモート Mac に残す |
日額を掛けると、テスト費用は改修費用と同じ算術になる。16GB の 20.2×5 = 101.0 は、月額 100.9 とすでに同じ。24GB の 40.2×5 = 201.0 は、月額 200.9 に合う。週額の 54.5×2 = 109.0 は、16GB の一月よりなお少し高い。だから「まず日額で試す」が成立するのは、一日か二日で行列を走り切ると分かっているときだけだ。App Resizability が二日目に、向き判定や UIScreen.main の列を出したら、課金周期は月へ変える。八日目に払うのは周期であり、テストではない。
行列そのものはマスに並べられる。「折りを少し試す」という一段にはしない。SDK を三段階、それぞれ見る。余白か、右のステータスバーを避けるか、全画面の縦バーか。それから 27.1 のシミュレータで、閉じ、半折り、開きをそれぞれ一回回転する。内画面では、下部の Home インジケータでアプリを左へ、次に右へドラッグし、縦バーが辺を替えたあとも主ボタンが残ることを確認する。内画面で第二シーンを要求する。外画面では、アクティベーションアクションが消えるか、失敗した要求を自分が受け止めたかを確認する。macOS 27 のミラーリングによる引き伸ばしは追加項目だ。Duo より広い窓、または狭い窓を見るためであり、発売前の必須ではない。スクリーンショットは、主経路が余白でなくなってから替える。Duo のスクリーンショットを提出すると、製品ページに最適化バッジが出る。2027 年 4 月からの新規提出には、これらのスクリーンショットが必須だ。それはストアの締め切りであり、10 月 23 日のレイアウトの締め切りではない。
場面でどう選ぶか
| もしあなたが | 選ぶ | 理由 |
|---|---|---|
| 純粋な SwiftUI で、iPad の分割に耐えている | 手持ちか、一日のリモートノード。先にスキルをスキャンする | 底はある。残りは縦バー、予約領域、全画面画像、左右の分割 |
| 二日目のスキャンが向きか UIScreen.main | すぐ月額へ。日額を一週払い切らない | 稼働五日はすでに一月 |
| 縦をロックし、内画面は放ってよいと思っている | 先に幅と高さの比較へ変え、そのあと画像 | 内画面は対応向きを守らない。分割の中でも拡大縮小する |
| 書類かメールで、iPad に新しい窓がある | 外画面は入口を隠し、内画面は失敗を処理する | 新しい窓は外画面では作れない |
| カメラアプリで、プロンプターを作りたい | 分割を先に通し、アクセサリはあとで足す | アクセサリには内画面の全画面とカメラセッションが要る。分割はすべてのアプリの既定 |
| App Store の画像だけ替えたい | 先に 27.1 を通し、そのあと画像 | 古い SDK の内画面は余白。バッジは余白を対応に変えない |
| 事務所に Mac がない | 一台借り、先に sw_vers と xcodebuild -version を見る | システムが合わないと、日額を払っても有効なマスにならない |
実機は別の一行に置く。ヒンジの感触と、シミュレータができない項目には一台が要る。価格は、発注するときの Apple の店のページに従う。その行を、すべての Xcode チケットへ按分しない。一人に一台 Duo を配っても、UIScreen.main は消えない。外画面が突然、新しい窓を作れるようにもならない。
推奨する組み合わせ
A — 個人で、レイアウトがすでにサイズに従っている: Xcode 27.1。手持ちか、リモートを一日。コーディング支援に「get my app ready for iPhone Duo」を走らせるか、端末で xcrun agent skills export を実行して別のエージェントに渡す。スキャンが空なら Device Hub へ入る。閉じ、半折り、開きをそれぞれ一回回転し、分割を左右へドラッグする。外画面で「新しい窓」を一度押し、入口が消えることを確認する。ストアの画像は、App Store Connect のプレビューで Duo を見る。この一巡のために、テスト用の機械は買わない。ノードの月額は 料金ページ。
B — 小チームで、向きと独自バーが残っている: 第一週はスキャンと画面シングルトンだけにする。週額か、最初から月額。日額を七日まで転がさない。第二週は、向きの分岐を幅と高さの比較に変え、セーフエリアは四辺を分けて書く。第三週は、分割の左右に一枚ずつ残し、第二シーンの失敗経路を回帰へ書く。CI は既存のビルド機のまま。人が開閉を見る回は、同じリモート Mac を使う。24GB の月額 200.9 ドルは、Duo と他のシミュレータを並列にするときだけ選ぶ。五つの 40.2 は、この段の月額とすでに同じ。
C — 発売の週に提出する: 今日は 10 月 15 日。予約は明日から。発売は 10 月 23 日。約束できるのは、27.1 で主経路が余白にならず、縦バーが主ボタンを隠さず、分割が辺を替えたあともボタンが残り、外画面に無効な新しい窓が出ないことだ。できないヒンジのエフェクトとカメラのアクセサリは、ストアの文案に書かない。申し込みは レンタルページ。システムの版とアカウントは ヘルプ。レンタルイメージに Xcode 27.1 が最初から入っているとは思わない。
よくある誤り
- 起動できたことを対応済みと書く。 iOS 26 SDK の内画面は中央の余白だ。ユーザーは空の縁を「対応中」とは読まない。
- 仕様ページの 1398 や 1878 を定数に書く。 それはピクセルの桁だ。窓は分割と半折りでより小さく、スケールも手で書かない。
- 向きで内画面の縦横を決める。 内画面は対応向きを守らない。縦横は今の窓のアスペクト比で取る。
- UIRequiresFullScreen が分割と開閉を切ったと思う。 キーはまだ有効で、開閉のときサイズは変わる。宣言した向きも、内画面の拡大縮小は止めない。
- 外画面に、常に押せる新しい窓を残す。 新しい窓は内画面だけ。失敗を処理しないと、閉じたときにエラーが出る。
- ヒンジの角度でレイアウトする。 角度はエフェクトに向く。レイアウトは size class、予約領域、arrangement を使う。
- 日額を一週払い切る。 16GB の稼働五日はすでに月額。八日目は課金周期への支払いだ。
七つの手順
- 同じソースを、入れられる SDK にそれぞれ合わせ、余白か、右のステータスバー回避か、全画面の縦バーかを先に記録する。目標は 27.1。
UIScreen.main、UIDevice.current.orientation、statusBarOrientation、interfaceOrientation、userInterfaceIdiom、そして 844、1398、1878 のような寸法定数を全体検索する。- Xcode のコーディング支援に App Resizability を走らせるか、
xcrun agent skills exportを実行する。スキルは大部分を見つける。見つからない分は上の一覧で補う。 - Device Hub の iPhone Duo を開く。閉じ、半折り、開きをそれぞれ一回回転する。それから Home インジケータで、内画面のアプリを左と右へドラッグする。主経路はマスごとに一枚残す。
- 内画面で第二シーンを要求し、成功も失敗も受け止めていることを確認する。外画面では
UIWindowSceneActivationActionが自ら隠れることを確認する。 - 縦バーが主ボタンを隠していないか、左右の inset が等しいと書かれていないか、全画面画像の主体が残っているか、半折りで予約領域がコントロールを押していないかを見る。ヒンジの角度はエフェクトだけを見、レイアウトは見ない。
- 課金周期を選ぶ。一日か二日は日額。スキャンがすでに汚れていたら月額。注文の前に、ノードで
sw_versとxcodebuild -versionを実行する。主経路がきれいになったあと、Duo のスクリーンショットを替える。Connect のプレビューで見、別の iPhone のカンバスを無理に縮めない。
FAQ
コードを変えなくても、iPhone Duo の発売当日に開きますか?
開きます。iOS 26 SDK 以前でビルドすると、開いたあと窓は中央に余白つき、閉じると内容はステータスバーとカメラの左に寄ります。動くことは、対応の完了ではありません。埋めて縦バーを使うには、iOS 27.1 SDK が要ります。分割と第二の窓も、「開ける」から自動で正しくなるわけではありません。
横向きを Info に宣言しただけなら、内画面は従いますか?
外画面は、宣言した対応向きを守ります。テント姿勢は、別に見る価値があります。内画面は従わず、分割の中でもアプリは拡大縮小します。UIRequiresFullScreen は、開閉がもたらすサイズ変化を止めません。レイアウトは、今の窓の幅と高さを比べます。
マルチウィンドウは任意ですか?
分割は任意ではありません。Apple は、すべてのアプリが並ぶと書いています。動画とアプリの重ねも、同じ size class を通ります。新しい窓は、内画面でだけ作れます。外画面の入口には、自動で隠れる UIWindowSceneActivationAction を使います。カメラの外画面アクセサリは上乗せで、内画面の全画面と、進行中のカメラセッションが要ります。
シミュレータだけなら、テスト費用はどう計算しますか?
レイアウトの主経路には足ります。Apple は、Xcode 27.1 の iPhone Duo シミュレータを、完全な体験を試す最善の方法と書いています。M4 16GB の日額は 20.2 ドルで、稼働五日は月額 100.9 ドルと同じです。スキャンが二日目に汚れたら、日額を八日目まで払いません。24GB は一日 40.2 ドル、一月 200.9 ドルで、日額の五日も月額に揃います。ヒンジの感触には、なお実機が要ります。その行を、シミュレータのチケットへ按分しません。
Mac がなくても、発売前にテストできますか?
Windows では Xcode 27.1 を動かせません。先に、ノードの macOS が固定した Xcode を入れられることを確認します。システム要件は Apple の Xcode システム要件に従います。ミラーリングの引き伸ばしについて、準備ページは macOS 27 と書いています。リモートノードは レンタルページから申し込み、価格は 料金ページに従います。
まとめ
iPhone Duo は 10 月 23 日に発売される。再対応の閾値は「開けるかどうか」ではない。先に、寸法がまだ画面全体を読んでいるか、向きがまだ内画面を決めているか、新しい窓が外画面でまだ押せるかを見る。この三つの関門がきれいなら、テスト費用はシミュレータ行列の一巡だ。日額の五日が一月と同じなら、月額へ変える。 すでに適応している小さいアプリは、手持ちか短期にする。向き、ピクセル、単一窓の思い込みが残るなら、月額で回帰を残す。スクリーンショットのバッジは、余白を解決しない。リモートノードは レンタル と 料金、アカウントとシステムの版は ヘルプ。