Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Profile tatsubee pixiv事業本部 pixiv運営本部 AEチーム 23新卒iOSエンジニア pixivアプリ中毒者 好きな落語は「笠碁」

Slide 3

Slide 3 text

pixivってアプリあるんですか?

Slide 4

Slide 4 text

あります

Slide 5

Slide 5 text

pixiv-ios 2013/3/19 フルリニューアル 2009/12/9 ver1.0リリース🎉

Slide 6

Slide 6 text

pixiv-ios 2023/9/29 ver7.16.16公開中

Slide 7

Slide 7 text

pixiv-android

Slide 8

Slide 8 text

pixivのiOSアプリってもう やることないんじゃないですか?

Slide 9

Slide 9 text

めっっっちゃあります!

Slide 10

Slide 10 text

pixiv-iosの課題

Slide 11

Slide 11 text

pixiv-iosの課題 Webではできるが、アプリだとできないことが... ● 投稿作品の編集 ● と の推し分け ● マイピク申請/メッセージのやり取り などなど 機能の話

Slide 12

Slide 12 text

pixiv-iosの課題 ● 密結合で、変更の影響範囲が大きくなりやすい ● メンテナンスされていないライブラリに依存している ● 独自実装が複雑になってしまい読みにくい ● iOS 13がまだ切れておらず、最新の技術を使いにくい コードの話

Slide 13

Slide 13 text

pixiv-iosの課題 そもそもiOSエンジニアが少ない → 新しいiOSエンジニアを雇いたい → pixivが複雑なため、高い技術力がないと採用できない → iOSエンジニアが少ない 人間の話

Slide 14

Slide 14 text

pixiv-iosの課題 iOSエンジニアが少ない 人間の話 iOSエンジニアを 雇いたい 高い技術力がないと 採用できない 無限ループ!

Slide 15

Slide 15 text

ループを断ち切るために レガシーを破壊する

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

破壊するための施策 (フィードバックください)

Slide 18

Slide 18 text

破壊するための施策 まずは毎週木曜日を内部品質改善の日にした コード改善はドメイン単位で見れば優先度が落ちてしまう → 必ず改善作業をする日を作った 解決法

Slide 19

Slide 19 text

破壊するための施策 課題: iOS 13が切れていない 解決法

Slide 20

Slide 20 text

破壊するための施策 課題: iOS 13が切れていない 解決法: 切る iOS 13のユーザーも極力使える状況は整える 解決法

Slide 21

Slide 21 text

破壊するための施策 課題: 密結合な実装 解決法

Slide 22

Slide 22 text

破壊するための施策 課題: 密結合な実装 解決法: SwiftPackageManagerマルチモジュール化 一緒にリアーキテクチャもやっちゃおう 解決法

Slide 23

Slide 23 text

破壊するための施策 課題: 影響範囲が大きい 解決法

Slide 24

Slide 24 text

破壊するための施策 課題: 影響範囲が大きい 解決法: MagicPodを使ったUIテスト自動化 人間の手による検証を減らすことで信頼性⤴ & レビューの手間を減らしてMergeガンガン行こうぜ! 解決法

Slide 25

Slide 25 text

破壊するための施策 課題: 可読性の低い独自実装 解決法

Slide 26

Slide 26 text

破壊するための施策 課題: 可読性の低い独自実装 解決法: 公式、サードパーティ製のライブラリへ置換 Swift Concurrencyの導入 解決法

Slide 27

Slide 27 text

破壊するための施策 課題: メンテナンスされていないライブラリへの依存 解決法

Slide 28

Slide 28 text

破壊するための施策 課題: メンテナンスされていないライブラリへの依存 解決法: レガシー化することを見越した置換 解決法

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

破壊のその未来へ!

Slide 32

Slide 32 text

破壊のその未来へ! アプリでpixivを完結させる アプリでしかできない体験を創る

Slide 33

Slide 33 text

アプリでしかできない体験を創る tatsubeeが今後追加したいと妄想する機能 ● Widget / FullScreen Live Activity → ユーザーが受け身でイラストを見られる ● Share Extension → イラスト選択から投稿までの手順をより少なくする ● Bluetooth, カメラ, App Clip, VisionPro …

Slide 34

Slide 34 text

14年間アプリを築いてくれて ありがとうございました!

Slide 35

Slide 35 text

自分達が の 次の10年を創っていきます!