Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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