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

Renovate を使った ライブラリアップデート 仕組み化の取り組み

ANDPAD inc
September 27, 2023

Renovate を使った ライブラリアップデート 仕組み化の取り組み

テックリード 栗山 徹 @kotetu
2023 年 9 月 28 日
モバイルアプリの開発生産性を上げる Lunch LT 登壇資料

ANDPAD inc

September 27, 2023
Tweet

More Decks by ANDPAD inc

Other Decks in Technology

Transcript

  1. 栗山 徹 (@kotetu) - ϞόΠϧΞϓϦͷ։ൃੜ࢈ੑΛ্͛ΔLunch LT (2023/09/28)
    Renovateを使った


    ライブラリアップデート


    仕組み化の取り組み
    1

    View Slide

  2. • LTのテーマ


    • iOSアプリ開発における Renovate を使ったライブラリアップデート仕組み
    化について


    • ライブラリアップデートに対する考え方


    • 株式会社アンドパッドにおける運用事例


    • Renovate の使い方については最後に参考文献として共有します
    はじめに
    2

    View Slide

  3. 1. モバイルアプリ開発におけるライブラリアップデート


    2. Renovate について


    3. ANDPAD iOS アプリにおけるライブラリ更新フロー


    4. まとめ
    アジェンダ
    3

    View Slide

  4. (くりやま とおる)
    • X (Twitter) : @kotetu


    • 株式会社アンドパッド テックリード


    • iOSDC Japan 2023


    • 「認証体験向上のために passkeys (パスキー)
    に対応する」


    • 「Swift Markdownを使ったMarkdownアプリ
    開発」
    栗山 徹
    4

    View Slide

  5. 1. モバイルアプリ開発における


    ライブラリアップデート
    5

    View Slide

  6. • 新機能の利用、機能改善の適用


    • 不具合の解消
    ライブラリアップデートの目的
    6

    View Slide

  7. • 新機能


    • パフォーマンス向上


    • 既存機能のエンハンス


    • プログラミング言語のバージョンアップ対応


    • 破壊的変更が発生することもある
    新機能の利用、機能改善の適用
    7

    View Slide

  8. • ライブラリの実装起因の不具合解消


    • セキュリティ問題の修正


    • OSアップデートに伴う不具合解消
    不具合の解消
    8

    View Slide

  9. • 「遅れないように」かつ「小まめに」アップデートすることが望ましい
    ライブラリアップデートへの向き合い方
    9

    View Slide

  10. • 重要なアップデートに迅速に対応できる程度には追従する


    • クラッシュをはじめとした不具合修正


    • セキュリティ問題


    • 一方で慎重さも必要


    • アップデートにより問題が発生しないかどうか見極める必要がある
    「遅れないように」アップデートする理由
    10

    View Slide

  11. • アップデート間隔が長いと1回あたりのアップデート対応工数が増える


    • リリーススケジュール調整の手間が増える


    • アップデート作業に対する理解を得るのに苦労する


    • 工数かかる → 今はアップデートしない → 放置してさらに対応工数増える
    の悪循環
    「小まめに」アップデートする理由
    11

    View Slide

  12. • 対応工数 (特にメジャーバージョンアップ時)


    • 機能開発に影響しないような体制作りが必要


    • アップデート作業の手間


    • ライブラリアップデート情報のキャッチアップ


    • Pull Request 作成


    • テスト
    望ましいアップデートフロー実現への障壁
    12

    View Slide

  13. • 対応工数 (特にメジャーバージョンアップ時)


    • 機能開発に影響しないような体制作りが必要


    • アップデート作業の手間


    • ライブラリアップデート情報のキャッチアップ


    • Pull Request 作成


    • テスト
    望ましいアップデートフロー実現への障壁
    13
    Renovateで効率化できる

    View Slide

  14. 2. Renovate について
    14

    View Slide

  15. • “Universal dependency update tool”


    • 依存関係の更新ツール


    • 主な機能


    • ライブラリの更新検知


    • Pull Requestの自動生成
    Renovate
    15
    Renovate の


    GitHub リポジトリ
    https://github.com/renovatebot/renovate

    View Slide

  16. • 更新を検知したら自動でPRを作る


    • 自動でマージ設定可能


    • 生成頻度など、設定項目が豊富
    Pull Request ࣗಈੜ੒
    16

    View Slide

  17. • ライブラリ管理ツールへの対応 (iOS)


    • Renovate は SwiftPM, CocoaPods, Carthage をサポートしている


    • Dependabot は SwiftPM のみ


    • ANDPAD (iOSアプリ) は Renovate を利用


    • CocoaPods を利用しているため
    Renovate と Dependabot
    17

    View Slide

  18. 3. ANDPAD iOS ΞϓϦにおける


    ライブラリ更新フロー
    18

    View Slide

  19. • 更新に気付いたらアップデートする、という慣習が続いてきた


    • 気付かないこともある


    • 更新が多すぎて上げにくい


    • 全社で Dependabot 導入の機運が高まった


    • バックエンド・フロントエンド問わずアンドパッド全リポジトリで対応
    Renovate を使い始めた経緯
    19

    View Slide

  20. • CocoaPods を利用


    • 社内全 iOS 関連リポジトリで利用


    • 複数種類の社内共有ライブラリを運用


    • 使用しているサードパーティライブラリ


    • 20種類以上
    ANDPAD iOS アプリ
    20

    View Slide

  21. ライブラリアップデートフロー
    21

    View Slide

  22. ライブラリアップデートフロー
    22
    Renovate で自動化 手動実行

    View Slide

  23. • Pull Request 作成までは Renovate で自動化


    • 更新確認は日次で実施


    • 並列で出せる Pull Request の数は 5 に設定


    • レビュー担当がレビューし、手動でマージする


    • QA 方針はアップデート内容により異なる


    • 影響範囲が小さい場合はリリース前のリグレッションテストで担保
    Renovate の運用ポリシー
    23

    View Slide

  24. • ϚΠφʔόʔδϣϯΞοϓͷස౓Ξοϓ


    • 通常の運用工数の範囲内でアップデート
    対応できるようになった


    • レビューアのチェックとQAにより品質
    も維持
    Renovate 導入の効果
    24

    View Slide

  25. • 影響範囲が大きなアップデートに対するアップデートポリシーの確立


    • ex) メジャーアップデート、破壊的変更の有無


    • 「時間的に余裕があれば対応」「アップデートしないといけない状況に追
    い込まれたら対応」になりがち


    • Pull Request 作成頻度が高い


    • レビューアコスト増、コンフリクト頻度増
    運用面での課題
    25

    View Slide

  26. 4. まとめ
    26

    View Slide

  27. • ライブラリのアップデートは「遅れないように」かつ「小まめに」


    • アップデートフローの確立には様々な障壁がある


    • Renovate によりフローを一部自動化してエンジニア負荷を軽減できる


    • Renovate が貢献できるのはフローの一部


    • 手動で対応する作業含めチームとしてどう取り組むかを考える必要がある
    まとめ
    27

    View Slide

  28. もっとアンドパッドの開発組織が知りたい方へ
    We are Hiring!!
    28
    技術スタックや募集ポジションを


    掲載しています!
    https://engineer.andpad.co.jp/

    View Slide

  29. • 「 potatotips #77で「RenovateによるiOSライブラリーの自動更新」という発表をしました&いくつかの補足」


    • https://ikesyo.hatenablog.com/entry/potatotips-77-renovate-for-ios


    • 「Renovateで実現するライブラリの自動更新生活」


    • https://speakerdeck.com/ikesyo/automated-library-updates-with-renovate


    • 「Renovateまとめ(iOSを例に解説)」


    • https://qiita.com/_asa08_/items/b0be1453f70efb3b9c29


    • 「Renovateの導入と半年間の運用の振り返り」


    • https://zenn.dev/sunadoi/articles/889219ab865583


    • 「[GitHub] Renovate の導入と設定」


    • https://qiita.com/ksh-fthr/items/40732b6396f36c62bea2
    参考文献
    29

    View Slide