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パイプラインを活用した文書化技...
Search
Ken’ichiro Oyama
September 28, 2021
Technology
1
710
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
analysis パッケージの仕組みの上でMulti linter with configを実現する / Go Conference 2025
k1low
1
280
Flight recorder at the application layer (NOT the FlightRecoder newly added at Go 1.25) / Fukuoka.go #22
k1low
0
96
ソフトウェア開発におけるインターフェイスという考え方 / PHPerKaigi 2025
k1low
9
5.5k
Parsing HCL/CUE / Fukuoka.go #21
k1low
0
8.9k
実践 net/http Middleware パターン / Kizuku.go Vol.1
k1low
2
350
Cleanup handling in Go / Go Conference 2024
k1low
6
3.8k
CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること / CI/CD Test Night #7
k1low
18
11k
Command-line interface tool design / PHPerKaigi 2024
k1low
8
3.4k
gostyle IS NOT Go Style / Fukuoka.go#19 Reboot
k1low
1
310
Other Decks in Technology
See All in Technology
『OCI で学ぶクラウドネイティブ 実践 × 理論ガイド』 書籍概要
oracle4engineer
PRO
2
130
Why Governance Matters: The Key to Reducing Risk Without Slowing Down
sarahjwells
0
110
「AI駆動PO」を考えてみる - 作る速さから価値のスループットへ:検査・適応で未来を開発 / AI-driven product owner. scrummat2025
yosuke_nagai
4
630
いま注目しているデータエンジニアリングの論点
ikkimiyazaki
0
610
"プロポーザルってなんか怖そう"という境界を超えてみた@TSUDOI by giftee Tech #1
shilo113
0
120
英語は話せません!それでも海外チームと信頼関係を作るため、対話を重ねた2ヶ月間のまなび
niioka_97
0
130
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
3
410
Where will it converge?
ibknadedeji
0
190
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
1.1k
社内報はAIにやらせよう / Let AI handle the company newsletter
saka2jp
7
1k
VCC 2025 Write-up
bata_24
0
180
いまさら聞けない ABテスト入門
skmr2348
1
210
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
Faster Mobile Websites
deanohume
310
31k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Six Lessons from altMBA
skipperchong
28
4k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
850
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Agile that works and the tools we love
rasmusluckow
331
21k
Designing for Performance
lara
610
69k
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!