Renovate を使った ライブラリアップデート 仕組み化の取り組み
by
ANDPAD inc
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
栗山 徹 (@kotetu) - ϞόΠϧΞϓϦͷ։ൃੜ࢈ੑΛ্͛ΔLunch LT (2023/09/28) Renovateを使った ライブラリアップデート 仕組み化の取り組み 1
Slide 2
Slide 2 text
• LTのテーマ • iOSアプリ開発における Renovate を使ったライブラリアップデート仕組み 化について • ライブラリアップデートに対する考え方 • 株式会社アンドパッドにおける運用事例 • Renovate の使い方については最後に参考文献として共有します はじめに 2
Slide 3
Slide 3 text
1. モバイルアプリ開発におけるライブラリアップデート 2. Renovate について 3. ANDPAD iOS アプリにおけるライブラリ更新フロー 4. まとめ アジェンダ 3
Slide 4
Slide 4 text
(くりやま とおる) • X (Twitter) : @kotetu • 株式会社アンドパッド テックリード • iOSDC Japan 2023 • 「認証体験向上のために passkeys (パスキー) に対応する」 • 「Swift Markdownを使ったMarkdownアプリ 開発」 栗山 徹 4
Slide 5
Slide 5 text
1. モバイルアプリ開発における ライブラリアップデート 5
Slide 6
Slide 6 text
• 新機能の利用、機能改善の適用 • 不具合の解消 ライブラリアップデートの目的 6
Slide 7
Slide 7 text
• 新機能 • パフォーマンス向上 • 既存機能のエンハンス • プログラミング言語のバージョンアップ対応 • 破壊的変更が発生することもある 新機能の利用、機能改善の適用 7
Slide 8
Slide 8 text
• ライブラリの実装起因の不具合解消 • セキュリティ問題の修正 • OSアップデートに伴う不具合解消 不具合の解消 8
Slide 9
Slide 9 text
• 「遅れないように」かつ「小まめに」アップデートすることが望ましい ライブラリアップデートへの向き合い方 9
Slide 10
Slide 10 text
• 重要なアップデートに迅速に対応できる程度には追従する • クラッシュをはじめとした不具合修正 • セキュリティ問題 • 一方で慎重さも必要 • アップデートにより問題が発生しないかどうか見極める必要がある 「遅れないように」アップデートする理由 10
Slide 11
Slide 11 text
• アップデート間隔が長いと1回あたりのアップデート対応工数が増える • リリーススケジュール調整の手間が増える • アップデート作業に対する理解を得るのに苦労する • 工数かかる → 今はアップデートしない → 放置してさらに対応工数増える の悪循環 「小まめに」アップデートする理由 11
Slide 12
Slide 12 text
• 対応工数 (特にメジャーバージョンアップ時) • 機能開発に影響しないような体制作りが必要 • アップデート作業の手間 • ライブラリアップデート情報のキャッチアップ • Pull Request 作成 • テスト 望ましいアップデートフロー実現への障壁 12
Slide 13
Slide 13 text
• 対応工数 (特にメジャーバージョンアップ時) • 機能開発に影響しないような体制作りが必要 • アップデート作業の手間 • ライブラリアップデート情報のキャッチアップ • Pull Request 作成 • テスト 望ましいアップデートフロー実現への障壁 13 Renovateで効率化できる
Slide 14
Slide 14 text
2. Renovate について 14
Slide 15
Slide 15 text
• “Universal dependency update tool” • 依存関係の更新ツール • 主な機能 • ライブラリの更新検知 • Pull Requestの自動生成 Renovate 15 Renovate の GitHub リポジトリ https://github.com/renovatebot/renovate
Slide 16
Slide 16 text
• 更新を検知したら自動でPRを作る • 自動でマージ設定可能 • 生成頻度など、設定項目が豊富 Pull Request ࣗಈੜ 16
Slide 17
Slide 17 text
• ライブラリ管理ツールへの対応 (iOS) • Renovate は SwiftPM, CocoaPods, Carthage をサポートしている • Dependabot は SwiftPM のみ • ANDPAD (iOSアプリ) は Renovate を利用 • CocoaPods を利用しているため Renovate と Dependabot 17
Slide 18
Slide 18 text
3. ANDPAD iOS ΞϓϦにおける ライブラリ更新フロー 18
Slide 19
Slide 19 text
• 更新に気付いたらアップデートする、という慣習が続いてきた • 気付かないこともある • 更新が多すぎて上げにくい • 全社で Dependabot 導入の機運が高まった • バックエンド・フロントエンド問わずアンドパッド全リポジトリで対応 Renovate を使い始めた経緯 19
Slide 20
Slide 20 text
• CocoaPods を利用 • 社内全 iOS 関連リポジトリで利用 • 複数種類の社内共有ライブラリを運用 • 使用しているサードパーティライブラリ • 20種類以上 ANDPAD iOS アプリ 20
Slide 21
Slide 21 text
ライブラリアップデートフロー 21
Slide 22
Slide 22 text
ライブラリアップデートフロー 22 Renovate で自動化 手動実行
Slide 23
Slide 23 text
• Pull Request 作成までは Renovate で自動化 • 更新確認は日次で実施 • 並列で出せる Pull Request の数は 5 に設定 • レビュー担当がレビューし、手動でマージする • QA 方針はアップデート内容により異なる • 影響範囲が小さい場合はリリース前のリグレッションテストで担保 Renovate の運用ポリシー 23
Slide 24
Slide 24 text
• ϚΠφʔόʔδϣϯΞοϓͷසΞοϓ • 通常の運用工数の範囲内でアップデート 対応できるようになった • レビューアのチェックとQAにより品質 も維持 Renovate 導入の効果 24
Slide 25
Slide 25 text
• 影響範囲が大きなアップデートに対するアップデートポリシーの確立 • ex) メジャーアップデート、破壊的変更の有無 • 「時間的に余裕があれば対応」「アップデートしないといけない状況に追 い込まれたら対応」になりがち • Pull Request 作成頻度が高い • レビューアコスト増、コンフリクト頻度増 運用面での課題 25
Slide 26
Slide 26 text
4. まとめ 26
Slide 27
Slide 27 text
• ライブラリのアップデートは「遅れないように」かつ「小まめに」 • アップデートフローの確立には様々な障壁がある • Renovate によりフローを一部自動化してエンジニア負荷を軽減できる • Renovate が貢献できるのはフローの一部 • 手動で対応する作業含めチームとしてどう取り組むかを考える必要がある まとめ 27
Slide 28
Slide 28 text
もっとアンドパッドの開発組織が知りたい方へ We are Hiring!! 28 技術スタックや募集ポジションを 掲載しています! https://engineer.andpad.co.jp/
Slide 29
Slide 29 text
• 「 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