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
Continuous Documentation - CI/CDパイプラインを活用した文書化技術 - / Pepabo Tech Conference #16
Search
Ken’ichiro Oyama
September 28, 2021
Technology
1
500
Continuous Documentation - CI/CDパイプラインを活用した文書化技術 - / Pepabo Tech Conference #16
https://pepabo.connpass.com/event/225504/
Ken’ichiro Oyama
September 28, 2021
Tweet
Share
More Decks by Ken’ichiro Oyama
See All by Ken’ichiro Oyama
CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること / CI/CD Test Night #7
k1low
17
4.8k
Command-line interface tool design / PHPerKaigi 2024
k1low
6
1.3k
gostyle IS NOT Go Style / Fukuoka.go#19 Reboot
k1low
1
140
Parsing case study in Go / Go Conference mini 2023 Winter IN KYOTO
k1low
2
1.1k
APIシナリオテストツールとしてのrunn / 4 API testing tools
k1low
1
930
The future of tbls and "Documentation as Code" / phpconfuk 2023
k1low
3
4.2k
net/http/httptest.Server のアプローチをテスト戦略に活用する / Go Conference 2023
k1low
9
2.5k
Win Testing Trophy Easily / テスティングトロフィーを獲得する / PHPerKaigi 2023
k1low
6
3.2k
runnによるAPIのシナリオテストの導入と自動化 / stac2022
k1low
10
3.5k
Other Decks in Technology
See All in Technology
ルーターでプレゼンする
puhitaku
1
3.2k
EM完全に理解した と思ったけど、 やっぱり何も分からなかった話 / EM Night Fukuoka #1
hirutas
0
280
DMM.com アルファ室採用案内資料
hsugita
1
220
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
600
Babylon.jsと色々なものを組み合わせる:ブラウザのAPIやガジェットや2D描画ライブラリなど / Babylon.js 勉強会 vol.3
you
PRO
0
160
エンジニア候補者向け資料2024.04.24.pdf
macloud
0
3.3k
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
3
630
Amplify 🩷 Bedrock 〜生成AI入門〜
minorun365
PRO
8
390
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験
yoshiitaka
1
280
AWS学習者向けにAzureの解説スライドを作成した話
handy
3
190
成長をサポートするピープルマネジメントのやり方
sioncojp
7
720
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
320
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
165
13k
The Power of CSS Pseudo Elements
geoffreycrofte
61
5k
Six Lessons from altMBA
skipperchong
22
3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
A Philosophy of Restraint
colly
197
16k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
13
8.3k
Designing with Data
zakiwarfel
96
4.8k
Creatively Recalculating Your Daily Design Routine
revolveconf
211
11k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Transcript
Continuous Documentation - CI/CDύΠϓϥΠϯΛ׆༻ͨ͠จॻԽٕज़ - খࢁ݈Ұ / GMO PEPABO inc.
2021.09.27 Pepabo Tech Conference #16 1
2 ࣗݾհ ٕज़෦ɹٕज़ج൫νʔϜ 2018 த్ೖࣾ খࢁ ݈Ұ Ken’ichiro Oyama গ࣮͠༻తͰখ͞ͳOSSΛॻ͘ͷ͕झຯɻ
ʢ࠷ۙྗΛೖΕ͍ͯΔOSS https://github.com/k1LoW/octocov ͱ͍͏ओʹ GitHub ActionsͰಈ͔͢ίʔυϝτϦΫεϨϙʔτج൫ʣ • GitHub : k1LoW • Twitter : @k1LoW
3 ΞδΣϯμ 1. υΩϡϝϯτͱ 2. γεςϜͱυΩϡϝϯτͷဃ 3. γεςϜͱυΩϡϝϯτͷဃΛͳ͘͢Ξϓϩʔν 4. ܧଓతυΩϡϝϯςʔγϣϯ
5. ·ͱΊ
“υΩϡϝϯτ”ͱ 4
5 υΩϡϝϯτͱ ։ൃ։࢝·ͰͷΦʔόʔϔου
υΩϡϝϯτͱ 6 ։ൃऀ͕ɺࣝθϩͷঢ়ଶ͔ΒγεςϜΛཧղ͠։ൃΛ։࢝͢Δ·Ͱͷ࣌ؒίετΛɺ ຊൃදͰʮ։ൃ։࢝·ͰͷΦʔόʔϔουʯͱݺͿʢʮΦϯϘʔσΟϯάͷίετʯͱ ͍ͬͨํ͕Ұൠత͔ʣ • ։ൃऀ͕γεςϜΛཧղ͍ͨ͠ͱ͖ • ։ൃऀ͕৽ͨʹγεςϜ։ൃʹࢀՃͨ͠ͱ͖ •
͘͠։ൃऀ͕ࣗͷ୲Ҏ֎ͷߏཁૉػೳΛཧղ͍ͨ͠ͱ͖ • γεςϜͰར༻͍ͯ͠Δٕज़ελοΫʹेͳݟ͕͋ͬͨͱͯ͠ɺ࣮։ൃ։ ࢝·Ͱʹखؒͱ͕͔͔࣌ؒΔ ։ൃ։࢝·ͰͷΦʔόʔϔου
υΩϡϝϯτͱ 7 ৽ن։ൃͷ߹ɺ࣮ࡍʹ։ൃΛ։࢝͢Δ·Ͱʹࠨ ਤʹ͋ΔΑ͏ͳෳͷϨΠϠʔʹ͍ͭͯݕ౼Λ͢ Δ • ΕΒΕ͕͕ͪͩɺ్த͔Β։ൃʹJOIN͢ Δ߹ɺ৽ن։ൃ࣌ͱಉ͡ͷϨΠϠʔ ͷཧղ͕ඞཁʹͳΔ •
ҧ͏ͷʮ͢Ͱʹ͋ΔͷΛཧղ͢Δඞཁ ͕͋Δʯͱ͍͏͜ͱ͚ͩ ͲͷΑ͏ͳαʔϏε͔ ͲͷΑ͏ͳΞʔΩςΫνϟ͔ ͲͷΑ͏ʹσʔλΛอ࣋͢Δ͔ ʢʹͲͷΑ͏ͳςʔϒϧઃܭ͔ʣ ͲͷΑ͏ͳ։ൃڥ͔ ʢຊ൪ڥɾ։ൃڥʣ ͲͷΑ͏ͳίʔυ͔ ։ൃ αʔϏεཧղϨΠϠʔ ΞʔΩςΫνϟཧղϨΠϠʔ σʔλετΞཧղϨΠϠʔ ։ൃڥཧղϨΠϠʔ ίʔυཧղϨΠϠʔ ։ൃ։࢝·ͰͷΦʔόʔϔου
8 υΩϡϝϯτͱ ։ൃऀ͕γεςϜΛཧղ͢Δ
υΩϡϝϯτͱ 9 • ৽͍͠։ൃऀγεςϜΛݟͯཧղΛ͢Δඞཁ͕͋Δ • ։ൃ։࢝·ͰͷΦʔόʔϔου͕େ͖͍ঢ়ଶ γεςϜҎ֎ʹԿͳ͍ঢ়ଶ
υΩϡϝϯτͱ 10 • γεςϜͷཧղΛॿ͚ΔͨΊυΩϡϝϯτΛॻ͘ • ৽͍͠։ൃऀυΩϡϝϯτΛ௨ͯ͡γεςϜͷཧղΛਐΊΔ͜ͱ͕Ͱ͖Δ υΩϡϝϯτͰཧղΛॿ͚Δ
υΩϡϝϯτͱ 11 • υΩϡϝϯτΛӡ༻͢Δత → ։ൃ։࢝·ͰͷΦʔόʔϔουΛݮ͢ΔͨΊ • ݮ͢ΔͨΊʹγεςϜͷཧղΛॿ͚Δ͜ͱ͕Ͱ͖ͳ͍ͱ͍͚ͳ͍ • υΩϡϝϯτ͍ͭଘࡏ͢Δ͖͔
→ ཧղͯ͠Β͍͍ͨγεςϜ͕ଘࡏ͍ͯ͠Δͱ͖ • ܧଓతʹؒҧ͍ͷͳ͍ेͳυΩϡϝϯτ͕ଘࡏ͠ଓ͚Δඞཁ͕͋Δ • ※৽ن։ൃલͷʢઃܭͳͲͷʣυΩϡϝϯτຊൃදͷείʔϓ͔Β֎͢ ຊൃදʹ͓͚Δ”υΩϡϝϯτ" ʮܧଓతʹʯʮγεςϜͷཧղΛॿ͚ΔʯυΩϡϝϯτ͕ඞཁ
γεςϜͱυΩϡϝϯτͷဃ 12
γεςϜͱυΩϡϝϯτͷဃ 13 • γεςϜͱυΩϡϝϯτͱͷؒʹ༰ͷဃ͕ൃੜ͍ͯ͠Δ߹͕͋Δ • ʮॻ͍ͯ͋Δ͜ͱ͕ؒҧ͍ͬͯΔʯঢ়ଶʢ߹ʹΑͬͯʮॻ͍ͯ͋Δ͜ͱ͕ Γͳ͍ʯʣ • ߃ৗతʹ༰ʹ͕ࠩग़͍ͯΔঢ়ଶ •
ߋ৽λΠϛϯά͕ͣΕΔ͜ͱͰγεςϜͱυΩϡϝϯτͷ༰ʹ͕ࠩग़͍ͯΔঢ়ଶ γεςϜͱυΩϡϝϯτͷဃ
γεςϜͱυΩϡϝϯτͷဃ 14 • γεςϜͱͷဃ͕͋ΔυΩϡϝϯτͰγεςϜΛཧղ͢ΔͱɺؒҧͬͨཧղͰ։ൃ ʹೖͬͯ͠·͏ • ࣮ؔ࿈͕૿͍͑ͯͯؾܰʹΓͤͳ͘ͳ͍ͬͯͨΠϯελϯε • ࣮ߟྀ͠ͳ͍ͱ͍͚ͳ͍͜ͱ͕มΘ͍ܾͬͯͨࡁػೳ •
࣮૿͍͑ͯͨόον • ։ൃऀ͕ͦͷဃʹؾͮ͘ͷ͕͚Ε͍΄Ͳ։ൃʹ͓͚ΔϚΠφε͕େ͖͘ͳΔ • γεςϜཧղͷΓͳ͓͠🔥 • ίʔυͷॻ͖͠🔥 🔥 • ؒҧͬͨཧղͷ··ϦϦʔεɺޙʹো🔥 🔥 🔥 🔥 🔥 🔥 γεςϜͱυΩϡϝϯτͷဃ͕͋Δͱ
γεςϜͱυΩϡϝϯτͷဃ 15 γεςϜͱυΩϡϝϯτͷဃΛখ͘͢͞ΔͨΊʹɺ·ͣɺγεςϜͱυΩϡϝϯτͷ ဃΛஅͰ͖ΔΈ͕ඞཁ • γεςϜͱυΩϡϝϯτͷରԠؔΛද͢Ұछͷ͕ؔඞཁ • ʮͨͩυΩϡϝϯτΛॻ͘ʯγεςϜ͕ߋ৽͞Εͨͱ͖ʹɺυΩϡϝϯτͷͲ͜Λ ߋ৽͢Εྑ͍ͷ͔͕Θ͔Γʹ͍͘ˠͭ·Γ͕ؔͳ͍ঢ়ଶ ͦͯ͠ɺဃ͕͋ΔظؒΛͰ͖Δ͚ͩখ͘͢͞ΔͨΊʹ
• ܧଓతʹ • Ͱ͖Δ͚ͩγεςϜͷߋ৽ʹ͍ۙλΠϛϯάͰ υΩϡϝϯτΛγεςϜʹ߹Θͤͯߋ৽͠ଓ͚Δ͜ͱ͕ඞཁ γεςϜͱυΩϡϝϯτͷဃΛখ͘͢͞Δʹ
γεςϜͱυΩϡϝϯτͷဃ 16 γεςϜͱυΩϡϝϯτͷဃʹ͍ͭͯɺू߹Λ༻͍ͯϞσϧԽ͢ΔࢼΈ γεςϜͱυΩϡϝϯτͷဃͷϞσϧԽ https://speakerdeck.com/k1low/web-system-architecture-number-8
γεςϜͱυΩϡϝϯτͷ ဃΛͳ͘͢Ξϓϩʔν 17
18 γεςϜͱυΩϡϝϯτͷဃΛͳ͘͢Ξϓϩʔν γεςϜ͔ΒߏԽσʔλΛநग़ͯ͠ υΩϡϝϯτੜΛ͢Δ
γεςϜͱυΩϡϝϯτͷဃΛͳ͘͢Ξϓϩʔν 19 • JavadocɺgodocɺPHPDoc etc • γεςϜ͔ΒυΩϡϝϯτΛੜ͢Δ ͜ͱͰɺγεςϜͱυΩϡϝϯτͷဃ Λͳͦ͘͏ͱ͍ͯ͠Δ γεςϜ͔ΒߏԽσʔλΛநग़͢Δ
υΩϡϝϯτ ߏԽσʔλ γεςϜ
γεςϜͱυΩϡϝϯτͷဃΛͳ͘͢Ξϓϩʔν 20 • ຊൃදʹ͓͚ΔʮΞϊςʔγϣϯʯͱɺʮγεςϜʹର͢Δ։ൃऀͷཧղɾΠϝʔ δΛߏԽσʔλʹϝλใͱͯ͠Ճ͢Δʯͱ͍͏ҙຯ • PHPDocͳͲͰɺίϝϯτΛιʔείʔυʹ • ιʔείʔυͷʮߏʹԊͬͨܗͰʯ •
͔ͭʮܾΊΒΕͨϑΥʔϚοτʹैͬͯʯ Ճ͢Δ͜ͱͰɺॳΊͯ࠷ऴతͳυΩϡϝϯτʹө͞ΕΔ→Ξϊςʔγϣϯ ্هҎ֎ͷίϝϯτυΩϡϝϯτ͔Βແࢹ͞ΕΔ→ΞϊςʔγϣϯͰͳ͍ Ξϊςʔγϣϯ
21 γεςϜͱυΩϡϝϯτͷဃΛͳ͘͢Ξϓϩʔν ߏԽσʔλ͔Β γεςϜͱυΩϡϝϯτͷ྆ํΛੜ͢Δ
γεςϜͱυΩϡϝϯτͷဃΛͳ͘͢Ξϓϩʔν 22 • OpenAPI • ੜݩσʔλΛ1ͭʹ͢Δ͜ͱͰγε ςϜͱυΩϡϝϯτͷဃΛͳͦ͘͏ ͱ͍ͯ͠Δ ߏԽσʔλ͔ΒγεςϜͱυΩϡϝϯτͷ྆ํΛੜ͢Δ υΩϡϝϯτ
ߏԽσʔλ γεςϜ
γεςϜͱυΩϡϝϯτͷဃΛͳ͘͢Ξϓϩʔν 23 • 2ͭͷྫͷڞ௨ͱͯ͠ɺγεςϜͱυΩϡϝϯτͷؒʹߏԽσʔλΛհͨؔ͠࿈ Λ͍࣋ͬͯΔ͜ͱ͕Θ͔Δɻ • γεςϜͱυΩϡϝϯτͷରԠؔΛද͢Ұछͷؔʹͳ͍ͬͯΔ 2ͭͷΞϓϩʔνͷڞ௨
γεςϜͱυΩϡϝϯτͷဃΛͳ͘͢Ξϓϩʔν 24 • γεςϜͱυΩϡϝϯτͷဃΛͳͨ͘͢ΊʹɺγεςϜͷมԽͱ࿈ಈ͍ͯ͠ΔߏԽ σʔλΛυΩϡϝϯτੜʹ׆༻͢Δ • ʮγεςϜ͔ΒߏԽσʔλΛநग़͢ΔʯʮߏԽσʔλ͔ΒγεςϜΛ࡞ΔʯͲͪ ΒͰྑ͍ • ιʔείʔυɺIaCͷίʔυͱ͍ͬͨίʔυ͚ͩͰͳ͘ɺࢄτϨʔγϯάService
DiscoveryɺService Mapͱ͍ͬͨΈͰಘΒΕͨάϥϑγεςϜͷมԽͱ࿈ಈͨ͠ߏ Խσʔλͱݴ͑Δ • ߏԽσʔλ͔ΒυΩϡϝϯτͷܗΛੜ͠ɺΞϊςʔγϣϯʹγεςϜͷཧղʹඞཁ ͳઆ໌Λ݀ຒΊ͍ͯ͘͠Πϝʔδ • ॏཁͳͷΞϊςʔγϣϯͷ݀ຒΊ·Ͱͯ͠ॳΊͯγεςϜͷཧղΛॿ͚ΔυΩϡϝ ϯτʹͳΔͱ͍͏͜ͱ ߏԽσʔλΛ׆༻ͨ͠υΩϡϝϯςʔγϣϯ
ܧଓతυΩϡϝϯςʔγϣϯ 25
ܧଓతυΩϡϝϯςʔγϣϯ 26 • γεςϜͱυΩϡϝϯτͷؒʹߏԽσʔλΛհͨؔ͠࿈Λ࣋ͨͤΔ͜ͱͰ྆ऀͷ ဃΛͳ͘͢ख๏ʢʹπʔϧʣΛಘΔ͜ͱ͕Ͱ͖ͨ • ͦͷπʔϧΛ࣮ߦ͢Δͷ͕ɺৗʹ։ൃऀʹਓͰ͋Δͱʮ࣮ߦΕʯ͕ൃੜͯ͠͠· ͏ • ΞϓϦέʔγϣϯͱಉ༷ʹɺCI/CDͷΈΛ׆༻͢Δɻ
• ηΩϡϦςΟʹ͓͚ΔDevSecOpsηΩϡϦςΟγϑτϨϑτɺDeveloper- First Securityͱಉ͡ ୭͕υΩϡϝϯςʔγϣϯπʔϧΛ࣮ߦ͢Δͷ͔ υΩϡϝϯτܧଓతʹσϦόϦ͢Δ
27 ܧଓతυΩϡϝϯςʔγϣϯ GMOϖύϘʹ͓͚Δ ܧଓతυΩϡϝϯςʔγϣϯ
ܧଓతυΩϡϝϯςʔγϣϯ 28 σʔλϕʔεεΩʔϚͷ υΩϡϝϯςʔγϣϯ
ܧଓతυΩϡϝϯςʔγϣϯ 29
ܧଓతυΩϡϝϯςʔγϣϯ 30 • CIϑϨϯυϦͳσʔλϕʔευΩϡϝϯτੜ πʔϧ • https://github.com/k1LoW/tbls • PostgreSQL, MySQLͳͲͷRDBMS͚ͩͰ
ͳ͘ɺBigQueryAmazon DynamoDB, Cloud Spannerͱ͍ͬͨσʔλιʔεʹ ରԠ • υΩϡϝϯτΛॆ࣮ͤ͞Δػೳͱͯ͠ϝλ σʔλΛΞϊςʔγϣϯ͢Δ͜ͱ͕Մೳ • ςʔϒϧɺΧϥϜͳͲͷίϝϯτ༩͚ͩ Ͱͳ͘λάɺϦϨʔγϣϯͳͲ tbls
ܧଓతυΩϡϝϯςʔγϣϯ 31 • ैདྷσʔλϕʔεͱυΩϡϝϯτ ผͰཧ • CI্Ͱςετ༻σʔλϕʔε͔Β ςʔϒϧఆٛΛߏԽσʔλͱͯ͠ந ग़ɻͦΕʹՃͰςʔϒϧίϝϯτ ΧϥϜίϝϯτΛΞϊςʔγϣϯ͠ɺ
υΩϡϝϯτΛੜ tbls
ܧଓతυΩϡϝϯςʔγϣϯ 32 ΠϯϑϥΞʔΩςΫνϟͷ υΩϡϝϯςʔγϣϯ
ܧଓతυΩϡϝϯςʔγϣϯ 33 ndiag
ܧଓతυΩϡϝϯςʔγϣϯ 34 • https://github.com/k1LoW/ndiag • ओʹΠϯϑϥͷϋΠϨϕϧΞʔΩςΫ νϟͷυΩϡϝϯτΛੜ͢ΔతͰ։ ൃ • YAML͔ΒʮߏਤΛੜ͢ΔʯͰ
ʮυΩϡϝϯτΛੜ͢ΔʯͰͳ͘ ʮෳͷΓޱͰߏਤΛؚΉΩϡϝϯ τͷܗΛ࡞Δʯͱ͍͏ಛΛ࣋ͭ • ֤ߏཁૉάϧʔϓʹΞϊςʔγϣϯ Λॻ͘͜ͱͰυΩϡϝϯτͱཱͯ͠͞ ͤΔ ndiag
ܧଓతυΩϡϝϯςʔγϣϯ 35 • γεςϜͱυΩϡϝϯτͷؔ࿈෦ ʮߏԽσʔλΛநग़͢ΔʯͰͳ ͘ɺൺֱػೳ·Ͱ • ୯७ʹɺରͱ͍ͯ͠ΔγεςϜ ͕ඇৗʹෳࡶͰ͔ͭଟذʹΘͨ ΔͨΊ
• વndiagͷೖྗYAMLͳͷͰɺγε ςϜ͔ΒใΛߏԽσʔλΛநग़͢ ΔεΫϦϓτ͕࡞ΕΕɺͦΕΛ ndiagͷೖྗʹ͢Δ͜ͱ͕Մೳ ndiag
·ͱΊ 36
·ͱΊ 37 • ։ൃ։࢝·ͰͷΦʔόʔϔουͷݮͷͨΊʹʮܧଓతʹʯʮγεςϜͷཧղΛ ॿ͚ΔʯυΩϡϝϯτ͕ඞཁ • ʮܧଓతʹɺؒҧ͍ͷͳ͍ेͳυΩϡϝϯτΛଘࡏ͠ଓ͚ͤ͞Δʯͱʮγες Ϝ͕มԽͯ͠γεςϜͱυΩϡϝϯτͷဃΛେ͖͘͠ͳ͍ʯͱ͍͏͜ͱ • γεςϜͷมԽͱ࿈ಈͨ͠ߏԽσʔλΛͬͯυΩϡϝϯτͷܗΛੜ͢Δ͜
ͱͰɺγεςϜͷมԽ͕υΩϡϝϯτʹө͞ΕΔΈΛߏஙͰ͖Δ • ্هͷΈΛιϑτΣΞʹΑΓࣗಈԽɺ͞ΒʹCI/CDͷΈʹࡌͤΔ͜ͱͰɺ γεςϜͱυΩϡϝϯτͷဃΛݶΓͳ͘ܧଓతʹখ͘͞อͭ͜ͱ͕ՄೳʹͳΔ ·ͱΊ
·ͱΊ 38 • γεςϜͷมԽͱ࿈ಈͨ͠ߏԽσʔλΛͬͯυΩϡϝϯτͷܗγεςϜͷมԽʹ ै͢ΔΑ͏ʹͳͬͨɻ • ݱঢ়ɺͦΕΒʹ༩͢ΔΞϊςʔγϣϯʢ։ൃऀ͕ॻ͘આ໌จষʣΛͲ͏ܧଓతʹॻ͍ͯ Β͏͔͕՝ • ΞϓϦέʔγϣϯͷιʔείʔυͱಉ͡Α͏ͳΞϓϩʔνͱͯ͠ɺΧόϨοδͷܭଌ
ΧόϨοδύʔηϯςʔδʹΑͬͯCIΛFailͤ͞ΔΈͳͲ͕ߟ͑ΒΕΔ • tblsndiagυΩϡϝϯτͷΧόϨοδܭଌͰ͖ΔΑ͏ʹͳ͍ͬͯΔ • ΑΓϞνϕʔγϣϯΛͬͯॻ͍ͯΒ͏ΈɺΑΓॻ͖͘͢ͳΔΈߟ͑ͯ ͍͖͍ͨ • ࠶ܝ: ηΩϡϦςΟʹ͓͚ΔDevSecOpsηΩϡϦςΟγϑτϨϑτɺ Developer-First Securityͱಉ͡ ࠓޙͷ՝
39 Thank You! Thank You!