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

マルチモジュールアーキテクチャと開発プロセス改善の取り組み

natsumi_oishi
September 02, 2023

 マルチモジュールアーキテクチャと開発プロセス改善の取り組み

natsumi_oishi

September 02, 2023
Tweet

More Decks by natsumi_oishi

Other Decks in Technology

Transcript

  1. 7 Topics 1. SwiftUI の拡⼤、Interface Builder の削除 2. マルチモジュールアーキテクチャへの移⾏ 3.

    Gitブランチ戦略とリリースプロセスの⾃動化 4. リリースプロセスにおけるドキュメンテーション
  2. 11 How to proceed • ViewController / Viewコンポーネントを SwiftUI へ

    • 新規画⾯は SwiftUI で検討 • 残りの xib / storyboard をリストアップ • ⼿が空いている⼈が⾃由に着⼿ • UIKit or SwiftUI → 実装者が選択 SwiftUIの拡⼤、Interface Builderの削除
  3. 12 How to proceed • 現状の SwiftUI で実装が困難なものをすり合わせ • TextField

    系 • Pull to refresh (iOS 16未満) • スクロールによる追加読み込み(ページング) SwiftUIの拡⼤、Interface Builderの削除
  4. 15 UIKit TextField × Pull to refresh × ページング ×

    SwiftUIの拡⼤、Interface Builderの削除
  5. 16 The number of Interface Builder files 0 40 80

    120 160 2021年8⽉ 2022年8⽉ 2023年8⽉ storyboard xib • LaunchScreen • 廃⽌予定の ViewController SwiftUIの拡⼤、Interface Builderの削除
  6. 17 Problems 🤔 • 仕様の把握漏れによるバグがテスト中に発覚 • Interface Builder 上の設定を忘れがち •

    実装途中に SwiftUI で実装不可能と判明 • 代替のコンポーネントで実装 • 実装前に実装可能か調査が必要 SwiftUIの拡⼤、Interface Builderの削除
  7. 18 Problems 🤔 • 親の View (UIKit) のコードが複雑になる • UIHostingController

    の view を UIView として扱うとシンプルに • サイズ可変な View コンポーネントのレイアウト崩れ • 画⾯全体を SwiftUI に書き換えてしまった⽅が楽 SwiftUIの拡⼤、Interface Builderの削除
  8. 26 Migration Policy 🧭 • ⼀気に理想の形へ進めない • 前のフェーズが完了していなくても次のフェーズに進む • 現在

    Ph3 の状態だが、 前段階の移⾏作業も同時並⾏で⾏なってい る マルチモジュールアーキテクチャへの移⾏
  9. 27 Good 👍 • 責務を分離できた • 移⾏時に Unit Test の実装漏れに気づけた

    • テストカバレッジ向上 💪 • モジュールごとに Unit Test を実⾏できる • ローカルでのUnit Testが⾼速化 マルチモジュールアーキテクチャへの移⾏
  10. 28 Problems 🤔 • CIのビルド時間が増加 • M1マシンで許容範囲に • 同時の移⾏作業で project.pbxproj

    がコンフリクト • モジュール追加時に必要な設定を忘れがち • 移⾏時のみの悩みになるはず マルチモジュールアーキテクチャへの移⾏
  11. 31 Previous • develop ブランチで開発・QA • リリース直前に master へマージ •

    リリースは master からアーカイブ Gitブランチ戦略とリリースプロセスの⾃動化
  12. 34 NEW • develop ブランチを廃⽌ • QA開始時に release ブランチを作成 •

    リリースは tag からアーカイブ Gitブランチ戦略とリリースプロセスの⾃動化
  13. 36 Problems 🤔 • Pull Request の⼀覧が取得できず • バージョンに含まれる差分 ≠

    master / release ブランチ間の差分 • リリース作業にも変更が必要 • できるだけアクション数を減らしたい Gitブランチ戦略とリリースプロセスの⾃動化
  14. 37 リリースプロセスの⾃動化 (Bitrise) 1. tag を⽣成 2. アプリのアーカイブ 3. AppStore

    へアップロード 4. GitHub のリリースページ作成 Bitrise Gitブランチ戦略とリリースプロセスの⾃動化
  15. 38 リリースプロセスの⾃動化 (Bitrise) 1. Slack から workflow を実⾏ 2. ⼿動でAppStoreに

    submit 🚀 Gitブランチ戦略とリリースプロセスの⾃動化
  16. 39 リリースプロセスの⾃動化 (GitHub Actions) • 差分があれば Pull Request を⾃動⽣成 •

    PR の description にリストアップ • 最新のタグと⽐較 GitHub Actions Gitブランチ戦略とリリースプロセスの⾃動化
  17. 41 Problems & Next Action 🌟 • Bitrise と GitHub

    Actions のメンテナーが偏りがち • ハンズオン等で触れる機会を作る
  18. 43 Problems 🤔 • 仕様の把握漏れでバグ発⽣ • 影響範囲があいまい → QAに時間が掛かる •

    不必要な確認作業が増加 • 実装からリリースまでのタイムラグは増加 リリースプロセスにおけるドキュメンテーション
  19. 44 Problems 🤔 • 修正内容の社内への共有不⾜ • GitHub の Milestone :

    アプリエンジニア以外不向き • iOS / Android で共通の修正を確認しにくい リリースプロセスにおけるドキュメンテーション
  20. 46 Document for release details • 変更の種別 • 新機能・仕様変更 •

    不具合修正 • リファクタリング リリースプロセスにおけるドキュメンテーション
  21. 47 Document for release details • Pull Request のリンク •

    QAの要否 • Impact Level • QAのターゲットOS / デバイス リリースプロセスにおけるドキュメンテーション
  22. 50 Summary 1. SwiftUI の拡⼤、Interface Builder の削除 2. マルチモジュールアーキテクチャへの移⾏ 3.

    Gitブランチ戦略とリリースプロセスの⾃動化 4. リリースプロセスにおけるドキュメンテーション