サードパーティライブラリ依存XCFrameworkをSwiftPMで配布するまでの14回の試行錯誤 by 下森 周平

iOSDC Japan 2025
レギュラートーク(20分)

サードパーティライブラリ依存XCFrameworkをSwiftPMで配布するまでの14回の試行錯誤

forestunder_dev 下森 周平 forestunder_dev
1

「そのXCFramework、Swift Package Managerから使えるようにしてもらえませんか?」──その一言で始まった移行作業は、14回のやり直しとXcodeアップデートへの追従を伴う長い旅でした。

ChatGPTで手順を検索すれば"答え"は瞬時に見つかる時代ですが、SwiftPMの仕様上の制約やツールチェーンの細部は、実際にプロジェクトを回してこそ分かることも多いです。本セッションでは、あえて試行錯誤の過程そのものを共有し、「遠回りから得た経験値」をそっくり持ち帰っていただくことを狙います。

主な試行錯誤の流れは――

  • SwiftPMではbinaryTarget の依存関係を宣言できず設計で立ち往生
  • Dynamic Framework化を図るも、Debug/Releaseビルドでシンボル名変化によりリンク失敗
  • Library Evolutionで対処しようにも、サードパーティ側には適用不可能
  • Prebuilt XCFramework配布を試すも、クライアントの別依存とモジュール名衝突
  • Static Linkingによる依存関係埋め込みに転換するも、SwiftPMではリソースバンドルが自動コピーされない
  • 別依存とのモジュール名衝突はModule Aliasで解決したかに見えたが、Xcode更新で突然動作不能に
  • 最終的にサードパーティライブラリをforkしてリネーム埋め込み

各段階での「なぜその判断をしたか」「なぜダメだったか」の思考プロセスを追い、SwiftPMやXcodeの仕様には載っていない現実的な制約とその回避策を共有します。理想的な解決策ではありませんが、実際に動くものを作った一つの事例として、同じ轍を踏まずに済む知見をお伝えする時間にできれば幸いです。