Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save senseilearning/98f289992e742d183c2c9734a38a78c5 to your computer and use it in GitHub Desktop.
Save senseilearning/98f289992e742d183c2c9734a38a78c5 to your computer and use it in GitHub Desktop.
KMP (Kotlin Multiplatform) プロジェクトでiOSのビルドを高速化するには、Kotlin/Nativeのコンパイル設定とXcodeのビルド設定の両方からアプローチするのが効果的です。
特に、開発中のデバッグビルドを高速化する設定はすぐに試せるものが多いです。
🚀 すぐに試せる!効果の高い高速化設定
開発環境(ローカルマシン)での日々のビルドを高速化するための、即効性のある設定です。gradle.propertiesファイルに以下の記述を追加・変更してください。
# Kotlin/Nativeのコンパイルキャッシュを有効にする (デバッグビルド向け)
# Kotlin 1.9.20以降はデフォルトで 'static' になりましたが、明示的に設定します。
kotlin.native.cacheKind=static
# デバッグビルド時は最適化を無効にする
kotlin.native.optimization.enabled=false
# デバッグシンボルを別のファイルに生成することで、リンク時間を短縮する
kotlin.native.separateDsym=true
## ⚙️ Gradleでの詳細な設定 (gradle.properties)
より踏み込んだ設定で、ビルドプロセスをさらに最適化します。
1. Kotlin/Native コンパイラキャッシュ (kotlin.native.cacheKind)
Kotlin/Nativeはコンパイル結果をキャッシュすることで、2回目以降のビルドを高速化します。このキャッシュの種類をビルド環境に応じて変更することが重要です。
* static: (推奨) 開発中のデバッグビルドに最適です。変更のないライブラリが再利用され、ビルドが大幅に高速化されます。
* none: CI/CD環境やReleaseビルドでクリーンなビルドが必要な場合に設定します。キャッシュを作成しないため、初回ビルドは速い場合がありますが、2回目以降の恩恵はありません。
2. デバッグビルドの最適化
開発中は、Releaseビルドほど厳密な最適化やデバッグ情報は不要な場合が多いです。
# 現在のビルドがデバッグビルドかどうかを判定するプロパティ (Xcodeから渡される)
# これを利用して動的に設定を切り替えることが多い
isCiBuild=false
# ターゲットアーキテクチャを現在接続されているデバイスのみに限定 (Xcodeの 'Build Active Architecture Only' に相当)
kotlin.native.buildOnActiveArch=true
# デバッグビルド用の設定例 (build.gradle.kts での動的な設定)
# if (findProperty("kotlin.native.debug") == "true") {
# kotlin.native.optimization.enabled=false
# }
3. CocoaPods連携の高速化
CocoaPodsを利用している場合、podspecの生成を高速化できます。
# podspecの生成タスクを高速化する
kotlin.native.cocoapods.fastPodspec=true
## 🛠️ Xcodeでの設定
Xcode側の設定を見直すことでも、ビルド時間を短縮できます。
1. Build Active Architecture Only
デバッグビルド時に、現在接続されている、または選択されているシミュレータ/デバイスのアーキテクチャ(例: arm64)のみをビルド対象にします。これにより、不要なアーキテクチャのコンパイルをスキップできます。
* 設定場所: Build Settings > Architectures > Build Active Architecture Only
* 推奨設定:
* Debug: Yes
* Release: No (App Storeに提出するバイナリは全アーキテクチャを含む必要があるため)
2. Compilation Mode
コンパイラの最適化レベルを調整します。
* 設定場所: Build Settings > Swift Compiler - Code Generation > Compilation Mode
* 推奨設定:
* Debug: Incremental (変更されたファイルのみをコンパイル)
* Release: Whole Module (アプリのパフォーマンスは向上するが、ビルド時間は長くなる)
3. dSYMの生成設定
デバッグシンボルファイル(dSYM)はクラッシュレポートの解析に必要ですが、デバッグビルド中は必ずしも必要ではありません。
* 設定場所: Build Settings > Build Options > Debug Information Format
* 推奨設定:
* Debug: DWARF (dSYMファイルを生成しないため高速)
* Release: DWARF with dSYM File
## 🖥️ 環境とその他のヒント
* Apple Silicon Macの活用: M1/M2/M3チップを搭載したMacは、Intel Macに比べてビルドパフォーマンスが大幅に向上します。
* Gradle Daemonの活用: Gradle Daemonを有効にすることで、Gradleの起動時間を短縮できます。通常はデフォルトで有効になっています。
* KotlinとGradleのバージョンアップ: 定期的にKotlin、KMPプラグイン、Gradleを最新バージョンにアップデートすることで、パフォーマンス改善の恩恵を受けられます。
* モジュール構成の見直し: プロジェクトが大規模な場合は、sharedモジュールをさらに小さな機能モジュールに分割することを検討してください。これにより、変更があった際のコンパイル範囲を限定できます。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment