2026/06/09 11:21

Apple、SwiftUIを「全部書き直すもの」ではなく既存アプリの継ぎ足し道具にした

WWDC26でAppleが強く押し出したのは、SwiftUIへの全面移行ではありません。@Observableで既存のAppKitやUIKitビューを自動更新し、NSHostingViewで新しいUIだけ差し込み、NSGestureRecognizerRepresentableやNSHostingMenu、NSHostingSceneRepresentationで古いライフサイクルのまま機能を増やす。SwiftUIは今年、書き直しを迫る技術ではなく、既存アプリの隙間を埋める道具として一段現実的になりました。

Apple記事の編集用サムネイル

Appleは今年、SwiftUI全面移行より「継ぎ足し」を正面から認めた

AppleのSwiftUIトップページは、SwiftUIはUIKitやAppKit alongsideで動くよう設計されており、既存アプリにincrementally adoptできると明記しています。WWDC26の『Use SwiftUI with AppKit and UIKit』は、その建前をかなり具体的な実装にまで下ろしたセッションでした。

WWDC26のUse SwiftUI with AppKit and UIKitセッション画像
画像: Apple Developer

セッション要約では、Logic Proのplug-in、XcodeのCoding Assistant、NSSliderやNSSwitchのようなAppKit controlでもSwiftUIが既に使われていると説明しています。Appleは『新規アプリはSwiftUI、既存アプリは旧来フレームワーク』という線引きより、必要な箇所だけSwiftUIへ寄せる実務路線を公然化したと読むほうが正確です。

@ObservableとNSHostingViewで、古い画面のまま新しい部品を差し込める

セッションの前半で効いてくるのはObservationです。AppleはAppKitやUIKitがdraw、layout、updateLayerなどで読んだプロパティを追跡し、@Observableなmodel変更に合わせて再描画できると説明しています。これまで手でneedsDisplayやinvalidateをばらまいていた箇所を、自動追跡に置き換えられるのが大きい。しかもmacOS 15とiOS 18までback-deployできる条件も示されました。

次にAppleは、複雑な描画や新しいinteractionが必要になった場所だけSwiftUIへ切り出す流れを見せています。色選択UIをSwiftUI Canvasで作り、既存のAppKit階層へNSHostingViewで埋め込む。さらに既存のNSGestureRecognizer subclassをNSGestureRecognizerRepresentable経由でSwiftUIへ持ち込み、Force Clickのような既存操作も捨てずに再利用する。全面移行ではなく、いちばんつらい場所だけ先に置き換えるやり方です。

MenuBarExtraや設定画面まで、既存ライフサイクルの上に載せられる

後半で面白いのは、SwiftUIがviewの差し替えだけで終わらないことです。AppleはNSHostingMenuを使い、SwiftUIで組んだButtonやPickerをそのままAppKitのmain menuへ差し込む例を出しました。Force Clickのような入力デバイス依存の操作だけに頼らず、同じ機能をメニューからも触れるようにする考え方です。

既存アプリへSwiftUIを継ぎ足す4つの入口
入口今年の道具意味
状態更新@Observable手動invalidationsを減らし、古いviewのまま追従しやすくする
新しい部品NSHostingView複雑な描画や新しいinteractionだけSwiftUIへ逃がせる
既存入力の再利用NSGestureRecognizerRepresentableForce Clickのような既存gesture資産を捨てずに済む
メニューとsceneNSHostingMenu / NSHostingSceneRepresentationAppKit lifecycleのまま設定画面やMenuBarExtraを足せる

さらにNSHostingSceneRepresentationを使うと、AppKit lifecycleのままSettings sceneやMenuBarExtraまで足せます。つまり既存のNSApplicationDelegateを捨てなくても、SwiftUIのsceneモデルだけ部分的に借りられる。Appleは今年、SwiftUIを新規アプリ専用のきれいな世界から引き戻し、長く運用されているMacアプリの現場へ本気で降ろし始めました。

このセッションが重要なのは、SwiftUIがさらに万能になったからではありません。Apple自身が『全部書き直さなくていい』と言い切り、そのためのObservation、hosting、gesture reuse、menu、scene追加までひと通り揃えてきたからです。既存アプリを抱えるチームにとって、今年のSwiftUIは理想論ではなく、継ぎ足し可能な現実解にかなり近づきました。