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
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automa...
Search
Takuto Wada
PRO
December 20, 2024
Technology
15k
37
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
2024年12月20日
ソフトウェアテストシンポジウム 2024 東海
#jassttokai24
Takuto Wada
PRO
December 20, 2024
More Decks by Takuto Wada
See All by Takuto Wada
2026年のソフトウェア開発を考える(2026/05版) / Software Engineering Scrum Fest Niigata 2026 Edition
twada
PRO
27
18k
予防に勝る防御なし(2025年版) - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHP Conference Fukuoka 2025
twada
PRO
51
36k
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
46
44k
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
192
130k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
The Clean ArchitectureがWebフロントエンドでしっくりこないのは何故か / Why The Clean Architecture does not fit with Web Frontend
twada
PRO
88
53k
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
3.9k
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
15
7.9k
これまでと違う学び方をしたら挫折せずにRustを学べた話 / Programming Rust techramen24conf LT
twada
PRO
36
33k
Other Decks in Technology
See All in Technology
脱金融のフューチャー・デザイン / Future Design Beyond Finance
ks91
PRO
0
150
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
160
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.1k
ZOZOTOWNの進化と信頼性を両立する負荷試験
zozotech
PRO
2
160
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
210
Kaggleで成長するために意識したこと
prgckwb
2
310
環境凍結という Toil を倒す -セルフサービス型 Ephemeral テスト環境の 設計と実践
shirouz
1
2.3k
インフラ寄りSREでも 開発に踏み出せる〜境界を越えてユーザー体験に向き合いたい〜
sansantech
PRO
2
3.7k
Road to SRE NEXTの今までとこれから
hiroyaonoe
0
310
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
500
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
2
200
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
5.3k
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
9.6k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
590
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Making the Leap to Tech Lead
cromwellryan
135
10k
Faster Mobile Websites
deanohume
310
32k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The browser strikes back
jonoalderson
0
1.4k
How to Talk to Developers About Accessibility
jct
2
340
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Transcript
৫ʹࣗಈςετΛॻ͘ จԽΛ͔ࠜͤΔઓུ ʢౙ൛ʣ 5BLVUP8"%" %FD !+B4455PLBJ !U@XBEB !UXBEB 📷🙆 🙆
!UXBEB JEUXBEB KBTTUUPLBJ rev.1
͔ΒΞοϓσʔτΛॏͶ͖ͯͨߨԋͷ࠷৽൛Ͱ͢ IUUQTTQFBLFSEFDLDPNUXBEB
ιϑτΣΞੈքΛ ҿΈࠐΜͩ 03/92
લఏ*5ࣄۀͷίΞʹͳͬͨ IUUQTXXXFWBOHFMJTNKQSFTPVSDFTCVTJOFTTXJUIJU
IUUQTOPUFDPNNJ[@LVTIJEBOOBEBD 1.#0,ୈ൛ͷେվగ༧ଌܕ͔ΒదԠܕ
ܾΊΒΕͨͷΛ ܾΊΒΕͨͱ͖·Ͱʹ ഁͳ͘࡞Δ ͩΕ͕͑Θ͔Βͳ͍ͷΛ ࡧ͠ͳ͕Β࡞Γଓ͚Δ ͔͕͑͠ࠁʑͱมΘ͍ͬͯ͘ ༧ଌܕ͔ΒదԠܕ
Θ͔Βͳ͍ͳΓʹΓΑ͏͋Δ
IUUQTXXXTMJEFTIBSFOFUBUTOBLBEBTT ܦ#1தా͞ΜͷϨϙʔτ
IUUQTXXXTMJEFTIBSFOFUBUTOBLBEBTT ମݧͨ͜͠ͱͷͳ͍αʔϏεΛ࡞Δํ๏
IUUQTXXXTMJEFTIBSFOFUBUTOBLBEBTT ϦϦʔεͨ͠ʮඞͣؒҧ͍ͬͯΔʯ
IUUQCMPHTJUNFEJBDPKQIJSBOBCFMFBOTUBSUVQJOUSPEVDUJPOJOKBQBOFTFIUNM ϦʔϯελʔτΞοϓ
IUUQTUFDICMPHUBCFMPHDPNFOUSZEFWFMPQFSQSPEVDUJWJUZJO ۀͷੜ࢈࣭ཧ͔ΒΞδϟΠϧ։ൃͷ։ൃੜ࢈ੑͷྲྀΕ
ιϑτΣΞͷ։ൃྗͱاۀͷۀʹ ҼՌ͕ؔ͋Δ͜ͱ͕ ౷ܭతʹ༗ҙͳܗͰཱূ͞Εͨ 13/92
ॻ੶ʰ-FBOͱ%FW0QTͷՊֶʱ IUUQTXXXBNB[PODPKQEQ
৫ͷύϑΥʔϚϯεͷଌఆࢦඪऩӹੑɺࢢ༗ɺੜ࢈ੑͷͭ ͜ΕΒͭաڈͷௐࠪݚڀ<8JEFOFS>ͰෳճʹΘͨΓ༗ޮੑཱ͕ূ͞Εͯ ͓Γɺࢿརӹ 30* ͱͷߴ͍૬͕ؔ͋ΓɺܠؾͷӨڹΛड͚ͳ͍ ͜͜ͷੳͰɺϋΠύϑΥʔϚʔͷύϑΥʔϚϯεͷଌఆ݁Ռ͕ϩʔύϑΥʔϚ ʔͷͦΕΛ্ճΔʹ͋Γɺ྆ࣾͷରൺҰ؏ͯ͠ഒΛ͍͑ͯΔ ͜ΕʹΑΓɺ৫ͷιϑτΣΞσϦόϦͷέΠύϏϦςΟ ೳྗɺػೳ ɺ
৫ʹڝ૪্ͷ༏ҐੑΛͨΒ͢͜ͱཱ͕ূ͞Εͨ ιϑτΣΞσϦόϦͷೳྗɺ৫ʹڝ૪্ͷ༏ҐੑΛͨΒ͢͜ͱཱ͕ূ͞Εͨ ʰ-FBOͱ%FW0QTͷՊֶʱQ IUUQTXXXBNB[PODPKQEQ
ͭͷΩʔϝτϦΫε wϦʔυλΠϜ wσϓϩΠස w.553 ฏۉम෮࣌ؒ wมߋࣦഊ IUUQTXXXBNB[PODPKQEQ
ϦʔυλΠϜͱσϓϩΠසԾઆݕূϓϩηεΛਝʹճ͢ IUUQJLFZIBUFCMPKQFOUSZ
.553.FBOUJNFUP3FDPWFSZ3FQBJS IUUQTXXXTMJEFTIBSFOFUEFDPEFEPTSFTJUFSFMJBCJMJUZFOHJOFFSJOHJOB[VSFPOB[VSF Ұ෦վม ͜ͷฏۉ͕.553
IUUQTEPSBEFWQVCMJDBUJPOT 5IF4UBUFPG%FW0QT3FQPSUT
IUUQTEPSBEFWSFTFBSDIEPSBSFQPSU 2019
ΤϦʔτ ϋΠύϑΥʔϚʔ ϛσΟΞϜ ύϑΥʔϚʔ ϩʔύϑΥʔϚʔ ϦʔυλΠϜ ະຬ ͔Βिؒ ि͔ؒΒϱ݄ ϱ݄͔Β
σϓϩΠස ΦϯσϚϯυ ෳճ ճ͔Βिճ िճ͔Β݄ճ ݄ճ͔Βʹճ .553 ࣌ؒະຬ ະຬ ະຬ ि͔ؒΒϱ݄ มߋࣦഊ ߏൺ ͭͷΩʔϝτϦΫεͷௐࠪʢສઍ݅Ҏ্ͷճΛΫϥελʔੳʣ w։ൃͱ࣭τϨʔυΦϑͷؔͰͳ͍ IUUQTEPSBEFWSFTFBSDIEPSBSFQPSU 2019
ΤϦʔτ ΤϦʔτͱϩʔύϑΥʔϚʔͷࠩ ϩʔύϑΥʔϚʔ ϦʔυλΠϜ ະຬ ഒ ϱ݄͔Β σϓϩΠස ΦϯσϚϯυ ෳճ
ഒ ݄ճ͔Βʹճ .553 ࣌ؒະຬ ഒ ि͔ؒΒϱ݄ มߋࣦഊ ഒ ͭͷΩʔϝτϦΫεͷௐࠪʹ͓͚ΔΤϦʔτΫϥελͱϩʔύϑΥʔϚʔΫϥελͷࠩ w৫ؒͷ͔ࠩͳΓେ͖͘ɺ͞Βʹ։͍͍ͯΔʢʣ wѹతͳࠩܧଓతσϦόϦ%FW0QTͷ৫తͳࢿͷࠩ IUUQTEPSBEFWSFTFBSDIEPSBSFQPSU 2019
IUUQTEPSBEFWSFTFBSDIEPSBSFQPSU 2021
ΤϦʔτ ϋΠύϑΥʔϚʔ ϛσΟΞϜ ύϑΥʔϚʔ ϩʔύϑΥʔϚʔ ϦʔυλΠϜ ࣌ؒະຬ ͔Βिؒ ϱ݄͔Β Ҏ্
σϓϩΠස ΦϯσϚϯυ ෳճ िճ͔Β݄ճ ݄ճ͔Βʹճ ʹճະຬ .553 ࣌ؒະຬ ະຬ ͔Βिؒ Ҏ্ มߋࣦഊ ߏൺ ͭͷΩʔϝτϦΫεͷௐࠪʢສઍ݅Ҏ্ͷճΛΫϥελʔੳʣ IUUQTEPSBEFWSFTFBSDIEPSBSFQPSU 2021 w։ൃͱ࣭τϨʔυΦϑͷؔͰͳ͍
w৫ؒͷ͔ࠩͳΓେ͖͘ɺ͞Βʹ։͍͍ͯΔʢʣ wѹతͳࠩܧଓతσϦόϦ%FW0QTͷ৫తͳࢿͷࠩ ΤϦʔτ ΤϦʔτͱϩʔύϑΥʔϚʔͷࠩ ϩʔύϑΥʔϚʔ ϦʔυλΠϜ ࣌ؒະຬ ഒ Ҏ্ σϓϩΠස
ΦϯσϚϯυ ෳճ ഒ ʹճະຬ .553 ࣌ؒະຬ ഒ Ҏ্ มߋࣦഊ ഒ ͭͷΩʔϝτϦΫεͷௐࠪʹ͓͚ΔΤϦʔτΫϥελͱϩʔύϑΥʔϚʔΫϥελͷࠩ IUUQTEPSBEFWSFTFBSDIEPSBSFQPSU 2021
IUUQTDMPVEHPPHMFDPNSFTPVSDFTEFWPQTTUBUFPGEFWPQT IMKB 2024
ΤϦʔτ ϋΠύϑΥʔϚʔ ϛσΟΞϜ ύϑΥʔϚʔ ϩʔύϑΥʔϚʔ ϦʔυλΠϜ ະຬ ͔Βिؒ ि͔ؒΒϱ݄ ϱ݄͔Β
σϓϩΠස ΦϯσϚϯυ ෳճ ճ͔Βिճ िճ͔Β݄ճ ݄ճ͔Βʹճ .553 ࣌ؒະຬ ະຬ ະຬ ि͔ؒΒϲ݄ มߋࣦഊ ߏൺ ͭͷΩʔϝτϦΫεͷௐࠪʢສઍ݅Ҏ্ͷճΛΫϥελʔੳʣ IUUQTDMPVEHPPHMFDPNSFTPVSDFTEFWPQTTUBUFPGEFWPQT IMKB 2024 w։ൃͱ࣭τϨʔυΦϑͷؔͰͳ͍
w৫ؒͷࠩҾ͖ଓ͖େ͖͍ wѹతͳࠩܧଓతσϦόϦ%FW0QTͷ৫తͳࢿͷࠩ ΤϦʔτ ΤϦʔτͱϩʔύϑΥʔϚʔͷࠩ ϩʔύϑΥʔϚʔ ϦʔυλΠϜ ະຬ ഒ ϱ݄͔Β σϓϩΠස
ΦϯσϚϯυ ෳճ ഒ ݄ճ͔Βʹճ .553 ࣌ؒະຬ ഒ ि͔ؒΒϲ݄ มߋࣦഊ ഒ ͭͷΩʔϝτϦΫεͷௐࠪʹ͓͚ΔΤϦʔτΫϥελͱϩʔύϑΥʔϚʔΫϥελͷࠩ IUUQTDMPVEHPPHMFDPNSFTPVSDFTEFWPQTTUBUFPGEFWPQT IMKB 2024
ͭΊͷΩʔϝτϦΫε3FMJBCJMJUZ
Ͱ͏ͪͷʢձࣾcۀcιϑτΣΞʣ ಛघ͔ͩΒʜʜ 30/92
IUUQTXXXBNB[PODPKQEQ ʰ-FBOͱ%FW0QTͷՊֶʱQQ γεςϜͷλΠϓͱύϑΥʔϚϯεʹ૬͕ؔͳ͍
զʑύοέʔδιϑτΣΞɺ4P3ɺΈࠐΈιϑτΣΞΛ͍ͬͯΔνʔϜ ύϑΥʔϚϯε͕͘ɺ4P&৽छͷγεςϜΛ͍ͬͯΔνʔϜύϑΥʔϚ ϯε͕ߴ͍ͱ༧ଌ͍͔ͯͨ͠ΒͰ͋Δɻͦͯͦ͠ͷ༧ଌ͕֎Ε͍ͯͨ͜ͱΛཱূ͢ Δσʔλ͕ಘΒΕͨɻ ͜ΕʹΑͬͯɺΞʔΩςΫνϟͷ࣮ͷৄࡉΑΓ ʢ͜ͷ͋ͱઆ໌͢Δ̎ͭͷʣΞʔΩςΫνϟ͕࣋ͭಛੑʹ ͢Δ͜ͱͷॏཁੑ͕ු͖ூΓʹͳͬͨɻ γεςϜͷλΠϓͱύϑΥʔϚϯεʹ૬͕ؔͳ͍ IUUQTXXXBNB[PODPKQEQ ʰ-FBOͱ%FW0QTͷՊֶʱQ
ΞʔΩςΫνϟͷಛੑͷதʹେ͖ͳӨڹΛٴ΅͠͏Δͷ͕ͭ͋Δɻզʑͷௐ ࠪͰɺ࣍ͷͭͷࣄ߲ʹʮಉҙͰ͖Δʯͱճͨ͠৫Ͱ͋ΕϋΠύϑΥʔϚʔ Ͱ͋ΔՄೳੑ͕ߴ͍ɺͱ͍͏݁Ռ͕ग़ͨͷͰ͋Δɻ wςετͷେΛɺ౷߹ڥΛඞཁͱͤͣʹ࣮ࢪͰ͖Δ wΞϓϦέʔγϣϯΛɺͦΕ͕ґଘ͢ΔଞͷΞϓϦέʔγϣϯαʔϏε͔Β ಠཱͨ͠ܗͰɺσϓϩΠ·ͨϦϦʔεͰ͖Δ ΞʔΩςΫνϟʹؔΘΔ͜ͷͭͷಛੑΛɺզʑʮςετ༰қੑʯͱ ʮσϓϩΠ༰қੑʯͱݺΜͰ͍Δ͕ɺ͜ͷ͕ͭύϑΥʔϚϯεΛ ্ͤ͞Δ্ͰॏཁͩͱࢥΘΕΔɻ ςετ༰қੑͱσϓϩΠ༰қੑʢσϓϩΠಠཱੑʣ
IUUQTXXXBNB[PODPKQEQ ʰ-FBOͱ%FW0QTͷՊֶʱQ
IUUQTMPHNJKQUFDIBSUJDMFT ྫςεϥͷมߋසͱΞʔΩςΫνϟ
IUUQTMPHNJKQUFDIBSUJDMFT ྫςεϥͷมߋසͱΞʔΩςΫνϟ
IUUQTMPHNJKQUFDIBSUJDMFT ྫςεϥͷมߋසͱΞʔΩςΫνϟ
ݫ͍͠ݱ࣮ 37/92
ϩʔύϑΥʔϚʔͱͳΔ͕ڧ͍ͷɺ࣍ͷΑ͏ʹճ ͨ͠νʔϜͰ͋ͬͨ w ʮߏஙதͷιϑτΣΞ ͋Δ͍ར༻͢Δඞཁ ͷ͋ΔҰ܈ͷαʔϏε ɺଞࣾ ֎ઌͳͲ ͕։ ൃͨ͠ΧελϜιϑτΣΞͰ͋Δʯ
ݫ͍͠ݱ࣮ IUUQTXXXBNB[PODPKQEQ ʰ-FBOͱ%FW0QTͷՊֶʱQ
ʮιϑτΣΞσϦόϦͷύϑΥʔϚϯε৫શମͷ ۀʹॏཁͳӨڹΛٴ΅͢ʯͱ͍͏ࣄ࣮ɺࣗ৫ͷࣄ ۀʹͱͬͯઓ্ུॏཁͳιϑτΣΞͷ։ൃೳྗΛࣗ ৫ͷத֩తཁૉͱͯ͠Ґஔ͚ͣʹ֎෦ҕୗ͢Δ͜ͱ ͷڧྗͳূͱͳΔɻ ݫ͍͠ݱ࣮ IUUQTXXXBNB[PODPKQEQ ʰ-FBOͱ%FW0QTͷՊֶʱQ
ࠩผԽͷ߹͍ͱۀϩδοΫͷෳࡶ͞ʹΑΔۀྖҬͷྨ IUUQTXXXPSFJMMZDPKQCPPLT
ࠩผԽͷ߹͍ͱۀϩδοΫͷෳࡶ͞ʹΑΔۀྖҬͷྨ IUUQTXXXPSFJMMZDPKQCPPLT ύοέʔδ 4BT4ར༻ ֎෦ҕୗ "*׆༻ ֎෦ҕୗ "*׆༻
ΞδϦςΟͱมߋ༰қੑ
IUUQTXXXTMJEFTIBSFOFUBUTOBLBEBTT ϓϩάϥϛϯάΛΔͱ͍͏͜ͱ
"*ͱͷڠۀͱαϯυΠονϫʔΫϑϩʔΛཧղ͢Δ
ςετࣗಈԽͱ اۀͷۀͷҼՌؔ 45/92
ςετࣗಈԽͱاۀͷۀͷҼՌؔ IUUQTXXXBNB[PODPKQEQ ςετͷࣗಈԽʹ͓͍ͯɺ*5ύϑΥʔϚϯεͷ༧ଌईͱͳΓ͏Δ ͜ͱ͕໌ͨ͠ͷ࣍ͷͭ ৴པੑͷߴ͍ࣗಈςετΛඋ͑Δ͜ͱ ։ൃऀओମͰड͚ೖΕςετΛ࡞ɾཧ͠ɺ खݩͷ։ൃڥͰ؆୯ʹ࠶ݱɾमਖ਼Ͱ͖Δ͜ͱ ʰ-FBOͱ%FW0QTͷՊֶʱQʢ˞༁ΛҰ෦มߋʣ
ςετࣗಈԽͱاۀͷۀͷҼՌؔ IUUQTXXXBNB[PODPKQEQ ςετͷࣗಈԽʹ͓͍ͯɺ*5ύϑΥʔϚϯεͷ༧ଌईͱͳΓ͏Δ ͜ͱ͕໌ͨ͠ͷ࣍ͷͭ ৴པੑͷߴ͍ࣗಈςετΛඋ͑Δ͜ͱ ։ൃऀओମͰड͚ೖΕςετΛ࡞ɾཧ͠ɺ खݩͷ։ൃڥͰ؆୯ʹ࠶ݱɾमਖ਼Ͱ͖Δ͜ͱ ʰ-FBOͱ%FW0QTͷՊֶʱQʢ˞༁ΛҰ෦มߋʣ
IUUQTXXXBNB[PODPKQEQ ςετʹ߹֨ͨ͠ιϑτΣΞͰ͋ΕϦϦʔεՄೳɺෆ߹֨Ͱ͋Εॏେͳ ෆ۩߹͕͋ΔɺͱνʔϜ͕֬৴Ͱ͖ΔΑ͏ͳςετΛ࣮ࢪ͍ͯ͠Δ͜ͱ ޡݕʢِཅੑGBMTFQPTJUJWFʣݟಀ͠ʢِӄੑGBMTFOFHBUJWFʣ͕ଟ ͘ɺ৴པੑʹ͚ܽΔςετεΠʔτ͕͋·Γʹଟ͗͢Δ ৴པͷߴ͍ςετεΠʔτΛ࡞Γ্͛ΔܧଓతͳྗͱࢿՁ͕͋Δ ʰ-FBOͱ%FW0QTͷՊֶʱQʢ˞༁ΛҰ෦มߋʣ ৴པੑͷߴ͍ࣗಈςετΛඋ͑Δ͜ͱ
ޭͱࣦഊɺِཅੑͱِӄੑ IUUQTHJIZPKQEFWTFSJBMTBWBOOBMFUUFS Օॴͷಛఆͱम෮ σϓϩΠɺϚʔδ σϓϩΠɺϚʔδ Օॴͷಛఆͱम෮
৴པෆೳੑʢ fl BLJOFTTʣ͕ʹۙ͢ΔͱɺςετՁΛࣦ͍࢝ΊΔ IUUQTXXXPSFJMMZDPKQCPPLT ʰ(PPHMFͷιϑτΣΞΤϯδχΞϦϯάʱQ
ςετࣗಈԽͱاۀͷۀͷҼՌؔ IUUQTXXXBNB[PODPKQEQ ςετͷࣗಈԽʹ͓͍ͯɺ*5ύϑΥʔϚϯεͷ༧ଌईͱͳΓ͏Δ ͜ͱ͕໌ͨ͠ͷ࣍ͷͭ ৴པੑͷߴ͍ࣗಈςετΛඋ͑Δ͜ͱ ։ൃऀओମͰड͚ೖΕςετΛ࡞ɾཧ͠ɺ खݩͷ։ൃڥͰ؆୯ʹ࠶ݱɾमਖ਼Ͱ͖Δ͜ͱ ʰ-FBOͱ%FW0QTͷՊֶʱQʢ˞༁ΛҰ෦มߋʣ
զʑͷੳ݁ՌͷதͰڵຯਂ͍ͷʮओͱͯ͠ 2"νʔϜ͔֎ઌ͕࡞ɾཧ͍ͯ͠Δࣗಈςε τɺ*5ύϑΥʔϚϯεͱ૬ؔؔʹͳ͍ʯͱ͍͏ Ͱ͋Δ IUUQTXXXBNB[PODPKQEQ ʰ-FBOͱ%FW0QTͷՊֶʱQ ݫ͍͠ݱ࣮
IUUQTXXX fl JDLSDPNQIPUPTPLJOBXBTPCB Ξϯνύλʔϯങ͖ͬͯͨࣗಈςετ ࣗಈςετͷྔΛ૿ͨ͢Ίʹ֎෦ҕୗΦϑγϣΞϦϯάͳͲΛ׆ ༻͢ΔࣄྫΛ༷ʑͳݱͰݟ͖ͯ·͕ͨ͠ɺ΄ͱΜͲͷࣄྫʹ͓͍ͯɺ ೲೖޙͷςετίʔυϓϩμΫτͷ༷มߋͷࡍʹϝϯςφϯε͞Ε ͣɺςετ͕ࣦഊ͢Δ··ͰٺͪՌ͍͖ͯͯ·͢ɻςετίʔυΛॻ͘ ೳྗΛҭͯͳ͚ΕϝϯςφϯεͰ͖·ͤΜ
ςετϐϥϛουͱΞΠεΫϦʔϜίʔϯΞϯνύλʔϯ IUUQTXBUJSNFMPOCMPHJOUSPEVDJOHUIFTPGUXBSFUFTUJOHJDFDSFBNDPOF
ΞϯνύλʔϯΞΠεΫϦʔϜίʔϯ IUUQTXXXPSFJMMZDPKQCPPLT ʰγεςϜӡ༻ΞϯνύλʔϯʱQ
։ൃऀओମͰड͚ೖΕςετΛ࡞ɾཧ͠ɺखݩͷ։ൃڥͰ؆୯ʹ࠶ݱɾमਖ਼Ͱ͖Δ͜ͱ IUUQTXXXBNB[PODPKQEQ ։ൃऀ͕ड͚ೖΕςετͷ࡞ɾཧʹؔ༩͢ΔͱɺͭͷॏཁͳޮՌ͕ੜ͡Δ ։ൃऀ͕ςετΛ࡞͢Δͱίʔυ͕ΑΓςετՄೳͳͷʹͳΔ ࣗಈςετʹର͢ΔΛ։ൃऀ͕ෛ͏ͱɺςετʹର͢Δҙ͕ࣝߴ·Γɺ ͦͷཧमਖ਼ʹΑΓྗ͢Δ͜ͱʹͳΔ ʰ-FBOͱ%FW0QTͷՊֶʱQʢ˞༁ΛҰ෦มߋʣ
IUUQTXXXUIPVHIUXPSLTDPNSBEBSUFDIOJRVFTCSPBEJOUFHSBUJPOUFTUT &&ςετͷաࢿ5FDIOPMPHZ3BEBSͰʮ)0-%ʯʹϨʔςΟϯά͞Εͨ
IUUQTXXXUIPVHIUXPSLTDPNSBEBSUFDIOJRVFTCSPBEJOUFHSBUJPOUFTUT ςετࣗಈԽͷྗশࢍʹ͢Δ͕ɺࢲ͕ͨͪޮՌతͰͳ͍ͱߟ͑Δൣͳ౷߹ςετ ʢ˞&&ςετʣʹաࢿ͍ͯ͠Δ৫Λଟ͘ݟ͔͚Δɻ ͜ͷΑ͏ͳςετɺඞཁͳΠϯϑϥɺσʔλɺαʔϏεΛͯ͢උ͑ͨϑϧػೳͷςετ ڥΛඞཁͱ͢ΔͨΊɺ໌Β͔ʹίετ͕͔͔Δɻ ͜ΕΒͯ͢ͷґଘؔͷదͳόʔδϣϯΛཧ͢Δʹɺ͔ͳΓͷௐΦʔόʔϔου͕ ඞཁͱͳΓɺϦϦʔεαΠΫϧ͕͘ͳΓ͕ͪͰ͋Δɻ ࠷ޙʹɺςετͦͷͷ͕੬͘ʹཱͨͳ͍͜ͱଟ͍ɻྫ͑ɺςετ͕ࣦഊͨ͠ͷ͕৽͠ ͍ίʔυͷ͍ͤͳͷ͔ɺόʔδϣϯͷෆҰகʹΑΔґଘؔͷ͍ͤͳͷ͔ɺڥͷ͍ͤͳͷ͔ Λஅ͢Δʹ࿑ྗ͕͔͔ΓɺΤϥʔϝοηʔδ͕ΤϥʔͷݪҼΛಥ͖ࢭΊΔॿ͚ʹͳΔ͜ͱ
΄ͱΜͲͳ͍ɻ ͜ΕΒͷ൷ɺࣗಈԽ͞ΕͨʮϒϥοΫϘοΫεʯ౷߹ςετΛҰൠతʹࢹ͍ͯ͠Δ͜ ͱΛҙຯ͢ΔͷͰͳ͍͕ɺΑΓ༗༻ͳΞϓϩʔνɺࣗ৴ͱϦϦʔεසͷόϥϯεΛͱ ΔͷͰ͋Δͱߟ͑Δɻ &&ςετͷաࢿ5FDIOPMPHZ3BEBSͰʮ)0-%ʯʹϨʔςΟϯά͞Εͨ
4.63'େ͖Ίͷࣗಈςετ܈ͷઃܭ࣌ʹߟྀ͖͢τϨʔυΦϑ IUUQTUFTUJOHHPPHMFCMPHDPNTNVSGCFZPOEUFTUQZSBNJEIUNM S: 動作スピード M: 保守性 U: リソース使用率 R: 信頼性(決定性、安定性)
F: 忠実性(本番環境との類似度) 中心から離れるほど高スコア
ΞΠεΫϦʔϜίʔϯ͔Βϐϥϛου IUUQTXBUJSNFMPOCMPHJOUSPEVDJOHUIFTPGUXBSFUFTUJOHJDFDSFBNDPOF 6OJU *OUFHSBUJPO && खಈςετ 6OJU *OUFHSBUJPO &&
ࣗಈςετͷಈػ 61/92
ΞϯνύλʔϯίετݮΛओతʹ͢Δ IUUQTXXX fl JDLSDPNQIPUPTNEHSPVQ ࣗಈςετΛॻ͘ओతࢦඪΛʮίετݮʯʹ͢Δͱɺظతʹࣗಈςε τͷֶशίετɺதظతʹอकίετʹΑͬͯࢥͬͨΑ͏ͳίετݮޮՌ͕ ಘΒΕͣɺखಈςετʹΔͱ͍͏அΛͯ͠͠·͍͕ͪͰ͢ ࣗಈςετҎ֎ͷٕज़ࢪࡦͰίετݮΛओతʹ͢Δͱࣦഊ͕ͪ͠Ͱ͢
IUUQTUXJUUFSDPNUPLPSPUFOTUBUVT มߋ༰қੑͷߴ͍ιϑτΣΞʹΑΔΞδϦςΟͷ֫ಘ
ࣗಈςετͷಈػৗʹมԽΛՄೳʹ͢ΔͨΊ IUUQTXXXPSFJMMZDPKQCPPLT ʰ(PPHMFͷιϑτΣΞΤϯδχΞϦϯάʱQ
ͯ͢ΛΞδϟΠϧͳܗͰػೳͤ͞Δʹɺ༏Εͨઃܭʹ͚ͨϓϥΫςΟεΛ ࣮ફ͢Δඞཁ͕͋Γ·͢ɻͱ͍͏ͷɺ༏ΕͨઃܭʹΑͬͯมߋ͕༰қʹͳΔͨ ΊͰ͢ɻͦͯ͠มߋ͕༰қͰ͋Δ߹ɺ͋ΒΏΔϨϕϧͰ᪳ͳ͘ௐ͕Մೳʹ ͳΔͷͰ͢ɻ ͦΕ͕ͦ͜ΞδϦςΟʔͱ͍͏ͷͳͷͰ͢ɻ ΞδϦςΟͷຊ࣭͋ΒΏΔϨϕϧͰ᪳ͳ͘มԽ͢Δ ʰୡਓϓϩάϥϚʔୈ൛ʱQ
ͳͥࣗಈςετΛॻ͘ͷ͔ 🙅 ίετΛݮ͢ΔͨΊ 🙆 ૉૣ᪳͘ͳ͘มԽ͠ଓ͚ΔྗΛಘΔͨΊ
৴པੑͷߴ͍࣮ߦ݁Ռʹ ͍࣌ؒͰ౸ୡ͢Δঢ়ଶΛอͭ͜ͱͰɺ ։ൃऀʹࠜڌ͋Δࣗ৴Λ༩͑ɺ ιϑτΣΞͷΛ࣋ଓՄೳʹ͢Δ͜ͱ ࣗಈςετͷత
จԽΛ͔ࠜͤΔԦಓ ڭҭͱਓࣄධՁ 68/92
৽ਓݚमυϫϯΰͷΤϯδχΞ৽ਓݚमͷࣄྫ IUUQTDIOJDPWJEFPKQEXBOHPFOHJOFFSCMPNBHBBS
IUUQTUFDIDZHBNFTDPKQBSDIJWFT ࣮ݚम$ZHBNFTࣾϫʔΫγϣοϓͷࣄྫ
ਓࣄධՁ$"35")0-%*/(4ͷʮٕज़ྗධՁձʯͷࣄྫ IUUQTTFMFDLDD
ಓअಓ 72/92
w ΞϝϦΧਓඈͼࠐΊ͋ͳͨӳ༤Ͱ͢ w ΠΪϦεਓඈͼࠐΊ͋ͳͨਈ࢜Ͱ͢ w υΠπਓඈͼࠐΉͷ͕͜ͷધͷنଇͰ͢ w ΠλϦΞਓඈͼࠐΉͱঁੑʹͯ·͢Α w ϑϥϯεਓඈͼࠐ·ͳ͍Ͱ͍ͩ͘͞
w ຊਓΈΜͳඈͼࠐΜͰ͍·͢Α ຊਓΛಈ͔͢ʹࣄྫ͕ޮՌతʢޮ͖ա͗ʹҙʣ IUUQTXXXBNB[PODPKQEQ
IUUQTOFXTUCTDPKQOFXTFZFUCT@OFXTFZFIUN આ໌ͷ͖Λసͤ͞Δ
આ໌ͷ͖Λసͤ͞Δ IUUQTUXJUUFSDPNIJSPLJ@EBJDIJTUBUVT
IUUQTXXX fl JDLSDPNQIPUPTELBMP lςετΛॻ࣌ؒ͘ͳ͍z
ςετΛॻ͕࣌ؒ͘ͳ͍ ͷͰͳ͘ɺςετΛॻ ͔ͳ͍͔Β͕࣌ؒͳ͘ͳ ΔͷͰ͢ɻ +BNFT(SFOOJOH "HJMF+BQBOجௐߨԋΑΓ
lಈ͘ίʔυʹ৮ΕΔͳz IUUQTXXX fl JDLSDPNQIPUPT!/
IUUQTUXJUUFSDPNU@XBEBTUBUVT Կͯ͠ͳ͍͔ΒյΕΔ
ٕज़͔ΒจԽ 80/92
ٕज़ʮ͕ʯจԽʮʹʯӨڹΛ༩͑Δ IUUQTXXXBNB[PODPKQEQ զʑʮܧଓతσϦόϦΛ࣮ફ͢Δͱɺ৫จԽʹӨڹΛ༩͑ Δ͜ͱ͕Ͱ͖ΔʯͱͷԾઆΛཱͯͨɻͦͯ͠ੳͷ݁ՌɺͦΕ͕ ਅͰ͋Δ͜ͱΛཱূͰ͖ͨ ʰ-FBOͱ%FW0QTͷՊֶʱQ
จԽʹӨڹΛٴ΅͢ཁૉ IUUQTXXXEFWPQTSFTFBSDIDPNSFTFBSDIIUNM
IUUQTTQFBLFSEFDLDPNTOPP[FSSFBEZQMBZFSPOFZVOJLPORJZFGBMTFIJNJUVOJYVFCFSVLPUP จԽɾ෩͓ΑͼύϑΥʔϚϯεʹӨڹΛ༩͑Δ͜ͱ͕ೝΊΒΕͨཁૉ
IUUQTTQFBLFSEFDLDPNTOPP[FSSFBEZQMBZFSPOFZVOJLPORJZFGBMTFIJNJUVOJYVFCFSVLPUP ϋΠύϑΥʔϚϯεͳ৫Λ࣮ݱ͢ΔͨΊͷจԽΛҭͯΔ
ܧଓతσϦόϦΛࢧ͑Δٕज़ϓϥΫςΟε͕จԽʹͭͳ͕Δ IUUQTXXXEFWPQTSFTFBSDIDPNSFTFBSDIIUNM
ܧଓతσϦόϦΛࢧ͑Δٕज़ϓϥΫςΟε͕จԽʹͭͳ͕Δ IUUQTTQFBLFSEFDLDPNTOPP[FSSFBEZQMBZFSPOFZVOJLPORJZFGBMTFIJNJUVOJYVFCFSVLPUP
ࣗಈςετจԽͱ 87/92
IUUQTXXXPSFJMMZDPKQCPPLT ࣗಈςετจԽͱ ʰ(PPHMFͷιϑτΣΞΤϯδχΞϦϯάʱQ
w ςετࣗಈԽʹເΛݟͳ͍ w ࣗಈςετͷϝϯςφϯεʹશһ͕ෲམͪ͢Δ w ࣗಈςετͷϝϯςφϯείετΛԼ͛ΔྗΛଵΒͳ͍ ࣗಈςετจԽͱɺࣗಈςετͷॏཁੑͱอकੑʢཧղ༰қ ੑɺมߋ༰қੑʣΛ৫ɺνʔϜ͕ཧղ͠ɺվળྗΛܧଓత ʹߦ͏͜ͱ ࣗಈςετจԽͱ
ςετʹίετ͕͔͔Δ ͜ͱͷղܾํ๏ɺςε τΛΊΔ͜ͱͰ͋Γ ·ͤΜɻ͏·͘ͳΔ͜ͱ Ͱ͢ɻ 4BOEJ.FU[ ʰΦϒδΣΫτࢦઃܭ࣮ફΨΠυʱQ IUUQTHJIZPKQCPPL
৴པੑͷߴ͍࣮ߦ݁Ռʹ ͍࣌ؒͰ౸ୡ͢Δঢ়ଶΛอͭ͜ͱͰɺ ։ൃऀʹࠜڌ͋Δࣗ৴Λ༩͑ɺ ιϑτΣΞͷΛ࣋ଓՄೳʹ͢Δ͜ͱ ࣗಈςετͷత
wෆ࣮֬ੑͷߴ͍࣌ʹ͓͍ͯɺܭըઃܭ࣮ৗʹมԽ͠ଓ͚ΒΕΔྗ͕ॏཁͱͳΔ wܧଓతσϦόϦΛߏ͢ΔέΠύϏϦςΟʢೳྗʣ͕اۀͷۀʢऩӹੑɺࢢ༗ɺੜ࢈ੑʣʹҼՌ͕ؔ͋Δ͜ͱ ͕ݚڀʹΑཱͬͯূ͞Εͨ wاۀͷنଐ͢ΔۀքɺγεςϜͷλΠϓσϦόϦͷύϑΥʔϚϯεʹؔͳ͘ɺγεςϜͷΞʔΩςΫνϟ͕උ͑ Δͭͷಛੑʢςετ༰қੑɺσϓϩΠಠཱੑʣ͕͍ؔͯ͠Δ͜ͱ͕໌ͨ͠ wࣗ৫ͷࣄۀʹͱͬͯઓ্ུॏཁͳιϑτΣΞͷ։ൃೳྗΛࣗ৫ͷத֩తཁૉͱͯ͠Ґஔ͚ͣʹ֎෦ҕୗ͢Δͱɺ ༗ҙʹύϑΥʔϚϯε͕Լ͕Δ͜ͱ໌ͨ͠ wࣗಈςετΛ։ൃऀओମͰॻ͖ɺ࣮ߦ݁Ռͷ৴པੑ͕ߴ͍ঢ়ଶΛอͭ͜ͱ͕σϦόϦͷύϑΥʔϚϯεͱҼՌ͕ؔ͋Δ wࣗಈςετΛॻ͘ཧ༝ɺίετݮͰͳ͘ɺΞδϦςΟʢ͋ΒΏΔϨϕϧͰૉૣ᪳͘ͳ͘มԽ͠ଓ͚ΔྗʣΛಘΔ ͨΊ
wΤϯδχΞϦϯάจԽͷৢ୯ҐͷࣄۀʹͳΔɻจԽͷৢʹԦಓʢڭҭɺਓࣄධՁʣಓअಓ͋Δ wٕज़ʮ͕ʯจԽʮʹʯӨڹΛٴ΅͢ɻޮՌతͳٕज़ϓϥΫςΟεΤϯδχΞϦϯάจԽΛҭͯΔ͜ͱ͕໌ͨ͠ wࣗಈςετจԽͱɺࣗಈςετͷॏཁੑͱอकੑʢཧղ༰қੑɺมߋ༰қੑʣΛ৫ɺνʔϜ͕ཧղ͠ɺվળྗΛܧ ଓతʹߦ͏͜ͱ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠