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
Danger-Swift 導入のススメ / Path to import Danger-Swift
Search
Elvis Shi
July 22, 2020
Programming
1.3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Danger-Swift 導入のススメ / Path to import Danger-Swift
Elvis Shi
July 22, 2020
More Decks by Elvis Shi
See All by Elvis Shi
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
510
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
520
ゼロから始めるPreferenceの実装 / Let's implement Preferences from scratch
lovee
0
160
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
400
個人アプリを2年ぶりにアプデしたから褒めて / I just updated my personal app, praise me!
lovee
0
760
How did I build an Open-Source SwiftUI Toast Library
lovee
1
180
SwiftUIで使いやすいToastの作り方 / How to build a Toast system which is easy to use in SwiftUI
lovee
3
1.3k
SwiftUIで二重スクロール作ってみた / When I tried to make a dual-scroll-ish view in SwiftUI
lovee
1
390
Observation のあれこれ / A brief introduction about Observation
lovee
3
450
Other Decks in Programming
See All in Programming
リアルな遅延を測る仕様
kota_yata
1
130
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
380
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
730
ソフトウェアラスタライザ
fadis
1
660
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
720
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
380
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
260
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.7k
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
5
530
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
7.8k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.7k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
480
Optimizing for Happiness
mojombo
378
71k
WENDY [Excerpt]
tessaabrams
11
39k
Are puppies a ranking factor?
jonoalderson
2
3.8k
Fireside Chat
paigeccino
42
4k
Design in an AI World
tapps
1
290
The agentic SEO stack - context over prompts
schlessera
0
880
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Technical Leadership for Architectural Decision Making
baasie
3
530
Transcript
%BOHFS4XJGUಋೖͷεεϝ f o r .PC JMF "D U
0/ - * / &
} var employedBy = "YUMEMI Inc." var job = "iOS
Tech Lead" var favoriteLanguage = "Swift" var twitter = "@lovee" var qiita = "lovee" var github = "el-hoshino" var additionalInfo = """ Nintendo Switch ͕ͳ͔ͳ͔ͨΒͳ͍! """ final class Me: Developable, Talkable {
13 ͷϨϏϡʔͰɺ͜ΜͳࢦఠΑ͘͠·ͤΜ͔ʁ w ςετΛՃ͍ͯͩ͘͠͞ w $IBOHFMPHΛՃ͍ͯͩ͘͠͞ w ͜ͷ -JOU ϫʔχϯάΛमਖ਼͍ͯͩ͘͠͞
w मਖ਼ྔ͕ଟ͗͢ΔͷͰখׂ͍ͯͩ͘͘͞͠͞ w FUD
%BOHFS4XJGU
%BOHFS4XJGUͱ ΤϯδχΞ Ϧϙϗετ ʢ(JU)VCʣ $*$%αʔό ʢ#JUSJTFʣ ᶃίʔυΛ1VTIͯ͠ 13Λग़͢ ᶄτϦΨʔΛൃՐ ᶅςετσϓϩΠ
ͳͲΛ࣮ߦ ᶆ࣮ߦ݁ՌΛฦ͢ %BOHFS4XJGU 13ࠩͷ ੩తղੳ
13ࠩΛ ੩తղੳ͢Δπʔϧ %BOHFS4XJGUͱ
w ϑΝΠϧมߋ֬ೝ w Ϗϧυϫʔχϯά w ϒϥϯν֬ೝ w ςετΧόϨοδ ʢશମʣ w
ςετΧόϨοδ ʢϑΝΠϧ͝ͱʣ
ػցݕࠪͰ ϨϏϡΞʔͷෛ୲ΛݮΒ͢πʔϧ %BOHFS4XJGUͱ
Ͱ%BOHFS4XJGUΛ ಋೖͯ͠ΈΑ͏
IUUQTHJUIVCDPNEBOHFSTXJGU
%BOHFS4XJGUͷಋೖᶃϩʔΧϧฤ .JOUΛ͏ํ๏͋Δ͕ɺݱࡏόά͕͋ΔͬΆ͍ͷͰͷؒ)PNFCSFXͷํ͕͓͢͢Ί $ brew install danger-swift * $ cd path/to/project
$ danger-swift edit $ # edit in Xcode $ # return $ # Dangerfile.swift generated
%BOHFS4XJGUͷಋೖᶄಈ࡞ςετฤ $ # Create a Pull Request $ danger-swift pr
url/to/pr
%BOHFS4XJGUͷಋೖᶅ$*࣮ߦฤ .JOUΛ͏ํ๏͋Δ͕ɺݱࡏόά͕͋ΔͬΆ͍ͷͰͷؒ)PNFCSFXͷํ͕͓͢͢Ί $ brew install danger-swift * $ # set
$DANGER_GITHUB_API_TOKEN $ danger-swift ci
͢Ͱʹ%BOHFS͕͋Δͷʹ ͳͥ%BOHFS4XJGUΛਪ͔͢
%BOHFS %BOHFS4XJGU
ϓϩύςΟʔએݴͷδϟϯϓ
%BOHFSΑΓ%BOHFS4XJGU͕͍͍ͱ͜Ζ w ͍׳ΕͯΔ4XJGUͰ%BOHFSpMFॻ͚ΔͷͰɺॻ͘ ͷಡΉͷ3VCZΑΓָʢJ04ΤϯδχΞతʹʣ w *%&ͷαϙʔτ͕ड͚ΒΕΔͷͰɺ༷ΛશʹѲ Ͱ͖ͯͳͯ͘τϥΠˍΤϥʔͰॻ͍͍͚ͯΔ w ߏจΤϥʔϏϧυΤϥʔͳͷͰɺϩʔΧϧͰͷಈ࡞ ςετ3VCZϑΝΠϧΑΓίετ͕͍
w 4XJGU1.ϓϩδΣΫτରԠͷϓϥάΠϯ͕%BOHFS ΑΓॆ࣮
13ͷϨϏϡʔͰɺ͜ΜͳࢦఠΑ͘͠·ͤΜ͔ʁ w ςετΛՃ͍ͯͩ͘͠͞ w $IBOHFMPHΛՃ͍ͯͩ͘͠͞ w ͜ͷ-JOUϫʔχϯάΛमਖ਼͍ͯͩ͘͠͞ w मਖ਼ྔ͕ଟ͗͢ΔͷͰখׂ͍ͯͩ͘͘͞͠͞ w
FUD
%BOHFSpMFTXJGUαϯϓϧ let danger = Danger() // ςετΧόϨοδΛ֬ೝ import DangerSwiftCoverage //
package: https://github.com/f-meloni/danger-swift-coverage.git Coverage.xcodeBuildCoverage(.xcresultBundle("Test.xcresult"), minimumCoverage: 60) // Changelog ฤूঢ়گ֬ೝ if !danger.git.modifiedFiles.contains(where: { $0 == "CHANGELOG.md" }) { danger.warn("CHANGELOG Λฤू͍ͯͩ͘͠͞ɻ") } // SwiftLint ϫʔχϯάΛ֬ೝ SwiftLint.lint() // मਖ਼ྔΛ֬ೝ let additions = danger.github.pullRequest.additions ?? 0 let deletions = danger.github.pullRequest.deletions ?? 0 if additions + deletions > 1_000 { danger.warn("मਖ਼ྔ͕ଟ͗͢Ͱ͢ɻPR Λখׂ͍ͯͩ͘͘͞͠͞ɻ") } // ϦϦʔεલͷόʔδϣϯ൪߸มߋ֬ೝ import DangerSwiftHammer // package: https://github.com/el-hoshino/DangerSwiftHammer.git if danger.github.pullRequest.head.ref == "master" { let xcodeprojFileDiff = danger.hammer.diffLines(in: "Project.xcodeproj/project.pbxproj") if !xcodeprojFileDiff.additions.contains(where: { $0.contains("MARKETING_VERSION = ") }) { danger.warn("ϦϦʔεલʹόʔδϣϯ൪߸Λมߋ͍ͯͩ͘͠͞") } }
͞Βʹৄ͘͠ɿ IUUQTRJJUBDPNMPWFFJUFNTBEBFC
ࢀߟࢿྉ w IUUQTEBOHFSTZTUFNTTXJGU w IUUQTEBOHFSTZTUFNTSVCZ w IUUQTHJUIVCDPNEBOHFSTXJGU w IUUQTHJUIVCDPNFMIPTIJOP2VJDLTIB3FCMPC EFWFMPQ%BOHFSpMFTXJGU