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
64
契約テストとPactについて
bmf_san
August 10, 2024
Tweet
Share
More Decks by bmf_san
See All by bmf_san
レーダーをつくる
bmf_san
0
22
5分でわかるSLO
bmf_san
2
90
権限について考える
bmf_san
2
110
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.7k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
370
アジャイルワークショップ
bmf_san
0
150
Makuakeの認証基盤とRe-Architectureチーム
bmf_san
0
2.7k
天下一HTTPRouter武闘会.pdf
bmf_san
8
4.4k
ゆっくりHackerRank
bmf_san
0
130
Other Decks in Programming
See All in Programming
ワンバイナリWebサービスのススメ
mackee
10
7.7k
Cursor Meetup Tokyo ゲノミクスとCursor: 進化と制約のあいだ
koido
2
1k
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
330
Prism.parseで 300本以上あるエンドポイントに 接続できる権限の一覧表を作ってみた
hatsu38
1
110
ASP.NETアプリケーションのモダナイズ インフラ編
tomokusaba
1
220
Using AI Tools Around Software Development
inouehi
0
1.2k
UPDATEがシステムを複雑にする? イミュータブルデータモデルのすすめ
shimomura
1
530
C++20 射影変換
faithandbrave
0
450
Gleamという選択肢
comamoca
6
710
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
17
4.3k
SODA - FACT BOOK
sodainc
1
860
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
350
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Into the Great Unknown - MozCon
thekraken
39
1.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
RailsConf 2023
tenderlove
30
1.1k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Agile that works and the tools we love
rasmusluckow
329
21k
BBQ
matthewcrist
89
9.7k
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Α͏ͳํΛα ϙʔτ͍ͯ͠Δ΄͏͕ྑ͍Μ͡Όͳ͍ͩΖ ͏͔..
• ܖςετūŬŹƂŜŽūŘ
͓ΘΓ