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/07版) / Agentic Software Engineering 2026-07 Findy Edition
twada
PRO
38
29k
2026年のソフトウェア開発を考える(2026/05版) / Software Engineering Scrum Fest Niigata 2026 Edition
twada
PRO
28
19k
AI時代のTDD / TDD in AI Era 202604 Edition
twada
PRO
9
1.4k
ソフトウェアエンジニア人生サバイバルガイド / Software Engineers Survival Guide 202604 Edition
twada
PRO
18
7.4k
予防に勝る防御なし(2025年版) - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHP Conference Fukuoka 2025
twada
PRO
52
37k
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
47
45k
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
193
140k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
The Clean ArchitectureがWebフロントエンドでしっくりこないのは何故か / Why The Clean Architecture does not fit with Web Frontend
twada
PRO
89
54k
Other Decks in Technology
See All in Technology
Oracle AI Databaseデータベース・サービス: BaseDB/ExaDB-Dの可用性
oracle4engineer
PRO
1
900
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
4
1.3k
AI画像認識を活用したゲーム内決済処理検証の自動化
gree_tech
PRO
0
500
NANDでも描画したい!
nichica906
3
730
巨大気象データと戦う ― サロゲートモデル学習を高速化する圧縮技術
gpuunite_official
0
270
Kiro WebとCloud Sessions
nagisa53
2
200
:syncing_time:
sksat
2
750
The Django UUID Story - DjangoCon US 2026
pauloxnet
0
260
Kiro入門|仕様駆動開発で変わるAI時代の開発スタイル
cmkudo
0
380
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
270
MCPを待つな、パスキーを拡げよう(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
270
Rust×eBPFでEDRっぽいものをつくる
sunlife3
2
970
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Unsuck your backbone
ammeep
672
58k
Speed Design
sergeychernyshev
33
2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
How STYLIGHT went responsive
nonsquared
100
6.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Darren the Foodie - Storyboard
khoart
PRO
3
3.7k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Mobile First: as difficult as doing things right
swwweet
225
10k
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ࣗಈςετจԽͱɺࣗಈςετͷॏཁੑͱอकੑʢཧղ༰қੑɺมߋ༰қੑʣΛ৫ɺνʔϜ͕ཧղ͠ɺվળྗΛܧ ଓతʹߦ͏͜ͱ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠