$30 off During Our Annual Pro Sale. View Details »

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 @
    オンライン

    View Slide

  2. Who am I

    Name
    ● 佐藤タケシ
    (
    さとうたけし
    )

    Company

    Merpay, Inc.(2019/01 ~)

    Role

    Software Engineer (iOS)

    Account

    Twitter: @hatakenokakashi

    Facebook:
    佐藤剛士

    GitHub: SatoTakeshiX

    View Slide

  3. Xcodegenを個人アプリに導入
    ● 導入経緯

    Xcodegen
    って何?
    ● 簡単な使い方
    ● 具体的な導入手順

    Xcode 12

    Carthage
    対応

    CocoaPods

    Firebase Crashlytics
    対応
    ● まとめ

    View Slide

  4. 導入経緯

    View Slide

  5. 玄空飛星風水
    アプリ
    ● 飛星図を自動で作成
    ● 玄空飛星風水、八宅風水で診

    ● 自宅や引越し先の間取りから
    運勢判断
    難しい飛星図作成が
    すぐできる!

    View Slide

  6. アプリプロジェクト問題点
    ● 3年前に作ったプロジェクトで構成が自分でも把握できなくなっている

    Firebase Crashlytics

    Firebase Analytics
    でユーザーのログを取りたい
    ● アプリプロジェクトは本番用しかないので、開発がしにくい。
    ● 開発用アプリを作成したいがプロジェクト管理が煩雑になるのを避けたい

    View Slide

  7. アプリプロジェクト問題点
    ● 3年前に作ったプロジェクトで構成が自分でも把握できなくなっている

    Firebase Crashlytics

    Firebase Analytics
    でユーザーのログを取りたい
    ● アプリプロジェクトは本番用しかないので、開発がしにくい。
    ● 開発用アプリを作成したいがプロジェクト管理が煩雑になるのを避けたい
    Xcodegen
    でプロジェクト管理しよう!

    View Slide

  8. Xcodegenって何?

    View Slide

  9. Xcodegenとは

    Xcode
    プロジェクト作成ツール

    yaml
    ファイルでプロジェクトを管理

    Xcode
    上でプロジェクトを管理しなくても良くなる
    ● 結果としてスキーム、テストターゲット、アプリケーションターゲットの作成が
    簡単になる
    https://github.com/yonaskolb/XcodeGen

    View Slide

  10. 簡単な使い方

    View Slide

  11. project.yml

    View Slide

  12. Xcodeプロジェクト作成

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. project.ymlに反映

    View Slide

  17. 具体的な導入手順

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. 最終的なアプリ構成

    View Slide

  22. Xcode 12とCarthage対応

    View Slide

  23. Xcode 12でCarthageでビルド失敗

    Carthage
    はそれぞれの
    CPU
    アーキテクチャ用のバイナリを
    lipo
    ツールで一
    つのバイナリにまとめている

    Xcode 12
    から
    iOS
    シミュレーター用のバイナリが、従来の
    Intel

    CPU

    x86_64
    用バイナリに加えて
    Apple Silicon

    arm64
    用バイナリを含むように
    なった

    lipo
    の制限で実機用の
    arm64
    バイナリとシュミレーター用
    arm64
    バイナリが一
    つのファットバイナリにまとめることができない

    View Slide

  24. Carthage 0.37でXCFrameworkでビルド

    Xcode 11
    から登場した、複数のフレームワークを
    1
    つにまとめられる仕組み

    lipo
    は一つのバイナリに複数アーキテクチャ用バイナリを含める

    XCFramework
    は単体アーキテクチャフレームワークを一つのフォルダにま
    とめる

    --use-xcframeworks
    オプションをつける

    Build Phase

    copy-frameworks
    も不要になる

    View Slide

  25. Carthage 0.37でXCFrameworkでビルド
    Xcodegenでxcframework指定

    View Slide

  26. CocoaPodsとFirebase Crashlytics対応

    View Slide

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

    View Slide

  28. Firebase Crashlyticsを初期化する

    View Slide

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

    View Slide

  30. まとめ

    View Slide

  31. まとめ

    Xcodegen

    Xcode
    プロジェクト作成ツール

    yaml
    ファイルからプロジェクトを生成
    ● 具体的な導入手順

    Carthage
    を利用するには
    XCFramework
    でビルドする

    Firebase Crashlytics
    の初期化スクリプトは
    CocoaPods
    で管理する

    View Slide

  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
    を作成する方法

    View Slide


  33. SwiftUI
    を始める最適な一冊

    SwiftUI
    の基礎を徹底解説
    ○ レイアウトシステム
    ○ 座標空間
    ○ データ管理

    UI
    コンポーネント
    ● 実践的なサンプルアプリ

    GitHub API
    ○ お絵かきアプリ
    ○ 写真フィルターアプリ

    iOS 14
    対応

    LazyVStack

    LazyVGrid

    WidgetKit

    @StateObjectなど
    「SwiftUI開発レシピ amazon」で検
    索!

    View Slide

  34. 豊富なサンプル
    アプリ

    GitHub
    リポジトリー検索
    ● お絵かきアプリ
    ● 写真フィルターアプリ

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

    View Slide