Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kotlinプロジェクトを”再現可能”に保つ: Gradleのlockfileと応用例の紹介
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
omelette-alpaca
November 19, 2025
Programming
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kotlinプロジェクトを”再現可能”に保つ: Gradleのlockfileと応用例の紹介
After.kt 2025 #2 発表資料
omelette-alpaca
November 19, 2025
More Decks by omelette-alpaca
See All by omelette-alpaca
#KotlinFest 2025: 累計5000万DLサービスの裏側 - LINEマンガのKotlinで挑む大規模Server-side ETLの最適化
omelettealpaca42
0
12
Other Decks in Programming
See All in Programming
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
210
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
カツオ、ご期待ください
suneo3476
0
190
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
APNsからLive Activityを開始する話
yumnumm
0
170
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
460
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
41k
Automating Front-end Workflow
addyosmani
1369
210k
Navigating Weather and Climate Data
rabernat
0
560
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Done Done
chrislema
187
17k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
800
How GitHub (no longer) Works
holman
316
150k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
Leo the Paperboy
mayatellez
10
2.4k
Technical Leadership for Architectural Decision Making
baasie
3
600
Transcript
Kotlinプロジェクトを”再現可能”に保つ: Gradleのlockfileと応用例の紹介 2025.11.12 After.kt 2025 #2 LM Server Dev1 /
Ono Akito (@omelette_alpaca) © LINE Digital Frontier Corporation
01. Introduction 1.1 About LINE Digital Frontier [PR] 1.2 About
Me 02. Lockfileの背景 2.1 About Pain 2.2 Example Agenda 2.3 Direct & Root Cause 03. Gradle lockfileについて 3.1 Lockfile Adoption Rate 3.2 About Gradle Lockfile 04. Lockfileの処理について 4.1 Gradle Process 4.2 Detail 05. Gradle lockfileの実践 5.1 Problem: Multi-Project 5.2 Solution: Multi-Project 5.3 Problem: Lockfile Management 5.4. Solution: Lockfile Management 06. Lockfileの応用例1: SBOM管理 6.1 What is SBOM ? 6.2 Why SBOM ? 6.3 How SBOM ? 6.4 Lockfile x Trivy 07. Lockfileの応用例2: 脆弱性スキャン 7.1 What is Security Scan ? 7.2 How Security Scan ? 7.3 Lockfile x OSV-Scanner 08. Lockfileの応用例3: 自動更新 8.1 About Auto Update 8.2 How Auto Update 8.3 About Renovate 8.4 Lockfile x Renovate 09. Conclusion 9.1 Summary
01. Introduction 1.1 About LINE Digital Frontier [PR] 1.2 About
Me 02. Lockfileの背景 2.1 About Pain 2.2 Example Agenda 2.3 Direct & Root Cause 03. Gradle lockfileについて 3.1 Lockfile Adoption Rate 3.2 About Gradle Lockfile 04. Lockfileの処理について 4.1 Gradle Process 4.2 Detail 05. Gradle lockfileの実践 5.1 Problem: Multi-Project 5.2 Solution: Multi-Project 5.3 Problem: Lockfile Management 5.4. Solution: Lockfile Management 06. Lockfileの応用例1: SBOM管理 6.1 What is SBOM ? 6.2 Why SBOM ? 6.3 How SBOM ? 6.4 Lockfile x Trivy 07. Lockfileの応用例2: 脆弱性スキャン 7.1 What is Security Scan ? 7.2 How Security Scan ? 7.3 Lockfile x OSV-Scanner 08. Lockfileの応用例3: 自動更新 8.1 About Auto Update 8.2 How Auto Update 8.3 About Renovate 8.4 Lockfile x Renovate 09. Conclusion 9.1 Summary
PR
• 電子コミックサービス「LINEマンガ」の開発運営 • 累計 5500 万DLを突破 • 2025年第1四半期&第2四半期のアプリ収益ランキング1位 • **Server-side
Kotlin**を採用 About LINE Digital Frontier [PR]
PR fin.
1. Introduction
• Ono Akito • LINE Digital Frontier • LINEマンガのバックエンド開発を担当 About
Me
01. Introduction 1.1 About LINE Digital Frontier [PR] 1.2 About
Me 02. Lockfileの背景 2.1 About Pain 2.2 Example Agenda 2.3 Direct & Root Cause 03. Gradle lockfileについて 3.1 Lockfile Adoption Rate 3.2 About Gradle Lockfile 04. Lockfileの処理について 4.1 Gradle Process 4.2 Detail 05. Gradle lockfileの実践 5.1 Problem: Multi-Project 5.2 Solution: Multi-Project 5.3 Problem: Lockfile Management 5.4. Solution: Lockfile Management 06. Lockfileの応用例1: SBOM管理 6.1 What is SBOM ? 6.2 Why SBOM ? 6.3 How SBOM ? 6.4 Lockfile x Trivy 07. Lockfileの応用例2: 脆弱性スキャン 7.1 What is Security Scan ? 7.2 How Security Scan ? 7.3 Lockfile x OSV-Scanner 08. Lockfileの応用例3: 自動更新 8.1 About Auto Update 8.2 How Auto Update 8.3 About Renovate 8.4 Lockfile x Renovate 09. Conclusion 9.1 Summary
2. Lockfileの背景
Kotlinのビルドって(たまに)辛い
While… • Kotlin は良い言語 • JVM資産は膨大で大抵のことは困らない • 歴史に裏打ちされた安定性
でもやっぱり(たまに)つらい
My Experience ElasticsearchのClientがテストコード限定でエラー
Direct Cause • 原因はLuceneの依存バージョンのコンフリクト • テスト実行のみのため調査が長引いた
Root Cause “依存管理”
01. Introduction 1.1 About LINE Digital Frontier [PR] 1.2 About
Me 02. Lockfileの背景 2.1 About Pain 2.2 Example Agenda 2.3 Direct & Root Cause 05. Gradle lockfileの実践 5.1 Problem: Multi-Project 5.2 Solution: Multi-Project 5.3 Problem: Lockfile Management 5.4. Solution: Lockfile Management 06. Lockfileの応用例1: SBOM管理 6.1 What is SBOM ? 6.2 Why SBOM ? 6.3 How SBOM ? 6.4 Lockfile x Trivy 07. Lockfileの応用例2: 脆弱性スキャン 7.1 What is Security Scan ? 7.2 How Security Scan ? 7.3 Lockfile x OSV-Scanner 08. Lockfileの応用例3: 自動更新 8.1 About Auto Update 8.2 How Auto Update 8.3 About Renovate 8.4 Lockfile x Renovate 09. Conclusion 9.1 Summary 03. Gradle lockfileについて 3.1 Lockfile Adoption Rate 3.2 About Gradle Lockfile 04. Lockfileの処理について 4.1 Gradle Process 4.2 Detail
3. Gradleのlockfileについて
Gradleにlockfileがあるってご存知ですか?
[1]: 出典: 「開発者の99.7%に対しGradleは0.9%ロックファイル利用…パッケージマネージャー7種の設計比較」 https://blog.vonxai.co.jp/post/design-space-lockfiles-package-managers/ Gradle lockfileの利用率は **0.9** % [1]
[1]: 出典: 「開発者の99.7%に対しGradleは0.9%ロックファイル利用…パッケージマネージャー7種の設計比較」 https://blog.vonxai.co.jp/post/design-space-lockfiles-package-managers/
Why not Used? (imo) • デフォルトで有効ではない • BOM文化
About Gradle lockfile (1) • Dependency Locking • (ex. “go.sum”
, “package-lock.json”) • Gradle公式の機能 • Gradle 5.0 (2018年) から存在
About Gradle lockfile (2)
About Gradle lockfile (3)
About Gradle lockfile (4) From: https://github.com/flutter/flutter/blob/2981516/dev/integration_tests/android_views/android/buildscript-gradle.lockfile
01. Introduction 1.1 About LINE Digital Frontier [PR] 1.2 About
Me 02. Lockfileの背景 2.1 About Pain 2.2 Example Agenda 2.3 Direct & Root Cause 03. Gradle lockfileについて 3.1 Lockfile Adoption Rate 3.2 About Gradle Lockfile 04. Lockfileの処理について 4.1 Gradle Process 4.2 Detail 05. Gradle lockfileの実践 5.1 Problem: Multi-Project 5.2 Solution: Multi-Project 5.3 Problem: Lockfile Management 5.4. Solution: Lockfile Management 06. Lockfileの応用例1: SBOM管理 6.1 What is SBOM ? 6.2 Why SBOM ? 6.3 How SBOM ? 6.4 Lockfile x Trivy 07. Lockfileの応用例2: 脆弱性スキャン 7.1 What is Security Scan ? 7.2 How Security Scan ? 7.3 Lockfile x OSV-Scanner 08. Lockfileの応用例3: 自動更新 8.1 About Auto Update 8.2 How Auto Update 8.3 About Renovate 8.4 Lockfile x Renovate 09. Conclusion 9.1 Summary
4. Lockfileの処理について
Lockfile Process • Lockfileの生成は主に2フェーズ • “収集”フェーズと”確定”フェーズ
Gradle Process
Gradle Process with lockfile
Locking Detail
Real Code (1) From: https://github.com/gradle/gradle/blob/v9.2.0/platforms/software/dependency- management/src/main/java/org/gradle/internal/locking/DefaultDependencyLockingProvider.java#L193-L208
Real Code (2) From: https://github.com/gradle/gradle/blob/v9.2.0/platforms/software/dependency- management/src/main/java/org/gradle/internal/locking/DefaultDependencyLockingProvider.java#L210-215
01. Introduction 1.1 About LINE Digital Frontier [PR] 1.2 About
Me 02. Lockfileの背景 2.1 About Pain 2.2 Example Agenda 2.3 Direct & Root Cause 03. Gradle lockfileについて 3.1 Lockfile Adoption Rate 3.2 About Gradle Lockfile 04. Lockfileの処理について 4.1 Gradle Process 4.2 Detail 05. Gradle lockfileの実践 5.1 Problem: Multi-Project 5.2 Solution: Multi-Project 5.3 Problem: Lockfile Management 5.4. Solution: Lockfile Management 06. Lockfileの応用例1: SBOM管理 6.1 What is SBOM ? 6.2 Why SBOM ? 6.3 How SBOM ? 6.4 Lockfile x Trivy 07. Lockfileの応用例2: 脆弱性スキャン 7.1 What is Security Scan ? 7.2 How Security Scan ? 7.3 Lockfile x OSV-Scanner 08. Lockfileの応用例3: 自動更新 8.1 About Auto Update 8.2 How Auto Update 8.3 About Renovate 8.4 Lockfile x Renovate 09. Conclusion 9.1 Summary
5. Gradle lockfileの実践
Problem 1: Multi Project • Lockコマンド(--write-locks) はmulti projectに非対応 • 何らかの手段で再帰的に実行する必要がある
Solution: Multi Project • 専用の独自のTaskを定義
Problem 2: Lockfile Management • 依存を追加する際にlockfileを更新しないとエラー • 運用&認知コストは可能な限り減らしたい
Solution: Lockfile Management • CI (GitHub Actions)で自動的に確認する
01. Introduction 1.1 About LINE Digital Frontier [PR] 1.2 About
Me 02. Lockfileの背景 2.1 About Pain 2.2 Example Agenda 2.3 Direct & Root Cause 03. Gradle lockfileについて 3.1 Lockfile Adoption Rate 3.2 About Gradle Lockfile 04. Lockfileの処理について 4.1 Gradle Process 4.2 Detail 05. Gradle lockfileの実践 5.1 Problem: Multi-Project 5.2 Solution: Multi-Project 5.3 Problem: Lockfile Management 5.4. Solution: Lockfile Management 06. Lockfileの応用例1: SBOM管理 6.1 What is SBOM ? 6.2 Why SBOM ? 6.3 How SBOM ? 6.4 Lockfile x Trivy 07. Lockfileの応用例2: 脆弱性スキャン 7.1 What is Security Scan ? 7.2 How Security Scan ? 7.3 Lockfile x OSV-Scanner 08. Lockfileの応用例3: 自動更新 8.1 About Auto Update 8.2 How Auto Update 8.3 About Renovate 8.4 Lockfile x Renovate 09. Conclusion 9.1 Summary
6. Lockfileの応用例1: “SBOM管理”
What is SBOM ? • SBOM (Software Bill of Materials)
= ソフトウェア部品表 • SPDX, CycloneDXなどのフォーマットがある • Kotlinプロジェクトでは依存ライブラリの一覧 [1]: 出典: 「SBOM 導入・運用の手引き」 https://www.ipa.go.jp/jinzai/ics/core_human_resource/final_project/2024/sbom.html
Why SBOM ? • 主にセキュリティ/ ライセンス管理 • 現代のソフトウェアの複雑化 • 高度化するサプライチェーン攻撃
How SBOM ? • Trivy (aquasecurity/trivy) とlockfileを利用する
About Trivy • TrivyはOSSのセキュリティスキャナ • Gradleの**lockfileをSBOMに変換**できる
Lockfile x Trivy (1) • 最小のgradle.lockfileを用意
Lockfile x Trivy (2) • TrivyでSBOM(SPDX)への変換を実行 • (センシティブな場合はオフラインモードで)
Lockfile x Trivy (3) • 実行結果
Lockfile x Trivy (4) • CIでRelease Assetへのアップロードまで自動化
Lockfile x Trivy (5) • あくまでもlockfileベースなので厳密ではないケースがある • 別途ソリューションが必要なケースも • とはいえある程度は網羅できる
01. Introduction 1.1 About LINE Digital Frontier [PR] 1.2 About
Me 02. Lockfileの背景 2.1 About Pain 2.2 Example Agenda 2.3 Direct & Root Cause 03. Gradle lockfileについて 3.1 Lockfile Adoption Rate 3.2 About Gradle Lockfile 04. Lockfileの処理について 4.1 Gradle Process 4.2 Detail 05. Gradle lockfileの実践 5.1 Problem: Multi-Project 5.2 Solution: Multi-Project 5.3 Problem: Lockfile Management 5.4. Solution: Lockfile Management 06. Lockfileの応用例1: SBOM管理 6.1 What is SBOM ? 6.2 Why SBOM ? 6.3 How SBOM ? 6.4 Lockfile x Trivy 07. Lockfileの応用例2: 脆弱性スキャン 7.1 What is Security Scan ? 7.2 How Security Scan ? 7.3 Lockfile x OSV-Scanner 08. Lockfileの応用例3: 自動更新 8.1 About Auto Update 8.2 How Auto Update 8.3 About Renovate 8.4 Lockfile x Renovate 09. Conclusion 9.1 Summary
7. Lockfileの応用例2: “脆弱性スキャン”
What is Vulnerability Scan ? • 脆弱性のあるライブラリが含まれていないか確認 • Ex. log4j-coreの2.14.0
-> CVE-2021-44832
How Security Scan? • OSV-Scanner (google/osv-scanner) と lockfileを利用
About OSV-Scanner • Google製のOSSの脆弱性スキャナ • OSVという脆弱性DBを使用 • Gradle lockfileのスキャンに対応
Lockfile x OSV-Scanner (1) • 最小のgradle.lockfileを用意
Lockfile x OSV-Scanner (2) • OSV-Scannerでlockfileをスキャン • (センシティブな場合はオフラインモードで)
Lockfile x OSV-Scanner (3) • 実行結果
Lockfile x OSV-Scanner (4) • CIでRelease Assetへのアップロードまで自動化
01. Introduction 1.1 About LINE Digital Frontier [PR] 1.2 About
Me 02. Lockfileの背景 2.1 About Pain 2.2 Example Agenda 2.3 Direct & Root Cause 03. Gradle lockfileについて 3.1 Lockfile Adoption Rate 3.2 About Gradle Lockfile 04. Lockfileの処理について 4.1 Gradle Process 4.2 Detail 05. Gradle lockfileの実践 5.1 Problem: Multi-Project 5.2 Solution: Multi-Project 5.3 Problem: Lockfile Management 5.4. Solution: Lockfile Management 06. Lockfileの応用例1: SBOM管理 6.1 What is SBOM ? 6.2 Why SBOM ? 6.3 How SBOM ? 6.4 Lockfile x Trivy 07. Lockfileの応用例2: 脆弱性スキャン 7.1 What is Security Scan ? 7.2 How Security Scan ? 7.3 Lockfile x OSV-Scanner 08. Lockfileの応用例3: 自動更新 8.1 About Auto Update 8.2 How Auto Update 8.3 About Renovate 8.4 Lockfile x Renovate 09. Conclusion 9.1 Summary
8. Lockfileの応用例3: “ライブラリの自動更新”
About Auto Update • 依存ライブラリを定期的にアップデートしたい
How Auto Update? • Renovateとlockfileを利用
About Renovate • OSSの依存ライブラリの自動更新ツール • GitHub App / Self-Hosted •
類似のDependabotもありますがmulti projectが微妙
Lockfile x Renovate (1)
Lockfile x Renovate (2)
01. Introduction 1.1 About LINE Digital Frontier [PR] 1.2 About
Me 02. Lockfileの背景 2.1 About Pain 2.2 Example Agenda 2.3 Direct & Root Cause 03. Gradle lockfileについて 3.1 Lockfile Adoption Rate 3.2 About Gradle Lockfile 04. Lockfileの処理について 4.1 Gradle Process 4.2 Detail 05. Gradle lockfileの実践 5.1 Problem: Multi-Project 5.2 Solution: Multi-Project 5.3 Problem: Lockfile Management 5.4. Solution: Lockfile Management 06. Lockfileの応用例1: SBOM管理 6.1 What is SBOM ? 6.2 Why SBOM ? 6.3 How SBOM ? 6.4 Lockfile x Trivy 07. Lockfileの応用例2: 脆弱性スキャン 7.1 What is Security Scan ? 7.2 How Security Scan ? 7.3 Lockfile x OSV-Scanner 08. Lockfileの応用例3: 自動更新 8.1 About Auto Update 8.2 How Auto Update 8.3 About Renovate 8.4 Lockfile x Renovate 09. Conclusion 9.1 Summary
9. Conclusion
TL;DR (1 line) Gradle lockfileは便利
TL;DR (3 lines) • Gradle lockfileの背景と概要 • Gradle lockfileの詳細と実践 •
Lockfileの応用例: • SBOM管理 with Trivy • 脆弱性スキャン with OSV-Scanner • ライブラリの自動更新 with Renovate
72 LINEマンガコイン & カジュアル面談申込フォーム We are hiring !
End Of doc.