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

CA.swift#14

 CA.swift#14

ry-itto

May 19, 2021
Tweet

More Decks by ry-itto

Other Decks in Programming

Transcript

  1. • iOS エンジニア として 21新卒入社 • 出身地:北海道恵庭市 • 出身校:会津大学 •

    配属:メディア(ABEMA) @ry_itto
 ry-itto
 伊藤凌也
 (いとうりょうや)
 2
  2. 話すこと • isowords とは • 従来のプロジェクト管理について • SPM+xcworkspace プロジェクト管理 ◦

    メリット ◦ デメリット ◦ パッケージ管理について ▪ CocoaPods ▪ Carthage ◦ ツール周り • まとめ 3
  3. isowords とは • Point-Free の作った SwiftUI, SceneKit を使ったゲームアプリ • SPM

    を使用したプロジェクト・パッケージ管理 をしている • アセットの管理に git-lfs を使用している • アーキテクチャは Composable Architecture 4
  4. 従来の プロジェクト管理 種類 大きく分けて二つ • Pure な XcodeProject で構成 •

    XcodeGen, Tuist 等で Project ファイルを生成せず構成 6 OR
  5. 従来の プロジェクト管理 課題 大きく分けて二つ • Pure な XcodeProject で構成 project.pbxproj

    でのコンフリクト 多発 • XcodeGen, Tuist 等で Project ファイルを生成せず構成 → ツールメンテナーが対応しないと 新規機能など使用できない → 外部ツール依存が増える 7
  6. SPM + xcworkspace プロジェクト管理 概要 • アプリのソースを Swift Package として切り出した上で吐き出し、アプ

    リケーションターゲットで使用する方 法 • ターゲットごとにリソースを持たせた りできる 9
  7. メリット つまり • ソースファイルを project.pbxproj で認識する必要がない → コンフリクトが(ほぼ)しない • Pacakge.swift

    を使用して自由に ターゲットを作成できる → マルチモジュール化が容易 → 差分ビルドを用いたビルド速度改 善が図れる 13
  8. メリット つまり • ソースファイルを project.pbxproj で認識する必要がない → コンフリクトが(ほぼ)しない • Pacakge.swift

    を使用して自由に ターゲットを作成できる → マルチモジュール化が容易 → 差分ビルドを用いたビルド速度改 善が図れる 14 XcodeGen や Tuist を使用するこ とによる美味しさも持っている
  9. デメリット • Swift Package Sources 配下に ファイルを追加すると一定時間ビル ドができなくなる • SwiftUI

    Previews が使えなくなる 場合がある • Package.swift を更新してもたまに “Resolving Package Graph” が 行われない 16
  10. デメリット • Swift Package Sources 配下に ファイルを追加すると一定時間ビル ドができなくなる • SwiftUI

    Previews が使えなくなる 場合がある • Package.swift を更新してもたまに “Resolving Package Graph” が 行われない 17 「できるはずのこと」ができない状態となっ てしまう(たまに)
  11. パッケージ管理 CocoaPods • Pods のプロジェクトをそのまま依存 に入れるのは難しかった → Pre-build する •

    そもそもどうしてこれがしたい? → Podfile しかないライブラリがた まにある。。 サンプル https://github.com/ry-itto-playground/SPM-coc oapods 20
  12. ツール周り 配置 Mint 等を使用しない Swift 製ツールの 導入 ※ SPM +

    xcworkspace プロジェクト管 理 じゃなくても使用可能。 23
  13. まとめ • メリットを享受したければ XcodeGen を使うだけでも良さそう • XcodeGenを使用して開発する際に比べてストレスは多そう • XcodeGen 等が持っていないメリットを考えても絶対的な選定理由には

    ならなさそう (”プロジェクトごとアプリを分けることが懸念なくできる” 次第) • まずは個人開発から導入して試してみると良さそう • 構成自体は非常に面白い • 固まるとかそれ以外の懸念がない 29
  14. References • A Tour of isowords: Part 1 • A

    Tour of isowords: Part 2 • Swift PMとマルチプロジェクトでBuild Configurationをクリーンに保つ • https://github.com/pointfreeco/isowords 31