Save 37% off PRO during our Black Friday Sale! »

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

53e2d354b3299d64a54af680865516d5?s=128

Sato Takeshi

March 17, 2021
Tweet

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. 導入経緯

  5. 玄空飛星風水 アプリ • 飛星図を自動で作成 • 玄空飛星風水、八宅風水で診 断 • 自宅や引越し先の間取りから 運勢判断

    難しい飛星図作成が すぐできる!
  6. アプリプロジェクト問題点 • 3年前に作ったプロジェクトで構成が自分でも把握できなくなっている • Firebase Crashlytics や Firebase Analytics でユーザーのログを取りたい

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

    • アプリプロジェクトは本番用しかないので、開発がしにくい。 • 開発用アプリを作成したいがプロジェクト管理が煩雑になるのを避けたい Xcodegen でプロジェクト管理しよう!
  8. Xcodegenって何?

  9. Xcodegenとは • Xcode プロジェクト作成ツール • yaml ファイルでプロジェクトを管理 • Xcode 上でプロジェクトを管理しなくても良くなる

    • 結果としてスキーム、テストターゲット、アプリケーションターゲットの作成が 簡単になる https://github.com/yonaskolb/XcodeGen
  10. 簡単な使い方

  11. project.yml

  12. Xcodeプロジェクト作成

  13. Xcodeプロジェクト bundleIdPrefixで指定した値 + Target 名がBundle Identifierになる

  14. 設定したいKeyの見つけ方 Xcodeで設定を変えてみる

  15. 設定したいKeyの見つけ方 変わったKeyを確認 SUPPORTS_MACCATALYST が変わった

  16. project.ymlに反映

  17. 具体的な導入手順

  18. 導入前のプロジェクト構成 独自のフレームワークを作成 アプリで読み込む 独自フレームワークそれぞれにプロ ジェクトを作成 アプリプロジェクトは本番用、開発用2 つ作る

  19. 独自フレームワークでのライブラリー依存指定 RxSwift 独自フレームワーク RxSwift 独自フレームワーク embed: fase embed: true

  20. 本番アプリ、開発アプリを分ける targetを本番用開発用作成 sourcesでConfigファイルを切り分ける

  21. 最終的なアプリ構成

  22. Xcode 12とCarthage対応

  23. Xcode 12でCarthageでビルド失敗 • Carthage はそれぞれの CPU アーキテクチャ用のバイナリを lipo ツールで一 つのバイナリにまとめている

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

    は一つのバイナリに複数アーキテクチャ用バイナリを含める • XCFramework は単体アーキテクチャフレームワークを一つのフォルダにま とめる • --use-xcframeworks オプションをつける • Build Phase の copy-frameworks も不要になる
  25. Carthage 0.37でXCFrameworkでビルド Xcodegenでxcframework指定

  26. CocoaPodsとFirebase Crashlytics対応

  27. XcodegenのプロジェクトをCocoapodsで使う Yaml Xcodegen Cocoapods

  28. Firebase Crashlyticsを初期化する

  29. Podfileに初期化スクリプト

  30. まとめ

  31. まとめ • Xcodegen は Xcode プロジェクト作成ツール • yaml ファイルからプロジェクトを生成 •

    具体的な導入手順 • Carthage を利用するには XCFramework でビルドする • Firebase Crashlytics の初期化スクリプトは CocoaPods で管理する
  32. 参考資料 • 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 を作成する方法
  33. • SwiftUI を始める最適な一冊 • SwiftUI の基礎を徹底解説 ◦ レイアウトシステム ◦ 座標空間

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

    Todo アプリを Widget 対応 「SwiftUI開発レシピ amazon」で検 索!