Slide 1

Slide 1 text

©2023 RAKUS Co., Ltd. OSSライブラリの呪縛と解放戦略 2023/08/24 ミノ駆動さんと語るエンジニア怪談 LT @akkiee76

Slide 2

Slide 2 text

Akihiko Sato 株式会社ラクス / 楽楽精算 / Lead Engineer @akkiee76 自己紹介

Slide 3

Slide 3 text

OSSライブラリのアップデート戦略 今日のテーマ

Slide 4

Slide 4 text

OSSライブラリの アップデートしていますか?

Slide 5

Slide 5 text

アップデート大変ですよね?

Slide 6

Slide 6 text

アップデートしないと 様々な問題が発生します 👻

Slide 7

Slide 7 text

OSSライブラリの呪縛 1 ● セキュリティリスク ● 互換性の懸念 ● 保守性の低下 ○ 公式のサポートが受けられないことも ● 法的リスク ○ ライセンス違反などの法的問題が発生ことも アップデートしないとどうなるか?

Slide 8

Slide 8 text

OSSライブラリの呪縛 2 ● セキュリティホールが増える 😈 ● 顧客情報が流出することも 😈 ● 社会的信頼の低下 😈 ● 株価低下 😈 更にアップデートしないとどうなるか? プロダクト存続の危機 😅

Slide 9

Slide 9 text

OSSライブラリの呪縛 3 ● 対応コストが取れない 😭 ● 技術的な難易度が高い 😭 ● 仕様を知る人がいない 😭 どうしてアップデートが難しいか? アップデートのハードルが高くなる 😅

Slide 10

Slide 10 text

OSSライブラリの呪縛を解放しよう ● OSSライブラリを管理する ○ アップデート日、EOLスケジュール ● アップデートのコストを見積もる ● アップデートを開発スケジュールに計上する(必要なコスト) 継続的なアップデートを行うためには? アップデートのハードルを下げよう 😃

Slide 11

Slide 11 text

OSSライブラリ アップデート対応例 🔨

Slide 12

Slide 12 text

OSSライブラリをアップデートしよう 1 ● OSSライブラリを見える化(一覧化)😃 ● 定期的なアップデートを行う 😃 ● アップデートはバージョン開発の初期に行う 😃 弊社での主なアップデートへの取り組み

Slide 13

Slide 13 text

OSSライブラリをアップデートしよう 2 ● 管理ツールで一覧化 ○ yamory、楽楽販売、スプレッドシート ● アップデート時のバージョン、最終リリース日を記載 ● 難易度・優先度を棚卸し ○ 難易度・工数は定量的に判定し、工数に反映する OSSライブラリを見える化(棚卸し)する 😃

Slide 14

Slide 14 text

OSSライブラリをアップデートしよう 3 ● 半年〜1年周期でアップデートを実施 ● 開発リストに計上する(コストを計上する) ○ レビュー待ちのタスクなどでコツコツ行う ● アップデートする組み合わせは柔軟に組み替える ○ 影響度、難易度によってスコープを変える 定期的なアップデートを行う 😃

Slide 15

Slide 15 text

OSSライブラリをアップデートしよう 4 ● 場合によっては全機能影響を受けることも ○ 機能開発中だとデグレを発見しやすくなる ● 可能であればアップデート後から開発スタート ○ merge を次バージョン初期にするでもOK! アップデートはバージョン開発初期に行う 😃

Slide 16

Slide 16 text

● OSSライブラリを見える化(一覧化)😃 ● 定期的なアップデートを行う 😃 ● アップデートはバージョン開発の初期に行う 😃 主なアップデートへの取り組み

Slide 17

Slide 17 text

● Frontendライブラリの アップデートで苦労した話 ● これで失敗しない!JUnit 5 へのマイグレーション方法 ● 既存プロジェクトへの Swift Concurrency 導入戦略 ● 大規模AndroidアプリのDIをKoinからHiltへ移行するTIPS これまで行なってきたアップデート戦略

Slide 18

Slide 18 text

まとめ ● OSSライブラリは生物 ○ 対応しないとハードルが上がる ● アップデートは定期的に ○ アップデート不可能にならないように定期的にアップデート! ● アップデートは戦略を持って行おう ○ アップデート対応は開発スケジュールに入れる!

Slide 19

Slide 19 text

Thank you !