6月8日、John Gruberが「SwiftUI Only Makes It Easy to Develop Bad Apps」と題した記事を公開した。
Appleの看板UIフレームワークであるSwiftUIが、リリースから7年経った今でも基本的なUndo/Redo機能すら正常に動作しないという衝撃的な問題を、著名なApple評論家のGruber氏が詳細に検証している。特に注目すべきは、Apple純正のJournalアプリでさえこの問題が発生し、ユーザーのテキストが永久に失われるケースが報告されていることだ。
発端:完全SwiftUI開発の現実
この議論の発端となったのは、Paulo Andrade氏が5月に公開した「Using SwiftUI to Build a Mac-Assed App in 2026」という記事だ。Andrade氏は価格追跡アプリ「Shopie」のmacOS版を100%SwiftUIで開発した経験をレポートしている。
SwiftUIは2019年のWWDCで発表されて以来、iOS、macOS、watchOS、tvOS間でのコード再利用と宣言的UI開発の理想を掲げてきた。しかし、Andrade氏の結論は手厳しいものだった:
SwiftUIは生産的で、モダンで、しばしば素晴らしい。本当に良いMacアプリを作ろうとするまでは。その瞬間、Macが20年前に解決したことについてフレームワークと戦うことになる。
Apple純正アプリでも発生する致命的バグ
Gruber氏は、SwiftUIの問題を象徴する具体例としてApple純正の「Journal」アプリを挙げている。最新のmacOSで以下の操作を試すと問題が明確になる:
- Journalで新しいエントリを作成
- 「The quick brown fox.」と入力
- 「brown」をダブルクリックして削除
- Command+Zでアンドゥを実行
期待される動作は「brown」が復活することだが、実際には文章全体が消失する。Redoを実行しても「The quick fox.」しか戻らず、「brown」は永久に失われる。
これは根本的におかしい。AppKitアプリでこのようなことは一度も見たことがない。
Gruber氏は実際にJournalアプリを使用しており、この欠陥のあるUndo実装によって文章全体を失った経験があると証言している。SwiftUIでのテキスト編集は基本的な機能が破綻しているため「危険」だと断言する。
7年間解決されない根本問題
最も深刻なのは、SwiftUIがリリースから7年経過しているという事実だ。AppKitでは1989年頃から、NeXTとAppleが再統合する遥か前からテキスト編集とUndoの問題を適切に解決していた。
AppKitとUIKitでは今でも真実だが、SwiftUIでは一度も真実になったことがない。そしてSwiftUIは現在7歳になる。どんな言い訳も通用しないほど長い時間が経過している。
かつてAppleの開発者向けメッセージは、同社プラットフォーム向けのアプリ開発が簡単なだけでなく、高品質でネイティブなアプリの開発が簡単だということだった。SwiftUIはこの約束を果たせていない。
クロスプラットフォームの代償
この問題の根源は、Appleがクロスプラットフォーム開発の利便性を追求する過程で、各プラットフォームの成熟したフレームワークが提供していた信頼性と品質を犠牲にした点にある。
SwiftUIの登場背景には、ReactやFlutterなどのクロスプラットフォームフレームワークの台頭がある。Appleはこれらに対抗するため、自社プラットフォーム間でのコード共有を実現するSwiftUIを急いで投入したが、結果として基本機能の完成度が犠牲になったと見られる。
Andrade氏の記事では、Shopieのような比較的小規模なアプリを100%SwiftUIで開発した際に遭遇した「数十の小さな傷」が詳細に記録されている。現代的で優秀なMacアプリの開発は可能だが、その過程はフレームワークとの格闘に満ちている。
今後の展望
来月のWWDC 2026では、AI関連の発表に注目が集まる中、Gruber氏はSwiftUIとMac開発の問題を優先課題として位置づけている。7年間積み重なった技術的負債の解消と、開発者がAppleのフレームワークを再び信頼できるようになるかが、同社のプラットフォーム戦略の成功を左右するだろう。
特に、Undo Managerの適切な実装と、AppKitレベルの信頼性をSwiftUIで実現できるかが焦点となる。
詳細はSwiftUI Only Makes It Easy to Develop Bad Appsを参照していただきたい。