Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Xcode が遅い! とにかく遅い!! 遅い Xcode をなんとかする方法

Xcode が遅い! とにかく遅い!! 遅い Xcode をなんとかする方法

Xcode が遅い。とにかく遅い!! あああ!!!

皆さんはそんな経験ありませんか...?

iOS アプリの開発にはなくてなはならないツール、それは Xcode です。
しかし、Xcode がとにかく遅いのです。
アプリが成長し、ワークペースが巨大になり、多くのターゲットができるにつれてどんどん遅くなり、最後にはハングして終了すらできなくなってしまいます。
このセッションではそんな遅い Xcode を使えるように頑張った経験をもとに、Xcode のビルドの仕組み、そして Bazel などほかのビルドツールについても検証したいと思います。

対象とする方:
- Xcode が遅くて辛い方
- 大きなアプリを作っている方
- killall XCBBuildService が癖になってしまった方
- Xcode のビルドの仕組みをちょっと知りたい方

前提とする知識:
- Xcode

Avatar for Yoshimasa Niwa

Yoshimasa Niwa

September 12, 2022
Tweet

More Decks by Yoshimasa Niwa

Other Decks in Programming

Transcript

  1. func handleRequest( _ request: RPCRequest<RequestPayload>, ... ) { switch request.payload

    { case let .createBuildRequest(message): let buildRequest = message.buildRequest if buildRequest.parameters.action == "indexbuild", buildRequest.configuredTargets.count > 1 { context.sendErrorResponse("Abort", request: request) return } default: break } context.forwardRequest() }
  2. Xcode 14 ͦ΋ͦ΋ͷ XCBBuildService ͷόά͕ Xcode 14 Beta 2 Ͱͳ

    ͓Γ·ͨ͠ Xcode 14 ͷ Release Candidate ΋ϦϦʔε͞Ε·ͨ͠
  3. llvm::LockFileManager::waitForUnlock() Ethernet ͷিಥݕग़ʹࣅͨ࢓૊Έ ·ͣ 10 ms * ͋Δൣғͷཚ਺ (࠷େ500 ms)

    Λ଴ͭ ·ͩղ์͞Εͳ͔ͬͨΒൣғΛ2ഒʹͯ͠·ͨ଴ͭɻ͜ΕΛ ܁Γฦ͢ɻσϑΥϧτͰ࠷େ1෼30ඵ଴ͭɻ
  4. Xcode ͷ໰୊఺ Xcode ΍ΊΔ? Xcode ͸جຊతʹ Apple ͔͠खग़͠Ͱ͖ͳ͍͏͑ʹߋ৽͕஗ ͍ Xcode

    ͸جຊతʹϓϩμΫτͱͯ͠ɺେ͖ͳΞϓϦΛϏϧυ ͢Δސ٬͕λʔήοτͰ͸ͳ͍Α͏ʹࢥ͑Δ