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
契約テストとPactについて
Search
bmf_san
August 10, 2024
Programming
0
81
契約テストとPactについて
bmf_san
August 10, 2024
Tweet
Share
More Decks by bmf_san
See All by bmf_san
AAPについて調べてみた
bmf_san
0
45
レーダーをつくる
bmf_san
0
35
5分でわかるSLO
bmf_san
2
110
権限について考える
bmf_san
2
120
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.8k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
400
アジャイルワークショップ
bmf_san
0
160
Makuakeの認証基盤とRe-Architectureチーム
bmf_san
0
2.8k
天下一HTTPRouter武闘会.pdf
bmf_san
8
4.4k
Other Decks in Programming
See All in Programming
iOSアプリの信頼性を向上させる取り組み/ios-app-improve-reliability
shino8rayu9
0
150
2025年版 サーバーレス Web アプリケーションの作り方
hayatow
23
25k
そのpreloadは必要?見過ごされたpreloadが技術的負債として爆発した日
mugitti9
2
3k
どの様にAIエージェントと 協業すべきだったのか?
takefumiyoshii
2
600
Conquering Massive Traffic Spikes in Ruby Applications with Pitchfork
riseshia
0
150
大規模アプリのDIフレームワーク刷新戦略 ~過去最大規模の並行開発を止めずにアプリ全体に導入するまで~
mot_techtalk
0
380
止められない医療アプリ、そっと Swift 6 へ
medley
1
120
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
390
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
3.5k
プログラミングどうやる? ~テスト駆動開発から学ぶ達人の型~
a_okui
0
190
明日から始めるリファクタリング
ryounasso
0
110
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
920
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Embracing the Ebb and Flow
colly
88
4.8k
The Cult of Friendly URLs
andyhume
79
6.6k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Language of Interfaces
destraynor
162
25k
Balancing Empowerment & Direction
lara
4
680
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
How STYLIGHT went responsive
nonsquared
100
5.8k
Done Done
chrislema
185
16k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Transcript
ܖςετͱPactʹ͍ͭͯ @bmf_san
Who am Iʁ • Kenta Takeuchi • @bmf_san • bmf-san
• https://bmf-tech.com/
ƂƃţŗŴƅƃŗŦŘŷ • ʮγεςϜج൫ͷఏڙ͢ΔAPIͱͦΕΛར༻͢ΔγεςϜؒ ʹ͓͍ͯɺAPIͷ߹ੑͬͯͲ͏ͬͯอͱ͏ʁςετ͢Δ ͱͨ͠Βɾɾʁʯ • ͱ͍͏͕༙͍͙ٙͯͬ͢ΓΕͯ͠·͏ʑ͕ଓ͍ ͨ • APIઃܭʹؔ͢ΔຊΛಡΜͰͨΒܖςετʹ͍ͭͯਃ͠༁
ఔʹॻ͔Ε͍ͯͨ • ʮŠƀŦƄʯ
ࠓͷ • ܖςετͱͦͷπʔϧͰ͋ΔPactʹ͍ͭ ͯௐͯΈͨ
ܖςετͱ • ίϯγϡʔϚͱϓϩόΠμʔؒͷಈ࡞Λς ετ͢Δςετख๏ͷ͜ͱ
ίϯγϡʔϚʔ is • αʔϏεΛݺͼग़͢ଆ
ϓϩόΠμʔ is • αʔϏεΛఏڙ͢Δଆ
ܖ… ʁ • ίϯγϡʔϚʔͱϓϩόΠμʔؒͰͷ߹ҙ ༰ͷ͜ͱ • APIϦΫΤετͱظ͢ΔϨεϙϯε͜ ΕͰ͢Αʙ
ίϯγϡʔϚʔۦಈܖςετ • ίϯγϡʔϚʔ͕ܖΛൃߦ͠ɺϓϩόΠ μʔͦͷܖʹج͍ͮͯςετ͢Δ
ϓϩόΠμʔۦಈܖςετ • ϓϩόΠμʔ͕ܖΛൃߦ͠ɺίϯγϡʔ Ϛʔͦͷܖʹج͍ͮͯςετ͢Δ
Ͳ͕͍͍ͬͪͷʁ • ίϯγϡʔϚʔͷ • APIͷ҆ఆੑʢ㲈มߋසʣ • ։ൃϓϩηεͷओಋݖ • ͳͲʹґΔ
ܖςετͷϝϦοτ • αʔϏεؒͷ৴པੑɾ߹ੑΛ୲อͰ͖Δ • ίϯγϡʔϚʔ·ͨϓϩόΠμʔͷมߋΛࣗಈͰݕ Ͱ͖Δ • νʔϜؒͷίϛϡχέʔγϣϯίετ͕ݮͰ͖Δ • E2EΑΓ࣮ߦ͕͍
• αʔϏεؒͷґଘؔΛ໌֬ʹͰ͖Δ
ܖςετͷσϝϦοτ • πʔϧґଘ • πʔϧಋೖίετ • ৫Ͱͷ߹ҙܗ • ϓϩσϡʔαʔͱίϯγϡʔϚʔ͕ผνʔϜͩͱ ίετ૿
• ։ൃϑϩʔͷதͷ1ϓϩηεͱͯ͠ΈࠐΈίετ
Pactͱ • ܖςετͷͨΊͷπʔϧ • ίϯγϡʔϚʔۦಈܖςετͷΈαϙʔτ • HTTPͱϝοηʔδʢex. RabbitMQ, SQS, Kafka
ͳͲʣ • ςεςΟϯάFWϏϧυπʔϧͳͲͱ࿈ܞՄ ೳ
Pactͷϑϩʔ 1. ίϯγϡʔϚʔ͕ܖΛهड़ 2. ίϯγϡʔϚʔଆͷςετ࣮ߦ࣌ʹPact ϑΝΠϧΛੜ 3. ϓϩόΠμʔPactϑΝΠϧΛड͚औͬͯ ςετΛ࣮ߦ
͋Μ·Γྲྀߦ͍ͬͯͳ͍ɾɾʁ
Trial • Technology Radarͩͱ2015ʹTrialͰऴ Θ͍ͬͯΔ • https://www.thoughtworks.com/radar/tools/ pact-pacto
PactΛΊͨ • ΫοΫύουࣾͷࣄྫ • https://scrapbox.io/yoshiori/ Pact_%E3%82%92%E3%82%84%E3%82 %81%E3%81%9F%E7%90%86%E7%94 %B1
Pact is Dead • Pact is dead, long live Pact
• https://pact fl ow.io/blog/bi-directional- contracts/
Pactͷಋೖোน • E2Eςετ͔ΒͷΓ͑ɺ͋Δ͍Έ͚ • πʔϧґଘ • ίϯγϡʔϚʔۦಈͷΈͷӡ༻ϋʔυϧ • ίϛϡχέʔγϣϯίετຊʹݮΔ͔ʁ •
αʔϏε͕ؒܖͰີ݁߹ʹͳΔʁ • αʔϏε͕͋Δఔଟ͘ͳ͍ͱϝϦοτ͕ϖΠ͠ͳ͍͔ • ։ൃϑϩʔͷมߋίετʢܖͷཧɺϨϏϡʔ͕ඞཁʹͳΔʣ
Pact fl ow • ํܖΛαϙʔτ͍ͯ͠Δ • ίϯγϡʔϚʔۦಈͱϓϩόΠμʔۦಈͷ྆ํ • OSSͰͳ͍ •
Technology RadarͰ2022ʹTrialͰऴΘ͍ͬͯΔ • https://www.thoughtworks.com/radar/tools/pact fl ow
ॴײ • ܖςετͱ͍͏ςετख๏Λಋೖ͢Δ͜ ͱ͕༗༻͕ेͳݕূ͕ඞཁͦ͏ • πʔϧͱͯ͠Pact fl owΑ͏ͳํΛα ϙʔτ͍ͯ͠Δ΄͏͕ྑ͍Μ͡Όͳ͍ͩΖ ͏͔..
• ܖςετūŬŹƂŜŽūŘ
͓ΘΓ