Slide 1

Slide 1 text

【iOSエンジニア特集】 iOSアプリ開発の裏側 開発組織が向き合う課題とこれから @akifumi

Slide 2

Slide 2 text

⾃⼰紹介 ● 名前 ○ 深⾕ 哲史 (Akifumi Fukaya) ● 会社 ○ 株式会社カウシェ (2020/07 ~ ) ● 役割 ○ Engineering Manager (Mobile) ● アカウント ○ X: @akifumifukaya ○ Facebook: fukaya.akifumi ○ YOUTRUST: akifumi ○ GitHub: akifumi

Slide 3

Slide 3 text

会社紹介

Slide 4

Slide 4 text

プロダクト 野菜がもらえる お買い物アプリ

Slide 5

Slide 5 text

開発体制

Slide 6

Slide 6 text

開発体制

Slide 7

Slide 7 text

開発体制

Slide 8

Slide 8 text

技術スタック

Slide 9

Slide 9 text

技術スタック 開発言語 Swift, Kotlin, Go アーキテクチャ MVVM, Clean Architecture UIフレームワーク SwiftUI, Jetpack Compose インフラ Google Cloud 構成管理 Terraform 分析基盤 BigQuery モニタリング Firebase Crashlytics, Firebase Monitoring, Cloud Monitoring, Cloud Trace CI/CD Bitrise, GitHub Actions 開発ツール Notion, Slack, GitHub デザイン Figma Cloud Run Pub/Sub Cloud Spanner Firestore Cloud Storage Cloud Load Balancing BigQuery Cloud Logging Cloud Monitoring Cloud Scheduler Trace

Slide 10

Slide 10 text

アプリ構成 ● 全体アーキテクチャ ○ MVVM ○ マルチモジュール ■ XcodeGen & SPM (徐々に移⾏中) ○ SwiftUI をメインで利⽤

Slide 11

Slide 11 text

課題

Slide 12

Slide 12 text

課題 ● レガシーコード改善 ● 技術的な開発⽣産性アップ ● 組織的な開発⽣産性アップ

Slide 13

Slide 13 text

課題① レガシーコード改善

Slide 14

Slide 14 text

課題①:レガシーコード改善 課題感 ● 2020年9⽉ カウシェ v1.0.0 リリースしてから4年半が経過 ○ リリース当初から SwiftUI を採⽤しているが、アップデートの追従が⼤変 ● アーキテクチャやパッケージ構成はレガシー化 ○ SwiftUI + MVVM + XcodeGen ● 上記の改善に取り組みやすいアーキテクチャの⼟壌作り ○ 新しい技術の採⽤ ○ 細かく改善していける ○ 将来、新しいアーキテクチャなどを導⼊しやすい環境

Slide 15

Slide 15 text

課題①:レガシーコード改善 解決策:開発と平⾏してレガシーコードを改善できる⼟壌をつくる ● レイヤー構成の変更 ○ Domain, Data, Presentation, Shared レイヤーを作成 ● ディレクトリ構成の変更 ○ Packages ディレクトリを作成し、上記レイヤーを配置 ● Swift Package Manager モジュール設計 ○ モジュール依存管理を XcodeGen → SPM に徐々に移⾏

Slide 16

Slide 16 text

課題② 技術的な開発⽣産性アップ

Slide 17

Slide 17 text

課題②:技術的な開発⽣産性アップ 課題感 ● ⽣成AIが⽬覚ましい進化を遂げている ● 少⼈数でも、より「多くの施策」をより「早いスピード」で開発したい ● ⽇々の開発業務でAIを活⽤することにより、⽣産性をさらに⾼い状態へ

Slide 18

Slide 18 text

課題②:技術的な開発効率性アップ 解決策:積極的なAI活⽤ ● 少⼈数でより⽣産性の⾼い状態にするべく、 AI を活⽤した開発スタイルへとシフト ● Mobile Engineer 全員で Cline を利⽤ ● AI 活⽤度をデイリーでモニタリング‧向上 ● ノウハウを蓄積して共有

Slide 19

Slide 19 text

課題③ 組織的な開発⽣産性アップ

Slide 20

Slide 20 text

課題③:組織的な開発⽣産性アップ 課題感 ● 現在のモバイルアプリ開発体制は2チーム‧2名ずつの少⼈数体制 ● スタートアップであり、今後も少⼈数での開発体制を維持する ● とはいえ、中⻑期的には作りたいものが増える ● 少⼈数体制で開発⽣産性を向上する必要あり

Slide 21

Slide 21 text

課題③:組織的な開発⽣産性アップ 解決策:両OS 開発を促進する基盤づくり ● 両OS 開発 ○ iOS Engineer / Android Engineer が両OS開発できる体制を構築 ○ 領域を超えた相互レビュー体制 ○ Cline を活⽤し、両OSの開発を促進 ● Monorepo 化 ○ コードの共有、AI コンテキスト‧ノウハウの共有、PRレビュー‧スイッチングコスト減少 ● 組織的な技術⼒向上 ○ オンボーディングタスク‧勉強会などを実施し、開発知識を増やしていく

Slide 22

Slide 22 text

今後の展望

Slide 23

Slide 23 text

● アーキテクチャ改善 ○ 新しいアーキテクチャ導⼊‧パッケージ構成の変更 ● AI 活⽤の加速化 ○ AI × クロスプラットフォーム開発 模索 ■ AI 活⽤した iOS/Android 開発を加速するために、Monorepo 化を選択 ■ コードベース統合‧AI ルール整備‧フォーマット整備などにより、両OS 同時開発を模索 ○ mcp server 連携 ■ Figma/Notion/Slack mcp → App コード開発 ● 品質保証の⾃動化 ○ UI ⾃動テストによる品質向上 今後の展望

Slide 24

Slide 24 text

Thank you.