Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Renovate を使った ライブラリアップデート 仕組み化の取り組み
Search
ANDPAD inc
September 27, 2023
Technology
0
920
Renovate を使った ライブラリアップデート 仕組み化の取り組み
テックリード
栗山 徹
@kotetu
2023 年 9 月 28 日
モバイルアプリの開発生産性を上げる Lunch LT 登壇資料
ANDPAD inc
September 27, 2023
Tweet
Share
More Decks by ANDPAD inc
See All by ANDPAD inc
アンドパッドにおける CocoaPods ライブラリ群の SwiftPackageManager への移行戦略
andpad
0
28
Flutter は DCM が 9 割
andpad
1
32
Amplify で SPA をホスティングする際の注意点
andpad
0
21
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
andpad
0
60
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
390
本編では話さない Zig の話
andpad
2
250
"noncopyable types" の使いどころについて考えてみた
andpad
0
390
ANDPAD黒板のオフラインモード機能 リリースまでの軌跡
andpad
0
270
アンドパッドのマルチプロダクト戦略を支える SRE
andpad
1
250
Other Decks in Technology
See All in Technology
遷移の高速化 ヤフートップの試行錯誤
narirou
6
1.1k
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
3.5k
Active Directory攻防
cryptopeg
PRO
8
5.4k
OPENLOGI Company Profile for engineer
hr01
1
20k
Raycast AI APIを使ってちょっと便利な拡張機能を作ってみた / created-a-handy-extension-using-the-raycast-ai-api
kawamataryo
0
210
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
18k
Oracle Database Technology Night #87-1 : Exadata Database Service on Exascale Infrastructure(ExaDB-XS)サービス詳細
oracle4engineer
PRO
1
160
What's new in Go 1.24?
ciarana
1
110
IAMポリシーのAllow/Denyについて、改めて理解する
smt7174
2
200
【詳説】コンテンツ配信 システムの複数機能 基盤への拡張
hatena
0
230
Two Blades, One Journey: Engineering While Managing
ohbarye
4
1.9k
設計を積み重ねてシステムを刷新する
sansantech
PRO
0
160
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
How STYLIGHT went responsive
nonsquared
98
5.4k
Being A Developer After 40
akosma
89
590k
The Cult of Friendly URLs
andyhume
78
6.2k
Why Our Code Smells
bkeepers
PRO
336
57k
Producing Creativity
orderedlist
PRO
344
40k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
4 Signs Your Business is Dying
shpigford
182
22k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Transcript
栗山 徹 (@kotetu) - ϞόΠϧΞϓϦͷ։ൃੜ࢈ੑΛ্͛ΔLunch LT (2023/09/28) Renovateを使った ライブラリアップデート 仕組み化の取り組み
1
• LTのテーマ • iOSアプリ開発における Renovate を使ったライブラリアップデート仕組み 化について • ライブラリアップデートに対する考え方 •
株式会社アンドパッドにおける運用事例 • Renovate の使い方については最後に参考文献として共有します はじめに 2
1. モバイルアプリ開発におけるライブラリアップデート 2. Renovate について 3. ANDPAD iOS アプリにおけるライブラリ更新フロー 4.
まとめ アジェンダ 3
(くりやま とおる) • X (Twitter) : @kotetu • 株式会社アンドパッド テックリード
• iOSDC Japan 2023 • 「認証体験向上のために passkeys (パスキー) に対応する」 • 「Swift Markdownを使ったMarkdownアプリ 開発」 栗山 徹 4
1. モバイルアプリ開発における ライブラリアップデート 5
• 新機能の利用、機能改善の適用 • 不具合の解消 ライブラリアップデートの目的 6
• 新機能 • パフォーマンス向上 • 既存機能のエンハンス • プログラミング言語のバージョンアップ対応 • 破壊的変更が発生することもある
新機能の利用、機能改善の適用 7
• ライブラリの実装起因の不具合解消 • セキュリティ問題の修正 • OSアップデートに伴う不具合解消 不具合の解消 8
• 「遅れないように」かつ「小まめに」アップデートすることが望ましい ライブラリアップデートへの向き合い方 9
• 重要なアップデートに迅速に対応できる程度には追従する • クラッシュをはじめとした不具合修正 • セキュリティ問題 • 一方で慎重さも必要 • アップデートにより問題が発生しないかどうか見極める必要がある
「遅れないように」アップデートする理由 10
• アップデート間隔が長いと1回あたりのアップデート対応工数が増える • リリーススケジュール調整の手間が増える • アップデート作業に対する理解を得るのに苦労する • 工数かかる → 今はアップデートしない
→ 放置してさらに対応工数増える の悪循環 「小まめに」アップデートする理由 11
• 対応工数 (特にメジャーバージョンアップ時) • 機能開発に影響しないような体制作りが必要 • アップデート作業の手間 • ライブラリアップデート情報のキャッチアップ •
Pull Request 作成 • テスト 望ましいアップデートフロー実現への障壁 12
• 対応工数 (特にメジャーバージョンアップ時) • 機能開発に影響しないような体制作りが必要 • アップデート作業の手間 • ライブラリアップデート情報のキャッチアップ •
Pull Request 作成 • テスト 望ましいアップデートフロー実現への障壁 13 Renovateで効率化できる
2. Renovate について 14
• “Universal dependency update tool” • 依存関係の更新ツール • 主な機能 •
ライブラリの更新検知 • Pull Requestの自動生成 Renovate 15 Renovate の GitHub リポジトリ https://github.com/renovatebot/renovate
• 更新を検知したら自動でPRを作る • 自動でマージ設定可能 • 生成頻度など、設定項目が豊富 Pull Request ࣗಈੜ 16
• ライブラリ管理ツールへの対応 (iOS) • Renovate は SwiftPM, CocoaPods, Carthage をサポートしている
• Dependabot は SwiftPM のみ • ANDPAD (iOSアプリ) は Renovate を利用 • CocoaPods を利用しているため Renovate と Dependabot 17
3. ANDPAD iOS ΞϓϦにおける ライブラリ更新フロー 18
• 更新に気付いたらアップデートする、という慣習が続いてきた • 気付かないこともある • 更新が多すぎて上げにくい • 全社で Dependabot 導入の機運が高まった
• バックエンド・フロントエンド問わずアンドパッド全リポジトリで対応 Renovate を使い始めた経緯 19
• CocoaPods を利用 • 社内全 iOS 関連リポジトリで利用 • 複数種類の社内共有ライブラリを運用 •
使用しているサードパーティライブラリ • 20種類以上 ANDPAD iOS アプリ 20
ライブラリアップデートフロー 21
ライブラリアップデートフロー 22 Renovate で自動化 手動実行
• Pull Request 作成までは Renovate で自動化 • 更新確認は日次で実施 • 並列で出せる
Pull Request の数は 5 に設定 • レビュー担当がレビューし、手動でマージする • QA 方針はアップデート内容により異なる • 影響範囲が小さい場合はリリース前のリグレッションテストで担保 Renovate の運用ポリシー 23
• ϚΠφʔόʔδϣϯΞοϓͷසΞοϓ • 通常の運用工数の範囲内でアップデート 対応できるようになった • レビューアのチェックとQAにより品質 も維持 Renovate 導入の効果
24
• 影響範囲が大きなアップデートに対するアップデートポリシーの確立 • ex) メジャーアップデート、破壊的変更の有無 • 「時間的に余裕があれば対応」「アップデートしないといけない状況に追 い込まれたら対応」になりがち • Pull
Request 作成頻度が高い • レビューアコスト増、コンフリクト頻度増 運用面での課題 25
4. まとめ 26
• ライブラリのアップデートは「遅れないように」かつ「小まめに」 • アップデートフローの確立には様々な障壁がある • Renovate によりフローを一部自動化してエンジニア負荷を軽減できる • Renovate が貢献できるのはフローの一部
• 手動で対応する作業含めチームとしてどう取り組むかを考える必要がある まとめ 27
もっとアンドパッドの開発組織が知りたい方へ We are Hiring!! 28 技術スタックや募集ポジションを 掲載しています! https://engineer.andpad.co.jp/
• 「 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