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
730
Renovate を使った ライブラリアップデート 仕組み化の取り組み
テックリード
栗山 徹
@kotetu
2023 年 9 月 28 日
モバイルアプリの開発生産性を上げる Lunch LT 登壇資料
ANDPAD inc
September 27, 2023
Tweet
Share
More Decks by ANDPAD inc
See All by ANDPAD inc
Map のパフォーマンス向上のために検討されている SwissTable を理解する
andpad
0
180
Introduction of Cybersecurity with OSS
andpad
0
18
App Router に移行して良かったところを語る
andpad
2
440
現場訪問で変わる毎日の開発
andpad
1
250
Does Ruby Parser dream of highly expressive grammar?
andpad
0
130
Long journey of Ruby standard library RubyKaigi 2024
andpad
3
4.4k
MySQL の SQL クエリチューニングの要所を掴む勉強会
andpad
7
8.8k
Long journey of Ruby standard library
andpad
0
34
Go 1.22 の Vet 変更点について
andpad
0
510
Other Decks in Technology
See All in Technology
いまからでも遅くない!ROKS (RedHat OpenShift on IBM Cloud) の運用
helenxiao
0
230
三次元再構成(東京大学大学院 情報理工学系研究科『知能情報論』)
pfn
PRO
8
1.7k
go get で考慮している ファイルシステムの挙動について
shinnosuke_kishida
3
610
手を動かさないインシデント対応〜自動化で迅速・正確な運用を目指す〜
jacopen
3
280
Adopting ZGC in HBase for LINE Messaging
lycorptech_jp
PRO
1
140
やらない事を決めるプロダクト設計
rukiadia
4
3k
VS CodeとVimが好きなエンジニアが考えた最強のエディタ
miura55
0
130
SSII2024 [OS3] 生成AIと完全自動運転
ssii
PRO
0
140
生成AI向け機械学習クラスタ 構築のレシピ 北海道石狩編
pfn
PRO
3
460
RAGの評価フレームワーク「Ragas」をさくっとキャッチアップ
os1ma
4
910
Power Automateのデータ操作(Data Operation)について (Ver.モダンデザイナー)
miyakemito
4
320
エレガントパズル エンジニアのマネジメントという難問にあなたはどう立ち向かうのか / Elegant Puzzle
iwashi86
13
2.4k
Featured
See All Featured
The Invisible Customer
myddelton
115
12k
Fantastic passwords and where to find them - at NoRuKo
philnash
40
2.6k
Web development in the modern age
philhawksworth
203
10k
Large-scale JavaScript Application Architecture
addyosmani
505
110k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
9k
The Mythical Team-Month
searls
217
42k
YesSQL, Process and Tooling at Scale
rocio
165
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
353
28k
KATA
mclloyd
18
12k
Robots, Beer and Maslow
schacon
PRO
155
8k
Mobile First: as difficult as doing things right
swwweet
218
8.7k
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