コンテキスト

Beedaの新機能拡張に伴い、コンパイル時間が深刻な問題となってきました。些細な変更やフルコンパイルに約11分もかかるため、開発ワークフローに大幅な遅延が生じていました。

生産性を向上させ、開発の効率を改善するために、このコンパイル時間を劇的に短縮することを目指しました。この記事では、どのようにしてコンパイル時間を2分にまで短縮したかを紹介します。

Xcodeの最適化レベル

Xcodeでは、以下の3つの最適化レベルから選択できます:

  • なし
  • 高速
  • 全モジュール最適化を使用した高速

これらの設定を活用して、どのようにこの改善を実現したかを紹介します。

image info

「全モジュール最適化」を有効にすることで、コンパイルプロセスが大幅に加速されます。しかし、「高速」または「全モジュール最適化を使用した高速」設定を選択すると、デバッグ機能が無効になります。これらのオプションのいずれかを選択し、アプリをコンパイルした後にデバッグを試みると、コンソールに次のメッセージが表示されます:

アプリは最適化されてコンパイルされました - ステッピングは異常に動作する可能性があり、変数が利用できないことがあります。


解決策:ユーザー定義設定を追加する

全モジュール最適化を有効にするには、Xcodeプロジェクトの設定にユーザー定義設定を手動で追加する必要があります。以下はその方法です:


手順

  1. プロジェクト設定に移動

    • プロジェクトナビゲータでプロジェクトを選択します。
    • ビルド設定タブに移動します。
  2. ユーザー定義設定を追加

    image info

    image info

    • ビルド設定ペインの左上隅にある**+**ボタンをクリックします。
    • ユーザー定義設定の追加を選択します。
    • 設定名をSWIFT_WHOLE_OPTIMIZATION_LEVEL(または他の関連する名前)にします。
    • 値をYESに設定して、全モジュール最適化を有効にします。

  3. Debug設定でNoneを設定

    • ターゲットのビルド設定で、Debug構成の最適化レベルをNoneに設定します。

この改善がBeedaに与える影響

コードを頻繁に更新し、反復しているiOSチームにとって、この改善は効率の向上コストの削減顧客体験の向上に大きな役割を果たしています。具体的に言うと、1日30回のコンパイルを実行する場合、この最適化は1日に約26時間のコンパイル時間を節約します。この時間の節約は、3人の追加の開発者のアウトプットと同じくらいの効果があります。