Slide 1

Slide 1 text

pixivアプリは 変化する tatsubee

Slide 2

Slide 2 text

pixiv事業本部アプリ部所属 23新卒 iOSエンジニア  tatsubee

Slide 3

Slide 3 text

pixivアプリ

Slide 4

Slide 4 text

pixiv-ios: 2009/12/9 pixiv-android: 2010/7/9 ver1.0 リリース

Slide 5

Slide 5 text

2024/09/20現在 pixiv-ios: 7.20.18 pixiv-android: 6.124.0

Slide 6

Slide 6 text

ところで

Slide 7

Slide 7 text

pixiv Inc. pixiv-iosを 破壊したい @tatsubee

Slide 8

Slide 8 text

破壊すべきレガシー ● iOS Deployment Target 13 ● メンテナンスされていないライブラリへの依存 ● 密結合な実装 ● 可読性の低い独自実装

Slide 9

Slide 9 text

破壊すべきレガシー これらどうなった? ● iOS Deployment Target 13 ● メンテナンスされていないライブラリへの依存 ● 密結合な実装 ● 可読性の低い独自実装

Slide 10

Slide 10 text

課題: iOS Deployment Target 達成! 13 → 15 (最新は18) ● プロジェクトを進める上で、iOS 14以上にしないと困るこ とが判明 ● iOSエンジニアとしては、iOS 15以上にして SwiftUIを十分に使いたい

Slide 11

Slide 11 text

課題: メンテナンスされていない ライブラリへの依存 進捗: 3 / 8 SwiftPMで管理できない or Privacy Manifests要件で 怪しいライブラリは優先度高で置換実行! 解決法: 公式APIまたは別ライブラリへの置換

Slide 12

Slide 12 text

課題: メンテナンスされていない ライブラリへの依存 今後 ● 新規実装では対象のライブラリは使用しない ● Swift 6移行の中で困るものがあれば優先度を上げる 解決法: 公式APIまたは別ライブラリへの置換

Slide 13

Slide 13 text

課題: 密結合な実装 解決法: Swift PMによるマルチモジュール化 順調に進行中! ● プロジェクト全体の単一モジュール化 Done! ● 新規実装はモジュールとして作成 ● 既存実装も徐々にモジュール分割

Slide 14

Slide 14 text

課題: 密結合な実装 解決法: Swift PMによるマルチモジュール化 順調に進行中! ● プロジェクト全体の単一モジュール化 Done! ● 新規実装はモジュールとして作成 ● 既存実装も徐々にモジュール分割

Slide 15

Slide 15 text

課題: 密結合な実装 解決法: Swift PMによるマルチモジュール化 順調に進行中! ● プロジェクト全体の単一モジュール化 Done! ● 新規実装はモジュールとして作成 ● 既存実装も徐々にモジュール分割

Slide 16

Slide 16 text

課題: 可読性の低い独自実装 解決法1: ライブラリの導入 ● Networking: Alamofire ● Cache: Kingfisher ● State Management: swift-composable-architecture

Slide 17

Slide 17 text

課題: 可読性の低い独自実装 解決法1: ライブラリの導入 ● Networking: Alamofire ● Cache: Kingfisher ● State Management: swift-composable-architecture

Slide 18

Slide 18 text

課題: 可読性の低い独自実装 解決法2: APIの最新化 事例:UITableView + 独自実装DataSource → UICollectionView + Compositional Layout + Diffable Data Source

Slide 19

Slide 19 text

課題: 可読性の低い独自実装 解決法3: SwiftUIの利用

Slide 20

Slide 20 text

pixiv-iosの変化 ● iOS Deployment Target 13 → 15 ● メンテナンスされていないライブラリの置き換え ● Swift PM マルチモジュール化 ● 可読性の低い独自実装の破壊

Slide 21

Slide 21 text

pixiv-iosの変化 ● iOS Deployment Target 13 → 15 ● メンテナンスされていないライブラリの置き換え ● Swift PM マルチモジュール化 ● 可読性の低い独自実装の破壊 + ● SwiftUIの導入 ● CI/CDの改善 ● MagicPodを使った自動テストの改善

Slide 22

Slide 22 text

pixivアプリは 変化し続ける