Rork Max で生成した Swift プロジェクトを Xcode で開いた瞬間、赤いエラーが数十件出るのに最初は怯みます。私も初回はそうでした。ただ、運営している壁紙アプリ群で似た「初期ノイズ」を 10 年以上扱ってきた経験から、潰す順序を決めておくと体感で 30 分以内に実機ビルドに到達できます。順序を残しておきます。
廣川政樹と申します。アーティスト・個人開発者として 2014 年から壁紙アプリ群(累計 5,000 万ダウンロード超)を運営しており、最近は Rork Max を新規実験アプリで使い始めました。これから書くのは、Rork Max で生成された Swift プロジェクトを Xcode で開いたときの赤いエラーを潰す順序のメモです。
最初に「触らない」と決めること
赤いエラーが多いと、つい全部を一気に直したくなります。私は逆に、最初の 5 分で「触らない場所」を決めることから始めます。具体的には、Rork Max が生成した View 階層のうち、画面遷移のルートだけを触り、個別の View 内のレイアウトは初回ビルドが通るまで一切触りません。
理由は、レイアウト調整に手を出すと「動かない原因がレイアウトのコードなのかコンパイルエラーなのか」を切り分けるコストが線形に増えるからです。まず実機で動かす、そのあとレイアウトを調整、の順序を厳守すると判断ミスが減ります。
赤いエラーを潰す優先順序
私が回している優先順序は次の通りです。
1. 依存ライブラリの整合性
最初に潰すのは、依存ライブラリの解決エラーです。Rork Max は CocoaPods 風の記述と Swift Package Manager の記述が混ざることがあり、まずどちらかに統一する必要があります。私は壁紙アプリ群でも SPM に寄せる方針で運営しているので、Rork Max のプロジェクトも SPM に揃えます。
// Package.swift に統一
let package = Package(
name: "MyApp",
dependencies: [
.package(url: "https://github.com/googleads/swift-package-manager-google-mobile-ads.git", from: "11.0.0"),
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", from: "11.0.0"),
],
...
)ここを整えると赤いエラーの 4 割は消えます。
2. import 行の欠落
次に多いのが import 行の欠落です。Rork Max は SwiftUI の import は付けてくれますが、StoreKit や GoogleMobileAds の import が抜けている場面が散見されます。エラーメッセージの中で「Cannot find type 'Product' in scope」のようなものはほぼ全て import の問題です。
Xcode の「Quick Fix」(電球アイコン)で Add import を選ぶのが最速ですが、たまに候補が出ないライブラリがあります。その場合は import StoreKit import GoogleMobileAds を手で書き足します。
3. プロトコル要件の未実装
Rork Max の生成コードでは、ObservableObject を実装する宣言があるのに @Published を付け忘れていることがあります。これは「Cannot assign to property: 'self' is immutable」というメッセージで出ます。プロパティに @Published を付けるか、final class にして問題を回避します。
4. iOS バージョン不整合
新しい API(例えば .scrollIndicators(.hidden) や .scenePadding())が生成されているのに、Deployment Target が iOS 16 になっているケースもよくあります。私の場合、壁紙アプリ群は iOS 15 から対応しているので、初回ビルドは iOS 16 に上げて通し、その後コンポーネントを段階的に下方互換に書き戻す進め方を取っています。
5. @MainActor 周りの警告
これは赤いエラーではなく黄色い警告のことが多いのですが、Xcode 26 以降は警告がエラーに昇格するケースがあるので注意です。@MainActor を付けるべき class に付いていないと、SwiftUI の View 側から呼び出すときに警告が出ます。@MainActor final class で揃えてしまうのが楽です。
30 分でやめる判断
私が決めているルールに「最初の 30 分で実機ビルドに到達しなければ、いったん git reset で初期状態に戻して別のアプローチを取る」というものがあります。Rork Max の生成結果は、複雑なアプリだと初期エラーが 100 件を超えることがあり、30 分で潰し切れない量に膨らむと、たいてい「生成プロンプトを変えて再生成」したほうが早いのです。
私の壁紙アプリ群でも、リファクタリングを 1 時間以上ハマりかけたら捨てて書き直す、というルールを設けています。Rork Max でも同じ判断軸を適用すると、無駄なハマりが減ります。
私がよくつまずくパターン
最後に、私が Rork Max のコード起こしでよく踏むパターンを 3 つだけ書いておきます。
@mainの中で@StateObjectを初期化していて、ライフサイクル外で API 呼び出しを走らせている →Task { ... }でラップするColor.gray.opacity(...)のような呼び出しで型推論が止まる → 明示的に.foregroundColor(Color.gray.opacity(0.5))と書く- Picker の
selection型と Enum のRawValue型が一致していない →init(rawValue:)を経由する
これらは Rork Max の問題というより、AI 生成コード全般のクセです。同じパターンを 3 回踏むと自然と覚えます。
私が「順序を間違えた」過去の事例
5 年ほど前、まだ AI 生成コードが手元になかった時代に、別のテンプレート生成ツールで似た「赤いエラーの山」に出会ったことがあります。そのとき私は最初に依存ライブラリではなく「コードのクセを直す」方から手を付けてしまい、丸 1 日を消費しました。原因は単純に SDK のバージョン不整合だったのですが、症状の表面だけを見ているとそこに気付けません。
この経験から私が決めたのは「赤いエラーは原因の場所ではなく症状の表れ場所」というルールです。エラーが出ているファイルを直すのではなく、なぜそこに症状が出るかを 1 段階遡る習慣をつけると、修正の連鎖が短くなります。Rork Max の生成結果に対しても、まったく同じ姿勢が役に立っています。
エラー量と「再生成」の閾値
経験的な目安として、初回エラーが 30 件以下なら手で潰し、80 件を超えるならいったん git reset で戻して再生成するのが効率的でした。30 件と 80 件の間はケースバイケースですが、依存ライブラリの統一だけで半分以上消えるかどうかを 5 分で見て、残りの量で判断しています。
エラーの絶対数より、「ひとつ直してもエラーが減らないループ」に入ってしまったかどうかが本質的な判断軸です。減らないループに 10 分入ったら、私は迷わず再生成に切り替えます。これは壁紙アプリ群でも、Lab サイトの記事生成でも、同じ判断軸を使っています。
次に試してみてほしいこと
今 Rork Max の生成結果と格闘しているなら、Build Settings の Swift Compiler - Search Paths を確認することから始めてみてください。HEADER_SEARCH_PATHS や OTHER_LDFLAGS に不要な参照が残っていると、依存ライブラリの解決が崩れて連鎖的にエラーが出ます。1 行消すだけで 20 件のエラーが消えることもよくあります。
5,000 万ダウンロードの壁紙アプリ群を運営してきて、Xcode の赤いエラーは「順序を間違えなければ怖くない」と感じています。共に学んでいけたら嬉しいです。