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

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

Avatar for Yoshimasa Niwa Yoshimasa Niwa
September 12, 2022

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

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