Swift

XcodeとSwiftのコンパイルエラー対策完全ガイド

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


スポンサードリンク

1️⃣ エラーログの基本的な読み方

手順 操作内容 効果
1 ビルド失敗後、左サイドバーの ⌘9Report Navigator を開く。 ビルド全体のログが一覧化される。
2 赤字で表示された error: 行をクリック。 該当ソースファイルと行番号に自動ジャンプ。
3 右上の Show in Finder を使ってファイルを直接開くか、⌘クリック でエディタへ移動。 問題箇所へのアクセスが瞬時に完了。

ポイント:Xcode は Issue Navigator と Report Navigator の二段階構造になっています。Issue が「何が起きたか」を示し、Report が「詳細なスタックトレース」になります。両方を併用すると原因特定のスピードが格段に上がります。


2️⃣ ビルド設定とターゲットのチェックリスト

  1. 対象ターゲットの確認
  2. プロジェクトナビゲータでアプリ名 → General タブを開き、Deployment InfoSigning & Capabilities が期待通りか検証。

  3. リンク設定

  4. Build Phases > Link Binary With Libraries に必要なフレームワークがすべて列挙されていることを確認。欠けていれば「+」で追加します。

  5. 共通ビルド設定の統一

  6. Build SettingsArchitectures, Swift Compiler – Language, Enable Bitcode など、プロジェクト全体とターゲットが同一になるように比較・修正。

参考:Apple の公式ガイド「Managing Build Settings」を随時参照してください。


3️⃣ パッケージ管理ツールのクリーンアップ手順

CocoaPods

Swift Package Manager (SPM)

  1. Xcode の Package Dependencies ペインで対象パッケージを右クリック → DeleteRemove Reference Only
  2. メニューバー File > Packages > Reset Package Caches を実行。
  3. 再度 File > Add Packages… から同じ URL を追加し、バージョン範囲を指定してインストール。

備考DerivedData の削除 (rm -rf ~/Library/Developer/Xcode/DerivedData) は、依存関係の破損が疑われるときに併用すると効果的です。


4️⃣ Swift Concurrency(@MainActor・async‑await)で起きやすいエラーと対処法

症状 主な原因 解決策
Main actor-isolated エラー プロジェクトが Swift 5.8 以前に固定されている Build SettingsSwift Compiler – LanguageSwift 5.9 に変更。
async/await is only available in Swift 5.5 or newer Xcode と CLI ツールのバージョンがずれている ターミナルで xcode-select -s /Applications/Xcode.app/Contents/Developer を実行し、使用 Xcode を統一。
@MainActor の誤用 UI 更新をバックグラウンドスレッドで実行している 必要な箇所だけに限定し、不要なら削除。UI 更新は必ず DispatchQueue.main.async または Task { @MainActor in … } を使用。

設定の確認手順(ローカル・CI 両方)

注意:Apple は iOS 17 以降で Bitcode を完全にサポートしなくなりました(2024 年の Xcode 15 リリースノート参照)。Enable BitcodeNo に設定して問題ありません。


5️⃣ CI 環境での Xcode / Swift バージョン整合性

以下は GitHub Actions 用の最小構成例です。Xcode 15.2 と Swift 5.9 を明示的に指定しています。

ポイント解説

項目 説明
macos-14 ランナー Apple Silicon の最新 macOS。Xcode 15.2 がプリインストール済み。
sudo xcode-select -s … CI 内で使用する Xcode バイナリを強制的に統一。ローカルと同じバージョンになるため、バージョンミスマッチが防げる。
CODE_SIGNING_ALLOWED=NO テストビルド時はコード署名を省略でき、CI が速くなる。実機テストや配布ビルドでは削除して署名を有効化してください。

6️⃣ Bundle Identifier(App ID)関連エラーの対処法

重複エラーが出たときの手順

  1. Bundle Identifier を変更
  2. Signing & Capabilities タブで Bundle Identifier を編集。例: com.example.MyApp2026com.mycompany.MyApp2026
  3. Info.plist の自動更新確認
  4. Xcode が CFBundleIdentifier を自動的に上書きするので、手動で修正しなくても OK。
  5. Apple Developer ポータルの同期
  6. https://developer.apple.com/account/resources/identifiers/list にアクセスし、同一 ID が未使用か確認。必要なら「+」ボタンで新規登録。

プロビジョニングプロファイルが古いときのリフレッシュ手順

ベストプラクティスAutomatically manage signing をオンにしておくと、Xcode が必要なプロファイルを自動で生成・更新します。チーム全体で同じ Apple ID(または App Store Connect の権限)を使用することが前提です。


7️⃣ 推奨ビルド設定まとめ

設定項目 推奨値 理由
Swift Language Version Swift 5.9(固定) Xcode 15.2 の標準で、Concurrency がフルサポートされる。
Build Active Architecture Only Debug: Yes / Release: No デバッグ時は高速ビルド、リリース時は全アーキテクチャ対応。
Enable Bitcode No(iOS 17 以降) Apple が段階的に廃止しているため、無効化でビルド時間が短縮。
Minimum Deployment Target iOS 16(最新 OS の 2 バージョン前程度) 新機能利用と広範なデバイスサポートのバランスが取れる。
Enable Hardened Runtime Yes(App Store 配布時必須) セキュリティ強化と App Store の審査合格率向上に寄与。

8️⃣ 実践的チェックリスト & CI スクリプト例

ビルド前のローカル確認項目

  • [ ] 正しいターゲットが選択され、General > Deployment Info が期待通りか
  • [ ] Swift Language Version5.9 に固定されている
  • [ ] Enable BitcodeNo になっている(iOS 17+)
  • [ ] Bundle Identifier がチーム内で一意かつ Apple Developer ポータルに登録済みか
  • [ ] CocoaPods / SPM のキャッシュをクリアし、再インストールしたか

CI 用スクリプト(GitHub Actions)

ポイントCODE_SIGNING_ALLOWED=NO により、テスト実行時のコード署名を省略しビルドが高速化します。リリース用パイプラインではこのフラグを外して正式なプロファイルで署名してください。


まとめ

  1. エラーログは Issue → Report の二段階で読むと原因特定が迅速になる。
  2. ビルド設定・ターゲットの不一致が最頻出エラーなので、プロジェクト全体で統一した設定を徹底する。
  3. 依存関係(CocoaPods / SPM)はキャッシュクリアと再インストールで多くの問題が解決できる。
  4. Swift Concurrency のエラーは Swift バージョン不整合が根本原因。5.9 に固定し、@MainActor の使用箇所を見直す。
  5. CI 環境でも Xcode と Swift のバージョンを明示的に指定し、ローカルと同一条件でビルドする。
  6. Bundle Identifier の重複やプロビジョニングの古さは、Apple Developer ポータルと Xcode の同期で解消できる。

このチェックリストと CI スクリプトをプロジェクトに組み込めば、コンパイルエラーによる開発停止時間を大幅に削減できます。ぜひ日々のビルド前作業に取り入れてみてください。

スポンサードリンク

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


-Swift