Xcode 27.1 beta:iPhone Duoシミュレータでアプリを動かす
Xcode 27.1 beta(27A9269)は2026年9月18日金曜日に公開され、最初のiOS 27.1 SDKと、シミュレータ用のiPhone Duoデバイスタイプを同梱しました。Xcode 27.0の4日後です。SDKにはAppleの準備ガイドが挙げるiPhone Duo APIがすべて入っており、デバイスタイプのプロファイルは2つのディスプレイを3xの1398×2034ピクセルと2007×2853ピクセル、すなわち466×678ポイントと669×951ポイントとして定義しています。シミュレータランタイムは別ダウンロードで、Xcodeが必要に応じて取得します。Apple自身のノートは、シミュレータがまだできないことを3つ挙げています。Device Hubの3つのポーズでプローブアプリを動かしたところ、閉じた状態では466×678ポイントのディスプレイ、開いた状態では951×669ポイントのディスプレイに載り、開いた状態ではサイズクラスが両方向ともregular、どのポーズでも予約領域は報告されず、アプリが内側ディスプレイにある間もUIScreen.mainは外側ディスプレイの値を返し続けました。12456
{.answer-block}
TL;DR
- 日付とビルド。 AppleのReleasesフィードは、Xcode 27.1 beta(27A9269)を9月18日金曜日付けとしています。
xcodebuild -versionはXcode 27.1とBuild version 27A9269を出力し、iPhoneOSとiPhoneSimulatorのSDKはどちらもiOS 27.1のビルド24A94403だと名乗ります。Swiftコンパイラのバージョン文字列swiftlang-6.4.0.34.1も、リンカのld-27037.1もXcode 27.0と同じです。xipは2,027,292,809バイト、展開後のアプリは3.6 GiBで、Xcode 27.0を置き換えることなく隣にインストールされます。14 - Duo APIはSDKに入っています。 9月17日の確認で27.0 SDKに見つけられなかった10個の名前は、27.1 SDKにはすべてあります。SwiftUICoreの
ArrangementViewとreservedRegions(kind:options:layoutDirectionBehavior:)、SwiftUIのtoolbarVerticalBehavior(_:)、UIKitのUIArrangementViewController、preferredVerticalBarBehavior、verticalBarEdgeなどです。SwiftUIはこれらに@available(anyAppleOS 27.1, *)を付けています。UIKitのヘッダは、arrangementのコントローラと予約領域のメソッドにAPI_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1))を付けており、ドキュメントページが挙げるより2つ多いプラットフォームです。4 - シミュレータのプロファイルがディスプレイのサイズを書き残しています。 iPhone Duoのデバイスタイプ(
iPhone19,4、プロダクトクラスV68、モデル番号A3447)は、内蔵ディスプレイを2つ定義します。primaryは1398×2034ピクセルのスケール3、primary-1は2007×2853ピクセルのスケール3で、ネイティブの向きは270度。3で割れば466×678ポイントと669×951ポイントで、内側の数字は、私のDuo開発者向け記事が9月10日にApp Store Connectのスクリーンショットサイズから推論した値そのものです。プロファイルはランタイム27.1以降を要求します。5 - 実際のアプリを載せるとどうなるか。 Device Hubには3つのポーズ、Closed(閉じた状態)、Book(半開き)、Open(開いた状態)と、Rotate Right(右回転)が並びます。Closedではプローブは外側ディスプレイに載り、466×678ポイント、幅はcompact、splitのarrangementは上下に積まれます。Openでは内側ディスプレイに移り、ランドスケープがネイティブの951×669ポイント、サイズクラスは両方向ともregular、セーフエリアインセットは左右それぞれ34、splitのarrangementは左右並び。回転させれば幅669・高さ951ポイントになり、それでも両方向ともregularのままです。BookがアプリにくれたジオメトリはOpenと同じでした。どのポーズでも
reservedRegionsは、非アクティブな領域を含めても何も返さず、toolbarVerticalEdgeはnilのまま、ツールバーは横向きに描かれ、アプリが内側ディスプレイにある間もUIScreen.main.boundsは466×678を報告し続けました。6 - このベータにまだできないこと。 Appleのノートにはこうあります。「Initial Simulator launch can take several minutes.」(187708500)、「StandBy is unavailable in the iPhone Duo Simulator runtime.」(187708663)、そして「Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime.」(187708767)。Macにも出しているアプリなら、Mac CatalystのKnown Issuesが2件加わります。さらに、Appleが挙げていないものが1つ。ランタイムのダウンロードは最初の試行で
Download failed.となり、やり直して成功しました。23
このベータには何が入っているのか?
AppleのReleasesフィードは「Xcode 27.1 beta (27A9269)」を9月18日金曜日の午前10時(PT)に、同じ日の午後に「TestFlight Update」を載せています。同じ日付のApp Store Connectのリリースノートには「You can now submit apps built with Xcode 27.1 beta using the SDK for iOS 27.1 beta or iPadOS 27.1 beta for internal and external testing.」とあります。1 リリースノートのOverviewはSDKの並びを名指ししています。「Xcode 27.1 beta includes Swift 6.4 and SDKs for iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, and visionOS 27. Xcode 27.1 beta supports on-device debugging in iOS 17 and later, tvOS 17 and later, watchOS 10 and later, and visionOS. Xcode 27.1 beta requires a Mac running macOS Tahoe 26.6 or later.」2 この並びは書かれたとおりに読んでください。27.1なのはiOSだけで、SDK自身のSDKSettings.plistもバージョン27.1と報告します。一方でApp Store Connectは同じSDKを「iPadOS 27.1 beta」と呼んでおり、このねじれはXcode 27の記事が引き継いでいるものです。
ダウンロードはバージョン番号から想像するより小さくて済みます。xipは2,027,292,809バイト、AppleのSoftware Update証明書で署名されており、展開するとXcode 27.0と同じ3.6 GiBのアプリになります。コマンドライン作業なら、フォルダへのxip --expand、/Applications/Xcode-27.1-beta.appへのリネーム、そしてそこを指すDEVELOPER_DIR。インストールはこれで全部です。そのあとベータ配下での最初のxcodebuild呼び出しが、同梱のCoreTypes.pkgとXcodeSystemResources.pkgを自力でインストールするのに2分ほどかけました。xcodebuild -runFirstLaunchが明示的に行う工程で、後者のパッケージこそがiPhone Duoのデバイスタイプを置いていく正体です。4 アプリに入っていないものは、シミュレータランタイムです。ベータはこのMacにすでにあるiOSランタイムを見つけ、その中に27.0はあっても27.1はありません。ベータ配下のxcodebuild -downloadPlatform iOSは、欠けている部品を「iOS 27.1 Simulator (24A94401)」と名指しし、Appleのmobile-assetサービス経由でcryptexディスクイメージとして取得します。一方、開発者向けダウンロードページに並ぶディスクイメージのほうは、iOS 18.2 Simulator Runtimeで止まったままです。34 最初の試行はDVTDownloadable: Download FailedとError Domain=DVTDownloadableErrorDomain Code=41 "Download failed."で終わりました。2回目は-buildVersion 24A94401を付けて走らせ、ランタイムを7.85 GBと表示して完走。その後simctl list runtimesには「iOS 27.1 (27.1 - 24A94401)」が並びました。ディスクには余裕を見ておいてください。ランタイムはXcodeのダウンロードの4倍あります。3

初回起動時のiPhone Duoシミュレータの外側ディスプレイ、1398×2034ピクセル。ステータスのまとまりが右端を縦に走ります。AppleのHuman Interface GuidelinesがiPhone DuoのDynamic Islandとステータスバーを置いている、まさにその側です。10
27.1 SDKにDuo APIは入っているのか?
9月17日、私はAppleの「Preparing your app for iPhone Duo」ガイドが使う名前をiOS 27.0 SDKで探し、このデバイス固有の10個はどれも見つけられませんでした。同じやり方、つまりモジュールインターフェースとヘッダに対する素朴なテキスト検索を27.1 SDKに走らせると、10個すべてが見つかります。表の行は検索した部分文字列です。10個のうち9個は7行に収まっており、2つのreservedRegionsメソッドと2つのaxisBehaviorメンバーがそれぞれ1行を共有しています。残る3行は名前の背後にある型で、ReservedRegion、toolbarVerticalBehavior(_:)に対応するToolbarVerticalBehavior、そしてpreferredVerticalBarBehaviorに対応するUIVerticalBarBehaviorです。4
| 検索した部分文字列 | SwiftUICoreインターフェース | SwiftUIインターフェース | UIKitインターフェース | UIKitヘッダ |
|---|---|---|---|---|
ArrangementView |
45 | 0 | 19 | 4ファイル |
UIArrangementViewController |
0 | 0 | 19 | 4ファイル |
ReservedRegion |
16 | 0 | 15 | 3ファイル |
reservedRegions |
2 | 0 | 5 | 1ファイル |
ToolbarVerticalBehavior |
0 | 5 | 0 | 0 |
UIVerticalBarBehavior |
0 | 0 | 0 | 1ファイル |
verticalBarEdge |
0 | 0 | 0 | 1ファイル |
toolbarVerticalEdge |
1 | 0 | 0 | 0 |
axisBehavior |
0 | 2 | 0 | 1ファイル |
preferredVerticalBarBehavior |
0 | 0 | 0 | 1ファイル |
この表には、コードの書き方に関わる細部が2つあります。1つ、SwiftUIの型はSwiftUICoreにあり、これはimport SwiftUIが再エクスポートするモジュールですから、普通のimportで届きます。もう1つ、availabilityの属性がプラットフォームの範囲についてドキュメントと食い違っています。SwiftUICoreのインターフェースはArrangementViewを、SwiftUIのインターフェースはtoolbarVerticalBehavior(_:)を、どちらも@available(anyAppleOS 27.1, *)の下で宣言しています。anyAppleOSは、そのバージョンの全プラットフォームを指すAppleの略記です。これに対してUIArrangementViewController.hと、UIView.hのreservedRegionsOfKind:メソッドはAPI_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1))とAPI_UNAVAILABLE(watchos)を携えています。UIVerticalBarEdge.hでも、enumとverticalBarEdgeのトレイトは同じ組み合わせですが、LeadingとTrailingのケースだけはAPI_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos)です。Appleのドキュメントページは5つとも、iOS 27.1とiPadOS 27.1だけをbeta扱いで挙げています。47 iOSに向けて書き、残りはコンパイラに教えてもらいましょう。
ガイドが使う名前のうち、すでに27.0 SDKにあった3つは変わっていません。presentationPlacement(_:)は今も@available(anyAppleOS 27.0, *)の下にあり、backgroundExtensionEffect()はiOS 26から引き続き健在です。ガイドが名前を挙げる2つのToolbarItemPlacementのケースについては、topBarPinnedTrailingが@available(iOS 27.0, visionOS 27.0, *)の下にあり、cancellationActionには型のもの以外に固有のavailabilityは付いていません。4
シミュレータのプロファイルは2つのディスプレイについて何と言っているのか?
AppleがベータとともにインストールするデバイスタイプiPhone Duo.simdevicetypeは、/Library/Developer/CoreSimulator/Profiles/DeviceTypesの下に置かれた素朴なバンドルで、その2つのプロパティリストが、スペックシートでは開いたままだった問いに答えてくれます。5
素性を教えるのはprofile.plistです。モデル識別子はiPhone19,4、プロダクトクラスはV68、エイリアスはcom.apple.CoreSimulator.SimDeviceType.V68、minRuntimeVersionは27.1で、27.1以降のランタイムではこのデバイスをデフォルトで作るというルールが入っています。ハードウェアを教えるのはcapabilities.plistです。モデル番号A3447、HomeButtonTypeは2、DeviceSupportsDynamicIslandはtrue、DeviceSupportsEnhancedMultitaskingはfalse、IsLargeFormatPhoneはtrue、CompatibleDeviceFallbackはiPhone18,3、デバイスの角丸半径は59、そして内蔵2つと仮想3つのエントリを持つdisplays配列です。5
| プロファイル上のディスプレイ | ピクセル | スケール | ポイント | ネイティブの向き | 角丸半径 | 色空間 |
|---|---|---|---|---|---|---|
primary(「LCD」、スクリーン1) |
1398×2034 | 3 | 466×678 | 0 | 8、59、8、59 | P3 |
primary-1(「LCD-1」、スクリーン3) |
2007×2853 | 3 | 669×951 | 270 | 4隅とも55 | sRGB |
1行目は外側ディスプレイで、Appleのスペックシートとピクセル単位で一致します。2行目は内側ディスプレイですが、そのピクセル数はパネルの1878×2670ではなく、App Store Connectのスクリーンショットサイズである2007×2853のほうです。つまりシミュレータは内側ディスプレイを3xの669×951ポイントで描いており、これはDuo開発者向けの記事が9月10日に行い、推論だと明記した計算そのもの。Apple自身のプロファイルが、いまその数字を持っています。ネイティブの向きが270度だということは、内側ディスプレイはランドスケープがネイティブで、端末を開いたときは幅951ポイント・高さ669ポイントになるという意味で、Appleが示した開いた状態の寸法とも合います。残る2つの数字は、ハードウェアではなくシミュレータの値です。両ディスプレイとも460ppi、60 Hzと書かれていますが、スペックシートでは内側パネルは430ppiですから、hdpiはプレースホルダだと思っておいてください。5
プロファイルは形も配っています。それぞれのディスプレイはフレームバッファマスク、つまり可視領域のPDFを参照しています。外側ディスプレイのマスクは角が非対称で、プロファイルの値では長辺の一方が8、もう一方が59。私の読みでは、半径の小さいほうが、Appleのデザインガイドの言う中央のヒンジに接する側です。内側ディスプレイのマスクは、プロファイルの角の値55をそのまま使った普通の角丸長方形で、フロントカメラの切り欠きはありません。つまりカメラによる遮蔽は、フレームバッファの形ではなく実行時の予約領域APIからやってくることになります。510
シミュレータには何が映るのか?
デバイスは閉じた状態で起動します。初回起動では外側ディスプレイにホーム画面が出て、内側ディスプレイのフレームバッファは点いているのに真っ黒。simctl io enumerateはプロファイルの名前どおり、primaryを1398×2034、primary-1を2007×2853として、いつもの仮想スクリーンと並べて列挙します。6 私はジオメトリ、サイズクラス、toolbarVerticalEdgeの環境値、そしてincludeInactive付きで両方の種類の予約領域を読み、3つのスタイルそれぞれでArrangementViewを包み、ナビゲーションのツールバーに6つの項目を置く、1ファイルのSwiftUIプローブをインストールしました。6

外側ディスプレイのプローブ、Closedのポーズ。466×678ポイント、幅はcompact、splitのarrangementは上下、ツールバーは横向きです。
Closedでは、プローブはコンパクトなiPhoneが報告するとおりのことを報告します。UIScreen.main.boundsはスケール3の466×678ポイント、サイズクラスは幅compact・高さregular、toolbarVerticalEdgeはnil、UIKitのverticalBarEdgeトレイトはraw値0、そして予約領域への2つの問い合わせは、非アクティブな領域を含めても空の配列を返します。閉じたポーズはアプリに折り目もカメラも見せない、ということです。ナビゲーションスタックの中のGeometryReaderが測ったのは386×510ポイントで、セーフエリアインセットは上134、下34、左右はなし。私の読みでは、システムが確保した幅80ポイントは、ステータスのまとまりが載る右側のレールです。splitのarrangementはプライマリビューをセカンダリの上に置きました。Appleのガイドが説明する、幅より高さが勝るケースです。ツールバーは上部に横向きで描かれ、Shareとチェックマークの完了ボタンがオーバーフローボタンの隣に並び、4つの副次的なアクションはバーから消えて、その配置からするとメニューの中にありました。67
ポーズが住んでいるのはDevice Hubです。Duoのデバイスを選ぶと、そのウィンドウにはRotate Right、Closed、Book、Openが、アクセシビリティAPIから押せるボタンとして並びます。この節の残りも、そうやって動かしました。6
Openはアプリを内側ディスプレイの、ランドスケープであるネイティブの向きへ移します。プローブは幅regular・高さregularを報告し、GeometryReaderは803×515ポイントを測り、セーフエリアインセットは上134、左右それぞれ34、下20でした。幅から消えている80ポイントは閉じたポーズと同じで、私の読みではまたあのレールです。今度は951ポイント幅の画面の右側にあり、そこにステータスのまとまりが収まっています。splitのarrangementはプライマリとセカンダリのビューを左右に並べます。Appleのガイドの言う、高さより幅が勝るケースです。ツールバーは右上に横向きで描かれ、ここでもShareと完了がオーバーフローボタンの隣に並び、4つの副次的なアクションはバーから消えていました。6

Openのポーズ、内側ディスプレイ、2853×2007ピクセル。両方向ともregular、splitのarrangementは左右並び、レールは右です。
Rotate Rightは内側ディスプレイを縦にします。プローブが測るのは669×703ポイント、両方向ともregular、インセットは上134、下34、左右はなし。私の読みでは、80ポイントのレールが上端へ移り、ステータスのまとまりはそこの黒い帯に収まっています。そしてコンテナが幅より高くなっても、splitのarrangementは左右並びのままです。6

回転させた内側ディスプレイ。幅669ポイント、両方向ともregularのまま、レールは上端です。
部分的に折りたたんだポーズであるBookこそ、予約領域APIが働きを見せる場面のはずですが、このベータでは私のプローブに対してそうなりませんでした。前面にアプリがない状態でBookを押したあとの内側ディスプレイにはホーム画面が出ており、起動し直したプローブはOpenのときとまったく同じ、803×515ポイント、両方向ともregular、そして非アクティブな領域を含めてもdivisions 0・occlusions 0を、SwiftUIでもUIKitでも報告しました。閉じたポーズでも0です。reservedRegionsが折り目やカメラを返すポーズを、私は見つけられませんでした。折り目に合わせて変わるレイアウトは、このベータのシミュレータでは見せてもらえなかったということです。Appleのガイドは、分割がアクティブになるのは「when iPhone Duo is partially open,」(iPhone Duoが部分的に開いているとき)だと説明しており、これがベータ側の穴なのかプローブ側の穴なのかは、次のベータに持ち越しの問いです。67
どのポーズでも変わらなかったことが、もう2つあります。ツールバーは一度も縦に描かれませんでした。toolbarVerticalEdgeはSwiftUIでnil、verticalBarEdgeはUIKitでraw値0。閉じても、開いても、回転させても同じで、Appleのガイドが説明する縦のバーは、このベータではナビゲーションスタックのツールバーに現れませんでした。そしてUIScreen.main.boundsは、アプリが内側ディスプレイにある間も外側ディスプレイの466×678ポイントを答えました。Appleのガイドがレイアウトの計算を「based on your scene or containing view’s bounds rather than screen dimensions」(画面の寸法ではなく、シーンまたは包含ビューのboundsを基準に)と言って警告しているのが、まさにこの罠です。メインスクリーンは、いま自分が載っているスクリーンではありません。プローブをビルドすると、コンパイラはすでに'main' was deprecated in iOS 26.0と言ってきます。その理由が、このデバイスです。67
他のポーズへ回り込む道のうち、1つはうまくいきません。simctl io screenConfigはスクリーンの電源を落とせますが、内側を点けたまま外側ディスプレイの電源を落としても端末は開きませんでした。落ちたのはシミュレータのシステムシェルのほうで、続くsimctl launchは「The system shell probably crashed.」で失敗し、再起動が必要になりました。ポーズが住んでいるのはDevice Hubのウィンドウです。6
このベータにまだできないこと
ベータ自身のノートのSimulator、Known Issuesには、限界が3つ挙がっています。「Initial Simulator launch can take several minutes.」(187708500)、「StandBy is unavailable in the iPhone Duo Simulator runtime.」(187708663)、そして「Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime.」(187708767)。2 StandByの1件は、それ向けのウィジェットやライブアクティビティを持っている人には効いてきます。Appleの発表はこの端末について「enters StandBy on either the outer or inner display」(外側でも内側でもStandByに入る)と述べ、それを「hub for widgets」(ウィジェットのハブ)と呼んでいます。そこに何が現れるのかはDuo開発者向けの記事で扱いました。後続のベータがこの制限を外すまで、この端末のStandByは実機で確かめるものです。11
もう2件はMac CatalystのKnown Issuesにあり、これらのAPIを採用していてMac向けにもビルドするアプリを直撃します。1件目は「Projects that use APIs specific to iOS 27.1 show compile errors when building for Mac Catalyst (“undeclared identifier”, “not found”, “has no member”, “cannot find”, etc). (185924957)」で、Appleの回避策はSwiftなら#if !targetEnvironment(macCatalyst)、Objective-Cなら#if !TARGET_OS_MACCATALYST。2件目は「Projects that target iOS 27.1 show no Mac Catalyst run destination available. (187046347)」で、回避策は「Add a Mac Catalyst 27.0 minimum deployment in target settings.」です。2 Xcode 27.2ベータのノートは、反対方向から3件目を加えます。「macOS, watchOS, tvOS, and visionOS SDKs in Xcode 27.2 incorrectly report 27.1 as a valid deployment target,」、そして「Mac Catalyst builds with a 27.1 or 27.2 deployment target may be unable to use newly introduced API.」 (187160501)。8
私なら今週こうする
- Xcode 27.0に被せるのではなく、その隣にベータを入れる。xipを展開し、アプリをリネームし、コマンドラインのビルド用に
DEVELOPER_DIRをそこへ向けます。ベータのノートに27.0のツールチェーンを変えるものは1つもなく、コンパイラとリンカのバージョン文字列も同一です。4 - 必要になる前にランタイムのダウンロードを始める。ベータ配下で
xcodebuild -downloadPlatform iOSを走らせ、失敗したらやり直します。iPhone Duoのデバイスタイプを起動可能にするのはこのランタイムであり、そのうえAppleは初回起動に数分かかると警告しています。23 - Mac Catalystのターゲットを含めたまま、27.1 SDKに対して一度ビルドする。新しいAPIを
#if !targetEnvironment(macCatalyst)で囲うのか、Catalystの下限を27.0へ上げるのかを決める前に、Appleが名指ししている2つの診断を読んでおきましょう。2 - プレビューとテストで使うサイズは、プロファイルの数字にする。閉じて466×678ポイント、開いて669×951ポイント、内側ディスプレイはランドスケープがネイティブです。ベータのPreviewsのノートは、キャンバスのオーバーライドのピッカーに「for previewing content on a device’s alternative display.」(デバイスのもう一方のディスプレイでコンテンツをプレビューするため)のDisplayグループを加えたと書いています。(182598534)25
- 開発中はポーズごとに予約領域をログへ出す。
.includeInactiveを渡したreservedRegions(kind:options:layoutDirectionBehavior:)は、折り目とカメラをアクティブにも非アクティブにもなりうるReservedRegionの値として返す、とドキュメントにはあります。このベータではどのポーズも何も返しませんでしたから、onChange(of: proxy.size)に1行ログを仕込んでおけば、どのポーズがいつ報告を始めたのかが分かります。67
よくある質問
Xcode 27.1 betaにiPhone Duoシミュレータは入っていますか?
はい。ベータはiPhone Duoというデバイスタイプ、com.apple.CoreSimulator.SimDeviceType.iPhone-Duoをインストールします。そのプロファイルが要求するiOS 27.1のランタイムは、Xcodeがxcodebuild -downloadPlatform iOSで別途ダウンロードします。Appleのノートは、初回起動に「can take several minutes」(数分かかることがある)こと、そしてそのランタイムではStandByとほとんどのApp Extensionが使えないことを警告しています。235
Xcode 27の隣にXcode 27.1 betaを入れるにはどうしますか?
xip --expandでxipを展開し、できたアプリを/Applications/Xcode-27.1-beta.appのようなバージョン入りの名前へ移し、xcodebuild・xcrun・swiftcのためにDEVELOPER_DIRをそのContents/Developerフォルダへ設定します。ベータが要求するのはmacOS Tahoe 26.6以降で、Xcode 27.0と同じ下限です。24
iPhone Duoの内側ディスプレイはポイントでいくつですか?
669×951ポイントです。シミュレータのデバイスプロファイルが、内側ディスプレイをスケール3の2007×2853ピクセル、ランドスケープがネイティブの向きとして定義しています。外側ディスプレイはスケール3の1398×2034ピクセルから466×678ポイントです。5
Xcode 27.1 betaはiOS 27.0 SDKやXcode 27のツールチェーンを変えますか?
いいえ。SwiftコンパイラもリンカもXcode 27.0と同じバージョン文字列を報告しますし、ベータのリリースノートにあるのはMac Catalyst、Previews、Simulatorの3つの節だけで、どれもツールチェーンには触れていません。iOS 27.1 SDKは追加であり、デバイスとシミュレータの両方のSDKでビルド24A94403として識別されます。24
iPhone Duoはいつ、何の上で出荷されますか?
10月23日、iOS 27.1の上で。Appleの9月16日のニュース記事にこうあります。「When iPhone Duo becomes available on October 23, it will run iOS 27.1.」9
出典
-
Apple、Releases、2026年9月19日に取得したRSSフィード。「Xcode 27.1 beta (27A9269)」はFri, 18 Sep 2026 10:00:00 PDT付け、「TestFlight Update」はFri, 18 Sep 2026 14:00:00 PDT付け。Apple、App Store Connectのリリースノート、2026年9月18日、TestFlightの更新を全文引用。 ↩↩↩
-
Apple、Xcode 27.1 Beta Release Notes、2026年9月19日にドキュメントのJSONエンドポイント経由で取得。Overviewを引用。Mac CatalystのKnown Issues 185924957と187046347を、それぞれの回避策とともに引用。PreviewsのNew Features 182598534を引用。SimulatorのKnown Issues 187708500、187708663、187708767を引用。このノートに他の節はありません。 ↩↩↩↩↩↩↩↩↩↩↩
-
筆者によるmacOS 26.6.2(25G83)上でのランタイムのダウンロード、2026年9月19日、
DEVELOPER_DIRはXcode 27.1 betaに設定。xcodebuild -downloadPlatform iOSは、インストール済みの27.0ランタイムについて「iOS is already downloaded.」と表示し、続いて「Downloading iOS 27.1 Simulator (24A94401) (arm64)」と表示したあと、DVTDownloadable: Download Failed. Downloadable: DVTDownloadable(identifier: 0a4e7582-0061-5907-bea9-fe234c1f9392, version: 27.1.0.1, category: simulator, contentType: cryptexDiskImage, downloadMethod: mobileAsset, platform: com.apple.platform.iphoneos)とError Domain=DVTDownloadableErrorDomain Code=41 "Download failed."を出しました。やり直しのxcodebuild -downloadPlatform iOS -buildVersion 24A94401は「Downloading iOS 27.1 Simulator (24A94401) (arm64): 0.0% (66 kB of 7.85 GB)」と表示して完走し、その後xcrun simctl list runtimesには「iOS 27.1 (27.1 - 24A94401) - com.apple.CoreSimulator.SimRuntime.iOS-27-1」が並びました。同じ日にサインインした状態でAppleの開発者向けダウンロードページを「Simulator Runtime」で検索すると、iOS 18.2 Simulator Runtimeより新しいディスクイメージは見当たりません。 ↩↩↩↩↩ -
筆者による
/Applications/Xcode-27.1-beta.appの調査、2026年9月19日。xcodebuild -versionはXcode 27.1とBuild version 27A9269を出力。xcrun --sdk iphoneos --show-sdk-versionとxcrun --sdk iphonesimulator --show-sdk-versionはどちらも27.1を出力。両SDKのSystemVersion.plistはProductBuildVersion24A94403とProductVersion27.1を持ちます。xcrun swift --versionはApple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1)、xcrun ld -vはld-27037.1を出力し、同じMac上でXcode 27.0(27A266a)が出力するバージョン文字列と同一です。Xcode_27.1_beta.xipは2,027,292,809バイト。pkgutil --check-signatureはSoftware Updateの証明書チェーンとともに「signed Apple Software」と報告します。展開後のアプリに対するdu -skは3,813,336 KB、/Applications/Xcode-27.appに展開したXcode 27.0(27A266a)は3,804,188 KBでした。名前の件数は、iPhoneOS SDKのSwiftUICore.swiftmodule/arm64e-apple-ios.swiftinterface、SwiftUI.swiftmodule/arm64e-apple-ios.swiftinterface、UIKit.swiftmodule/arm64e-apple-ios.swiftinterfaceに対するgrep -cと、UIKit.framework/Headers全体に対するgrep -rlのファイル数です。availabilityの属性は同じファイルから読みました。SwiftUICoreのインターフェースのpublic struct ArrangementView<の上と、SwiftUIのインターフェースでfunc toolbarVerticalBehaviorを宣言するextension SwiftUICore.Viewの上には@available(anyAppleOS 27.1, *)。UIArrangementViewController.h、UIView.hの2つのreservedRegionsOfKind:宣言、そしてUIVerticalBarEdgeのenumとverticalBarEdgeのトレイトにはAPI_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1))に続けてAPI_UNAVAILABLE(watchos)。そのUIVerticalBarEdgeLeadingとUIVerticalBarEdgeTrailingのケースにはAPI_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos)。func presentationPlacementの上には@available(anyAppleOS 27.0, *)。public static let topBarPinnedTrailingの上には@available(iOS 27.0, visionOS 27.0, *)、public static let cancellationActionの上には属性なし。初回起動については、ベータのDEVELOPER_DIR配下での最初のxcodebuild -versionが2分のタイムアウトを超えて走り、/var/log/install.logには、9月19日16時01分54秒にxcodebuildがPackageKitのインストールをキューに入れ、Xcode-27.1-beta.app/Contents/Resources/PackagesからCoreTypes.pkgとXcodeSystemResources.pkgを展開して16時03分04秒に完了した記録が残っています。そのあとのxcodebuild -checkFirstLaunchStatusは0を返しました。 ↩↩↩↩↩↩↩↩↩↩↩ -
/Library/Developer/CoreSimulator/Profiles/DeviceTypes/iPhone Duo.simdevicetype。Xcode 27.1 betaがインストールしたもので、2026年9月19日にplutil -convert xml1で読みました。profile.plistはmodelIdentifieriPhone19,4、productClassV68、aliasescom.apple.CoreSimulator.SimDeviceType.V68、minRuntimeVersion27.1、createByDefaultForRuntimeVersionsのversionMin 27.1。capabilities.plistはModelNumberA3447、ThinningProductTypeiPhone19,4、CompatibleDeviceFallbackiPhone18,3、DeviceCornerRadius59、HomeButtonType2、DeviceSupportsDynamicIslandtrue、DeviceSupportsEnhancedMultitaskingfalse、IsLargeFormatPhonetrue。ScreenDimensionsCapabilityはmain-screen-width 1398、main-screen-height 2034、main-screen-pitch 460、main-screen-scale 3。displaysはprimary(displayName LCD、screenID 1、width 1398、height 2034、scale 3、hdpiとvdpi 460、refreshRate 60、nativeOrientation 0、cornerRadiusUL 8、UR 59、LL 8、LR 59、colorspace P3)とprimary-1(displayName LCD-1、screenID 3、width 2007、height 2853、scale 3、hdpiとvdpi 460、refreshRate 60、nativeOrientation 270、4隅の角丸半径はすべて55、colorspace sRGB)、加えてexternal-0(TVOut)、wireless0(carPlay)、resizable(scene)。2つのframebufferMaskIdentifierのPDFはqlmanageでレンダリングして確認しました。パネルについてのAppleのスペックシートの数字はDuo開発者向けの記事にあります。ベータ配下のxcrun simctl list devicetypesは「iPhone Duo (com.apple.CoreSimulator.SimDeviceType.iPhone-Duo)」を挙げます。 ↩↩↩↩↩↩↩↩↩ -
筆者によるmacOS 26.6.2(25G83)上での実行、2026年9月19日および20日。デバイスは
simctl create "Duo-27.1" com.apple.CoreSimulator.SimDeviceType.iPhone-Duo com.apple.CoreSimulator.SimRuntime.iOS-27-1で作成し、simctl bootとsimctl bootstatus -bで起動(このMacでは1分ほど)。simctl io <udid> enumerateはディスプレイクラス0のcom.apple.framebuffer.displayポートを1398×2034と2007×2853の2つ挙げ、Connected Screensの下には「LCD-1」がデバイス名primary-1、スクリーンID 3、ピクセルサイズ{2007, 2853}として並びます。プローブはDuoProbe。1ファイルのSwiftUIアプリで、Xcode 27.1 beta配下のxcrun swiftc -sdk <iPhoneSimulator.sdk> -target arm64-apple-ios27.1-simulator -parse-as-libraryでビルドし、simctl installでインストール、simctl launch --console-ptyで起動、スクリーンショットはsimctl io <udid> screenshot --mask=alpha --display=primaryと--display=primary-1で取得しました。閉じたポーズのコンソール行はDUOPROBE screen=(466.0, 678.0) scale=3.0 idiom=0 model=iPhone name=Duo-27.1、DUOPROBE size=386x510 h=compact v=regular verticalEdge=nil safe=EdgeInsets(top: 134.0, leading: 0.0, bottom: 34.0, trailing: 0.0)、DUOPROBE uikit bounds=(354.0, 44.0) divisions=0 occlusions=0 verticalBarEdge=UIVerticalBarEdge(rawValue: 0)。division[やocclusion[の行はありません。--display=primary-1のスクリーンショットは真っ黒です。スクリーンの電源については、simctl io <udid> screenConfig --display=primary power offが「Screen 1 power state set to off」と出力し、次のsimctl launchがFBSOpenApplicationServiceErrorDomainのコード5、「The system shell probably crashed.」で失敗。simctl shutdownとbootでデバイスは復旧しました。ポーズごとの実行は9月20日に2シリーズ行い、いずれもDevice Hubが選択中のデバイスに対して出すボタンに対し、アクセシビリティAPIのAXPressアクションでRotate Right、Closed、Book、Openを押しています。どちらも27.2ベータのsimctlコマンドラインツール(スクリプトが設定するDEVELOPER_DIR)から、27.1ベータのランタイム、デバイスタイプ、Device Hubに対して駆動しました。1つ目のシリーズでは、次のボタンを押した時点で前のポーズのプローブがまだ動いており、そのあと終了・再起動させて、コンソールを12秒分、両ディスプレイのスクリーンショットを取得しています。上記の回転時の値と遷移中の行は、こちらのシリーズのものです。2つ目のシリーズでは、取得のたびにプローブを終了させ、次のボタンを押すときに前面にアプリがない状態にしました。再起動前のスクリーンショットはこちらのものです。Open:DUOPROBE size=803x515 h=regular v=regular verticalEdge=nil safe=EdgeInsets(top: 134.0, leading: 34.0, bottom: 20.0, trailing: 34.0)、DUOPROBE uikit bounds=(771.0, 44.0) divisions=0 occlusions=0 verticalBarEdge=UIVerticalBarEdge(rawValue: 0)、そしてDUOPROBE screen=(466.0, 678.0)。--display=primary-1のスクリーンショットにはプローブが写り、--display=primaryは真っ黒です。Book: 再起動後に同じ3行。押したあと再起動する前に撮った内側ディスプレイのスクリーンショットには、アプリが動いていない状態でホーム画面が写っています。Closed: 上記の閉じたポーズの行。Rotate Rightのあと、Open:DUOPROBE size=669x703 h=regular v=regular verticalEdge=nil safe=EdgeInsets(top: 134.0, leading: 0.0, bottom: 34.0, trailing: 0.0)とuikit bounds=(637.0, 44.0)、内側ディスプレイのスクリーンショットは縦向き。division[やocclusion[の行を出した実行は1つもありません。回転した閉じた状態は、ポーズが変わる途中の遷移行としてDUOPROBE size=610x232 h=compact v=compact ... screen=(678.0, 466.0)が現れただけで、上の数には入れていません。 ↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple、2026年9月19日に取得したドキュメントのJSON。ArrangementView、UIArrangementViewController、reservedRegions(kind:options:layoutDirectionBehavior:)、reservedRegions(kind:options:)、toolbarVerticalBehavior(_:)。いずれのページも、プラットフォームのavailabilityはiOS 27.1とiPadOS 27.1で、beta表示です。Apple、Preparing your app for iPhone Duo、同じ日に取得。ガイドが使う名前の出どころです。 ↩↩↩↩↩
-
Apple、Xcode 27.2 Beta Release Notes、2026年9月19日取得、SDK、Known Issues、187160501を引用。 ↩
-
Apple、「Get ready with the latest beta releases」、ニュース、2026年9月16日、「Note about iOS 27.1 and iPhone Duo」を引用。 ↩
-
Apple、Designing for iPhone Duo、Human Interface Guidelines、2026年9月20日にドキュメントのJSONエンドポイント経由で取得。「Controls on the side include both system and app elements: the Dynamic Island, the status bar, the toolbar (including navigation buttons), and the tab bar.」、そして「A hinge in the center lets people open and close the device」。 ↩↩
-
Apple Newsroom、Apple unveils iPhone Duo、2026年9月9日、2026年9月20日取得。StandByの段落から「Set iPhone Duo down and it enters StandBy on either the outer or inner display」と「hub for widgets」を引用。 ↩