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

Xcodegenを個人アプリに導入

 Xcodegenを個人アプリに導入

集まれSwift好き!Swift愛好会 vol.58 @ オンライン
https://love-swift.connpass.com/event/206586/

発表資料
「参考資料」
Firebase Crashlytics を使ってみる
https://firebase.google.com/docs/crashlytics/get-started?hl=ja&platform=iOS

Xcode12時代のCarthageで起こった問題とXCFrameworkへの移行
https://techlife.cookpad.com/entry/2021/03/10/110000

[2021年版]XcodegenでCarthageとCocoapodsを使う最小プロジェクトを作成
https://blog.personal-factory.com/2021/02/19/how-to-use-carthage-and-cocoapods-by-xcodegen/

Binary Frameworks in Swift
https://developer.apple.com/videos/play/wwdc2019/416/

“Do Not Embed”, “Embed & Sign”, “Embed Without Signing”. What are they?. What they do?
https://stackoverflow.com/questions/57687170/do-not-embed-embed-sign-embed-without-signing-what-are-they-what-th

lipo を使って簡単に Universal Binary を作成する方法
http://akisute.com/2011/03/lipo-universal-binary.html

1人でアプリを作る人を支えるSwiftUI開発レシピ
https://www.amazon.co.jp/dp/4844378678/ref=cm_sw_r_tw_dp_10HXZ4P94DQ7GHMWNR6K

Sato Takeshi

March 17, 2021
Tweet

More Decks by Sato Takeshi

Other Decks in Technology

Transcript

  1. Xcodegenを 個人アプリに導入 2021 年 3 月 17 日 集まれ Swift

    好き! Swift 愛好会 vol.58 @ オンライン
  2. Who am I • Name • 佐藤タケシ ( さとうたけし )

    • Company • Merpay, Inc.(2019/01 ~) • Role • Software Engineer (iOS) • Account • Twitter: @hatakenokakashi • Facebook: 佐藤剛士 • GitHub: SatoTakeshiX
  3. Xcodegenを個人アプリに導入 • 導入経緯 • Xcodegen って何? • 簡単な使い方 • 具体的な導入手順

    • Xcode 12 と Carthage 対応 • CocoaPods と Firebase Crashlytics 対応 • まとめ
  4. アプリプロジェクト問題点 • 3年前に作ったプロジェクトで構成が自分でも把握できなくなっている • Firebase Crashlytics や Firebase Analytics でユーザーのログを取りたい

    • アプリプロジェクトは本番用しかないので、開発がしにくい。 • 開発用アプリを作成したいがプロジェクト管理が煩雑になるのを避けたい
  5. アプリプロジェクト問題点 • 3年前に作ったプロジェクトで構成が自分でも把握できなくなっている • Firebase Crashlytics や Firebase Analytics でユーザーのログを取りたい

    • アプリプロジェクトは本番用しかないので、開発がしにくい。 • 開発用アプリを作成したいがプロジェクト管理が煩雑になるのを避けたい Xcodegen でプロジェクト管理しよう!
  6. Xcodegenとは • Xcode プロジェクト作成ツール • yaml ファイルでプロジェクトを管理 • Xcode 上でプロジェクトを管理しなくても良くなる

    • 結果としてスキーム、テストターゲット、アプリケーションターゲットの作成が 簡単になる https://github.com/yonaskolb/XcodeGen
  7. Xcode 12でCarthageでビルド失敗 • Carthage はそれぞれの CPU アーキテクチャ用のバイナリを lipo ツールで一 つのバイナリにまとめている

    • Xcode 12 から iOS シミュレーター用のバイナリが、従来の Intel 製 CPU の x86_64 用バイナリに加えて Apple Silicon の arm64 用バイナリを含むように なった • lipo の制限で実機用の arm64 バイナリとシュミレーター用 arm64 バイナリが一 つのファットバイナリにまとめることができない
  8. Carthage 0.37でXCFrameworkでビルド • Xcode 11 から登場した、複数のフレームワークを 1 つにまとめられる仕組み • lipo

    は一つのバイナリに複数アーキテクチャ用バイナリを含める • XCFramework は単体アーキテクチャフレームワークを一つのフォルダにま とめる • --use-xcframeworks オプションをつける • Build Phase の copy-frameworks も不要になる
  9. まとめ • Xcodegen は Xcode プロジェクト作成ツール • yaml ファイルからプロジェクトを生成 •

    具体的な導入手順 • Carthage を利用するには XCFramework でビルドする • Firebase Crashlytics の初期化スクリプトは CocoaPods で管理する
  10. 参考資料 • Firebase Crashlytics を使ってみる • Xcode12 時代の Carthage で起こった問題と

    XCFramework への移行 • [2021 年版 ]Xcodegen で Carthage と Cocoapods を使う最小プロジェクトを作 成 • Binary Frameworks in Swift • “Do Not Embed”, “Embed & Sign”, “Embed Without Signing”. What are they?. What they do? • lipo を使って簡単に Universal Binary を作成する方法
  11. • SwiftUI を始める最適な一冊 • SwiftUI の基礎を徹底解説 ◦ レイアウトシステム ◦ 座標空間

    ◦ データ管理 ◦ UI コンポーネント • 実践的なサンプルアプリ ◦ GitHub API ◦ お絵かきアプリ ◦ 写真フィルターアプリ • iOS 14 対応 ◦ LazyVStack 、 LazyVGrid 、 WidgetKit 、 @StateObjectなど 「SwiftUI開発レシピ amazon」で検 索!