メインコンテンツまでスキップ

Xcode Compilation Cache FAQ

Xcode Compilation Cache を使用するための要件は何ですか?Click to copy link​

Xcode 26 と、Explicitly Built Modules の有効化が必要です(Swift ターゲットでは Xcode 26 でデフォルトで有効)。

Swift Package Manager の依存関係でも動作しますか?Click to copy link​

2025年9月時点では、SPM の依存関係は Xcode 26 Beta ではキャッシュできません。Apple が対応を進めており、今後利用できるようになる見込みです。

キャッシュできないビルドタスクは何ですか?Click to copy link​

現在、CompileStoryboard、CompileXIB、CompileAssetCatalogVariant、PhaseScriptExecution、DataModelCompile、CopyPNGFile、GenerateDSYMFile、Ld のタスクはキャッシュできません。

Xcode Test は高速化されますか?Click to copy link​

Xcode Compilation Cache はコンパイル時間の短縮に役立ちます。そのため、ビルドとアーカイブのアクションで最も効果があります。

Xcode Test の場合、テストのコンパイルは高速になりますが、テストの実行自体は速くなりません。

Xcode のコンパイルキャッシュによるパフォーマンス向上を確認するには、Xcode Archive または Xcode Build For Testing(あるいはその他のビルドコマンド)を実行する Workflow でテストすることをお勧めします。

Xcode のコンパイルキャッシュを一時的に無効にするにはどうすればよいですか?Click to copy link​

最も簡単な方法は、カスタムの Xcode フラグ --no-bitrise-build-cache を指定することです。

このフラグは Bitrise ラッパーに認識され、アナリティクスを無効にせずにキャッシュのみを無効にします。つまり、実行は UI に表示されますが、キャッシュは使用されないため、キャッシュのクォータにはカウントされません。

別の方法として、次のコマンドを実行して PATH を上書きし、設定済みのラッピングを削除することもできます。

export PATH="${PATH#"$HOME/.bitrise-xcelerate/bin:"}"

この変更は、次のターミナルセッションで元に戻ります。これは、Bitrise Build Cache CLI が保持されるためで、PATH の上書きは ~/.zshrc と ~/.bashrc にあります。

Bitrise Steps をまたいで変更を保持するには、envman で PATH を再度設定します。

envman add --key PATH --value "$PATH"

コンパイルキャッシュのビルドフラグを手動で渡すにはどうすればよいですか?Click to copy link​

プロジェクトごとにコンパイルキャッシュを手動で有効にするには、Build Cache for Xcode Step(Bitrise CI 上)で、Skip passing cache flags to xcodebuild Step 入力を使用して、必要なフラグの受け渡しを無効にできます。Bitrise Build Cache CLI をローカルで使用している場合は、--cache-skip-flag を activate xcode コマンドに渡すことができます。

この場合、ビルドごとにいくつかのフラグを手動で設定するか、プロジェクトのビルド設定で設定する必要があります。一部のフラグは、Xcode IDE で "Enable Compilation Caching" や "Explicitly Built Modules" などの名前で用意されている場合があります。デフォルトで渡しているフラグは次のとおりです。

- "COMPILATION_CACHE_ENABLE_PLUGIN": "YES"
- "COMPILATION_CACHE_ENABLE_INTEGRATED_QUERIES": "YES"
- "COMPILATION_CACHE_ENABLE_DETACHED_KEY_QUERIES": "YES"
- "SWIFT_ENABLE_COMPILE_CACHE": "YES"
- "SWIFT_ENABLE_EXPLICIT_MODULES": "YES"
- "SWIFT_USE_INTEGRATED_DRIVER": "YES"
- "CLANG_ENABLE_COMPILE_CACHE": "YES"
- "CLANG_ENABLE_MODULES": "YES"

Bitrise でこれらのフラグを渡す方法の詳細については、こちらのブログ記事を参照してください。

Xcode Index Data Store に依存するツールはどうなりますか?Click to copy link​

リモートのコンパイルキャッシュが有効な場合、Xcode は DerivedData に Index.noindex/DataStore を生成しません。そのため、タスクが Index Data Store に依存している場合、エラーが発生することがあります。

次は、Index data store が見つからない場合に Periphery が生成するエラーの例です。

error: Internal Error: index store path does not exist: /Users/vagrant/Library/Developer/Xcode/DerivedData/.../Index.noindex/DataStore

現時点では、この問題の解決策はありません。回避策として、Index data store に依存しないすべての Step と Workflow では Bitrise Build Cache for Xcode を使用し、Index data store に依存する Step は、Bitrise Build Cache for Xcode を設定しない別の Workflow で実行する方法があります。