AppleはWWDC 2019でCarbon APIを削除し、代わりにMac CatalystとSwiftUIを導入しました。
macOS Catalina以降、開発者は3つの異なるUIフレームワークを使用して、Mac用のネイティブアプリを作成することができるわけですが、Apple自体はどのフレームワークを使用してアプリを作成しているのでしょうか。
現在の状況を分析したブログ記事「Apple’s use of AppKit, Mac Catalyst and SwiftUI in macOS」が公開されています。
開発者のAlexandre Colucci氏は、detectUIFramework.shと呼ばれるスクリプトを使用し、アプリが何で作られているかを分析しています。
スクリプトは以下のような動作を行います。
- バイナリがUIKitにリンクしているかどうかをチェックし、Mac Catalystアプリを検出する。
/System/iOSSupport/System/Library/Frameworks/UIKit.framework/Versions/A/UIKit
- バイナリが以下にリンクしているかどうかをチェックし、SwiftUIを使用しているかどうかを検出する。
/System/Library/Frameworks/SwiftUI.framework/Versions/A/SwiftUI
- バイナリが以下にリンクしているかどうかをチェックし、AppKitを使用しているかどうかを検出する。
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
- NSApplicationMainとs7SwiftUI3AppPAAE4mainyyFZのシンボルをチェックすることで、アプリがAppKitアプリかSwiftUIアプリかを検出する。
- System/iOSSupportにあるバイナリはMac CatalystとiOSアプリしかサポートしていないので、すべて除外。
AppKit対Mac Catalyst対SwiftUI
同記事ではmacOSの各バージョンに含まれるアプリを3つのカテゴリにグループ化してグラフを作成しています。
- Mac Catalystアプリ(SwiftUIとAppKitも使用する可能性がある)
- SwiftUIを使用するアプリ(Mac Catalystは使用しないが、AppKitは使用する可能性がある)
- AppKitのみを使用するアプリ
macOS MontereyからmacOS VenturaまでのmacOSに含まれるアプリを調査した結果のグラフは以下の通りです。
グラフを確認すると次の事がわかります。
- AppKitアプリの占める割合が非常に大きい。
- 出遅れたSwiftUIを利用するアプリが急速に増えている。
- Mac Catalystアプリの数は頭打ちになった。
macOS Mojaveで「Marzipan」として試験的に導入され、macOS Catalinaで一般開発者も利用可能となった「Mac Catalyst」は、iOSアプリをmacOSに素早く導入するための手段として使用されましたが、Apple製アプリに関しては移植がほとんど終わり、現在はアプリの数がほとんど増えていない状況のようです。
対してSwift UIのアプリの数が増えておりmacOS Venturaでも「Font Book」「システム設定」「Tips」というアプリで使用されている模様です。
新しく導入されたUIフレームワークの使用が順調に増えているということで、Appleが意図した方向に進んでいると考えることができそうです。