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

pixiv-iosを破壊したい #pixivmeetup

tatsubee
September 29, 2023

pixiv-iosを破壊したい #pixivmeetup

2023/9/29に行われたPIXIV MEETUPのLightningTalkの資料です。

pixivのiOSアプリは2009年から提供されている歴史あるアプリです。
しかし14年分の負債もまた積もっており、改修や新規機能の実装を行うためには今一度iOSアプリを破壊する必要があります。
そんなiOSアプリを破壊していくための施策と、今後アプリがどこに向かって欲しいかのtatsubeeの考えについてお話しします。

tatsubee

September 29, 2023
Tweet

More Decks by tatsubee

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. あります

    View Slide

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

    View Slide

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

    View Slide

  7. pixiv-android

    View Slide

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

    View Slide

  9. めっっっちゃあります!

    View Slide

  10. pixiv-iosの課題

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. 破壊のその未来へ!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide