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

真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

More Decks by 株式会社ビットキー / Bitkey Inc.

Other Decks in Technology

Transcript

  1. © 2023 Bitkey Inc.
    真似できる!
    実践的なプロジェクト構成
    ~Bitkey流簡単レシピ~
    Kyo Arayama / arasan01
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  2. iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  3. © 2023 Bitkey Inc.
    このセッションで話すこと
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  4. 題目
    Swift packages中心の取り組み
    app.xcodeprojのポテンシャルを引き出すプロジェクト構

    モジュール間の依存解決とリソースの管理
    testplanを用いた複数モジュールのテストの集約
    CI/CD環境を単純なシェルスクリプトで実現
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  5. © 2023 Bitkey Inc.
    私達の取り組み方で歩いた時の感覚を追体験して
    これは真似してもいいかなと考えてもらいたい!
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  6. © 2023 Bitkey Inc.
    本編
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  7. © 2023 Bitkey Inc.
    チーム状況
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  8. © 2023 Bitkey Inc.
    当時 3人 workhubアプリをすでに開発中

    Androidやるタスク
    BFFとBackendも書くタスク
    新規アプリをiOS先行で作るタスク
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  9. © 2023 Bitkey Inc.
    小さい、とても小さなチームでの開発
    でもひとりじゃない
    でも複数人が同時に開発するタイミングがある
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  10. © 2023 Bitkey Inc.
    開発期間、およそ3ヶ月程度
    できる限り早いリリースを目指して
    その上で、このアプリが開発資産になることを目指して
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  11. © 2023 Bitkey Inc.
    最終的に求めたカタチ
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  12. © 2023 Bitkey Inc.
    素早く開発ができること
    UIKitやFoundationと同様の使い勝手で
    再利用ができること
    色々なメンテナンスの手間が低いこと
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  13. © 2023 Bitkey Inc.
    私達の技術スタック
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  14. © 2023 Bitkey Inc.
    SwiftUI
    自社開発のBitkey Device SDK (Core Bluetooth)
    Firebase
    Point-Free/SwiftUI Navigation
    Point-Free/Dependencies
    Not TCA Library
    今の開発者が持っているスキルと
    Point-Freeの考え方を組み合わせた開発構成
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  15. © 2023 Bitkey Inc.
    雰囲気で理解する図
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  16. 題目
    Swift packages中心の取り組み
    app.xcodeprojのポテンシャルを引き出すプロジェクト構

    モジュール間の依存解決とリソースの管理
    testplanを用いた複数モジュールのテストの集約
    CI/CD環境を単純なシェルスクリプトで実現
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  17. © 2023 Bitkey Inc.
    Swift packages中心の取り組み
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  18. © 2023 Bitkey Inc.
    基本的な取り組みはiOSDC 2021の
    d_dateさんのセッションと同じ
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  19. © 2023 Bitkey Inc.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  20. © 2023 Bitkey Inc.
    Swift Package中心で嬉しいこと
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  21. © 2023 Bitkey Inc.
    ファイルに関する差分の解消がない
    XcodeGenを利用したいモチベーションの
    大半を担ってくれるので嬉しい
    XcodeGenはymlファイルからxcodeprojを生成してくれるツール
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  22. © 2023 Bitkey Inc.
    アプリ本体はただの設定ファイルになる
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  23. © 2023 Bitkey Inc.
    Xcode Previewsは想像以上にうまく動く
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  24. © 2023 Bitkey Inc.
    トラブル
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  25. © 2023 Bitkey Inc.
    ビルドが通らない状態でビルドが通るときがある
    キャッシュのせい…?
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  26. © 2023 Bitkey Inc.
    SPM Pluginsが微妙に不安定
    ex) SwiftGenのプラグインを使っているときに
    ビルドがたまに失敗する
    コード生成タイミングと
    ビルドタイミングがあってない…?
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  27. © 2023 Bitkey Inc.
    Xcode Previewsを実機で動かせるはずが動かない
    PotentialCrashError: Update failed
    XCPreviewAgent may have crashed.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  28. 題目
    Swift packages中心の取り組み
    app.xcodeprojのポテンシャルを引き出すプロジェクト構

    モジュール間の依存解決とリソースの管理
    testplanを用いた複数モジュールのテストの集約
    CI/CD環境を単純なシェルスクリプトで実現
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  29. © 2023 Bitkey Inc.
    app.xcodeprojのポテンシャルを
    引き出すプロジェクト構成
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  30. © 2023 Bitkey Inc.
    Xcodeは好きですか?
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  31. © 2023 Bitkey Inc.
    GUIからそのまま触れる設定たち
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  32. © 2023 Bitkey Inc.
    わかりやすいScheme編集
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  33. © 2023 Bitkey Inc.
    使いやすいコマンドラインツール
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  34. © 2023 Bitkey Inc.
    チームで衝突しまくるproject.pbxproj
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  35. © 2023 Bitkey Inc.
    Xcodeを真ん中にどのように開発環境を作るか
    これに苦しまなければ幸せになれる
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  36. © 2023 Bitkey Inc.
    project.pbxprojさえなんとかできれば!
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  37. © 2023 Bitkey Inc.
    SwiftUIのみの環境で
    Swift Package側にコード寄せたら
    xcodeprojのつらいところが解決した
    ファイルの変更差分
    外部パッケージ関連
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  38. © 2023 Bitkey Inc.
    xcodeprojで管理したいもの
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  39. © 2023 Bitkey Inc.
    対象とするアプリのビルド設定系全部
    ビルド設定
    Firebaseのplistを指定
    テストプラン
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  40. © 2023 Bitkey Inc.
    リリースしている実際のプロジェクト構成
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  41. 題目
    Swift packages中心の取り組み
    app.xcodeprojのポテンシャルを引き出すプロジェクト構

    モジュール間の依存解決とリソースの管理
    testplanを用いた複数モジュールのテストの集約
    CI/CD環境を単純なシェルスクリプトで実現
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  42. © 2023 Bitkey Inc.
    モジュール間の依存解決とリソースの管理
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  43. © 2023 Bitkey Inc.
    モジュール間の依存解決で考えること
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  44. © 2023 Bitkey Inc.
    実装にモジュールレベルで依存しないことができるか?
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  45. © 2023 Bitkey Inc.
    宣言/ダミー実装だけモジュールレベルで共有すると
    実際の処理を担うコードのビルドをしなくてよい
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  46. © 2023 Bitkey Inc.
    マルチモジュールを歩くときは
    pointfreeco/isowordsやThe Composable Architecture

    構成を参考にしよう
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  47. © 2023 Bitkey Inc.
    pointfreeco/swift-dependencies
    マルチモジュールで使いやすい
    実際の実装とPreviewの実装とTestの実装が提供できる
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  48. © 2023 Bitkey Inc.
    仕組み
    前提としてPreview, Testで使える実装を求める
    その上でLiveで使える実装を求める
    これをTaskLocalの仕組みで扱う
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  49. © 2023 Bitkey Inc.
    簡単な実装例
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  50. © 2023 Bitkey Inc.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  51. © 2023 Bitkey Inc.
    -> 最終的にBitkeyClientLiveのリンクをすると利用される
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  52. © 2023 Bitkey Inc.
    途中までliveValueの実装ないけど
    そのときは何が使われるの?
    -> testValueが使われる
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  53. © 2023 Bitkey Inc.
    swift-dependencies -> DependencyValues.swift#L269-L350
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  54. © 2023 Bitkey Inc.
    ここが嬉しい
    1. リンクの段階で実装を差し込めるから
    マルチモジュールに使いやすい
    2. liveValueがあれば使うので
    injectLiveのようなコードが必要ない
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  55. © 2023 Bitkey Inc.
    Commonをできるだけ避ける
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  56. © 2023 Bitkey Inc.
    より踏み込んで考える
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  57. © 2023 Bitkey Inc.
    Commonに具体的な実装が
    含まれる状況を避ける
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  58. © 2023 Bitkey Inc.
    現実世界に依存しない
    具体的な実装は基本的に他のモジュールの依存がある
    モジュールの依存はまた別のモジュールに依存する
    ビルド時間は伸びるしPreviewは動かしづらい
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  59. © 2023 Bitkey Inc.
    Package.swiftはSwiftコードであり
    生成するlibraryは動的に組める
    targetのdependenciesも動的に組める
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  60. © 2023 Bitkey Inc.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  61. © 2023 Bitkey Inc.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  62. © 2023 Bitkey Inc.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  63. © 2023 Bitkey Inc.
    実際の処理に依存するモジュールの参照を
    可能な限り遅延させる
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  64. © 2023 Bitkey Inc.
    Isowords -> ApiClientLiveあたりの実装を参考にする
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  65. © 2023 Bitkey Inc.
    おすすめTips
    Swiftの強みを使う
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  66. © 2023 Bitkey Inc.
    おすすめTips
    Swiftの強みを使う
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  67. 題目
    Swift packages中心の取り組み
    app.xcodeprojのポテンシャルを引き出すプロジェクト構

    モジュール間の依存解決とリソースの管理
    testplanを用いた複数モジュールのテストの集約
    CI/CD環境を単純なシェルスクリプトで実現
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  68. © 2023 Bitkey Inc.
    testplanを用いた複数モジュールの
    テストの集約
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  69. © 2023 Bitkey Inc.
    Test Plans知ってますか?
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  70. © 2023 Bitkey Inc.
    こいつ
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  71. © 2023 Bitkey Inc.
    意識しなくても最初は自動で生成してくれる
    XcodeでPackageで作成するtestTargetも出てくる
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  72. © 2023 Bitkey Inc.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  73. © 2023 Bitkey Inc.
    xcodebuildから呼び出すテストとswift testから
    呼び出すテストは結構違う。
    主にUIKitなどに関わるテストはxcodebuildのみ可
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  74. © 2023 Bitkey Inc.
    Swift Packagesで作ったテストを
    一つのSchemeにまとめてしまおう
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  75. © 2023 Bitkey Inc.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  76. © 2023 Bitkey Inc.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  77. © 2023 Bitkey Inc.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  78. © 2023 Bitkey Inc.
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  79. 題目
    Swift packages中心の取り組み
    app.xcodeprojのポテンシャルを引き出すプロジェクト構

    モジュール間の依存解決とリソースの管理
    testplanを用いた複数モジュールのテストの集約
    CI/CD環境を単純なシェルスクリプトで実現
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  80. © 2023 Bitkey Inc.
    CI/CD環境を単純な
    シェルスクリプトで実現
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  81. © 2023 Bitkey Inc.
    Xcode Cloudが使いたい!!
    でもBitriseとかGithub Actions使ってる
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  82. © 2023 Bitkey Inc.
    できる限り特定の機能に依存せずにCIを使おう
    Shell Scriptは汎用的
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  83. © 2023 Bitkey Inc.
    https://qiita.com/arasan01/items/7521255be581ac451c4f
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  84. © 2023 Bitkey Inc.
    押さえるべきところ -> 証明書の管理
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  85. © 2023 Bitkey Inc.
    WWDC21
    Distribute apps in Xcode
    with cloud signing
    https://developer.apple.com/videos/play/wwdc2021/10204/
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  86. © 2023 Bitkey Inc.
    App Store Connectがよしなに管理してくれる世界へ
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  87. © 2023 Bitkey Inc.
    アーカイブして
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  88. © 2023 Bitkey Inc.
    AppStoreConnectに出せるようにして
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  89. © 2023 Bitkey Inc.
    送信!
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  90. © 2023 Bitkey Inc.
    https://qiita.com/arasan01/items/7521255be581ac451c4f
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  91. © 2023 Bitkey Inc.
    秒速まとめ
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  92. © 2023 Bitkey Inc.
    マルチモジュールをしっかり
    活かすアーキテクチャを考えよう!
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  93. © 2023 Bitkey Inc.
    二人以上の開発でSwift Packagesの
    メリットはすぐに享受できるぞ!
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  94. © 2023 Bitkey Inc.
    Xcodeの設定だけをうまく管理できるぞ!
    xcodeproj最高!
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  95. © 2023 Bitkey Inc.
    依存解決ライブラリを使ってみよう!
    pointfreeco/swift-dependencies
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  96. © 2023 Bitkey Inc.
    テストはxctestplanに集約しよう!
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  97. © 2023 Bitkey Inc.
    CI/CDはxcodebuildを使ってやってみよう!
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  98. © 2023 Bitkey Inc.
    お し ま い
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  99. あれ、レシピどこ…?
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  100. © 2023 Bitkey Inc.
    Bitkeyブースでレシピ公開してます
    もっと詳しい内容もあるので来てね!
    レシピ内容はBitkeyの
    Qiita Organizationにも掲載予定
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide

  101. 真似できる!
    実践的なプロジェクト構成
    ~Bitkey流簡単レシピ~
    Kyo Arayama / arasan01
    iOSDC2023
    iOSDC2023 真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~
    真似できる!実践的なプロジェクト構成 ~Bitkey流簡単レシピ~

    View Slide