概要
- Xcode や SwiftUI 開発における実際の困難と問題点の指摘
- エラーメッセージやプロジェクトファイルの扱いに関する課題
- Appleのドキュメントやサポート体制の不透明さへの批判
- 開発者体験の悪化と代替手段の不足
- 初学者や現役開発者への注意喚起と提言
Xcode・SwiftUI開発におけるエラー体験
- SwiftUI 開発時によく遭遇するエラー「 The compiler is unable to type-check this expression in reasonable time」の意味
- コンパイラが処理を諦めた状態
- エラー箇所が実際の問題箇所と一致しない可能性
- 単純な構文ミスから複雑なロジックまで原因が多岐
- エラー発生時、 Xcode がほぼ役立たずの状態になる
- 頻繁なコミット推奨
- 問題解決までエディタとしてしか使えない状況
Xcodeプロジェクトファイルの問題点
- myProject.xcodeproj/project.pbxproj ファイルの複雑さ
- 数千行に及び、 人間には読めない形式
- 設定ミスや競合=プロジェクト自体が開かなくなるリスク
- 例:PBXContainerItemProxyなど意味不明な記述
- マージコンフリクト時の絶望感
- xcodegen などでYAML管理→自動生成する方法が現実的
- UIKit アプリのUIレイヤーも同様に不可読ファイルで管理
UIやシステムの設計上の問題
- ダイアログボックスの不具合例
- 複数のパスワード入力ダイアログが重なる現象
- 問題解決の進捗はシャドウの色でしか分からない
Appleのサポート・ドキュメントの不透明さ
- In-App Purchaseのテストにおける混乱
- Apple公式ドキュメントと実際の挙動の乖離
- シミュレータでの挙動が不明確
- 開発者フォーラムでも明確な答えが得られない現状
- Appleの情報の信頼性の低さ
WWDCや公式発表の実態
- WWDC での新機能紹介は実質的に広告
- SwiftUI Previewの実用性の低さ
- 実際には複雑なプロジェクトでは機能しない場合が多い
- 公開時点での品質と発表内容の乖離
Appleのバグトラッカーと開発者サポート
- Appleのバグトラッカー(Radar)は非公開
- バグ報告は一方通行で、進捗や既知バグの共有なし
- 開発者同士の情報共有が困難
- 同じ問題の再発見に多くの時間が浪費される
Xcode以外の選択肢とCLIツール
- iOS開発における エディタの選択肢の少なさ
- neovim+xcode-build-serverは不安定
- Jetbrains AppCodeは開発終了
- CLIツールのドキュメント不足・使いにくさ
- CIや自動化の難しさ
- Fastlane など外部OSSに依存する現実
- Claude CodeなどAIツールも同様に苦戦
macOS依存と開発者体験
- macが必須 という前提
- Xcodeでの開発経験が開発者としての成長を阻害
- 問題解決が儀式化しやすい環境
- 「Xcode再起動」「Derived Data消去」「Mac再起動」などのテンプレ対応
- 根本的な理解や改善に繋がりにくい風土
初学者・現役開発者への提言
- Appleは技術的負債や開発者体験の改善に消極的
- iOS開発を始める人には Xcodeから距離を置くことを推奨
- Xcodeの使い勝手や挙動に悩むのは 自分のせいではない
- 「Xcode sucks」 という結論