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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Takuto Wada
PRO
December 20, 2024
Technology
15k
37
Share
組織に自動テストを書く文化を根付かせる戦略(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
22
12k
予防に勝る防御なし(2025年版) - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHP Conference Fukuoka 2025
twada
PRO
50
33k
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
46
42k
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
191
130k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
The Clean ArchitectureがWebフロントエンドでしっくりこないのは何故か / Why The Clean Architecture does not fit with Web Frontend
twada
PRO
87
51k
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
3.8k
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
15
7.7k
これまでと違う学び方をしたら挫折せずにRustを学べた話 / Programming Rust techramen24conf LT
twada
PRO
36
32k
Other Decks in Technology
See All in Technology
20260513_生成AIを専属DSに_AI分析結果の検品テクニック_ハンズオン_交通事故データ
doradora09
PRO
0
220
「強制アップデート」か「チームの自律」か?エンタープライズが辿り着いたプラットフォームのハイブリッド運用/cloudnative-kaigi-hybrid-platform-operations
mhrtech
0
180
ServiceによるKubernetes通信制御ーClusterIPを例に
miku01
1
160
AIが自律的に働く時代へ Amazon Quick で実現するAIエージェント紹介
koheiyoshikawa
0
200
SLI/SLO、「完全に理解した」から「チョットデキル」へ
maruloop
3
390
ハーネスエンジニアリング入門
hatyibei
0
120
【技術書典20】OpenFOAM(自宅で深める流体解析)流れと熱移動(2)
kamakiri1225
0
390
"うちにはまだ早い"は本当? ─ 小さく始めるPlatform Engineering入門
harukasakihara
5
490
エージェント時代の UIとAPI、CLI戦略
coincheck_recruit
0
170
100マイクロサービスのTerraform/Kubernetes管理地獄から抜け出すためのAI活用術
markie1009
0
130
世界の中心でApp Runnerを叫ぶ FINAL
tsukuboshi
0
260
ESP32 IoTを動かしながらメモリ使用量を観測してみた話
zozotech
PRO
0
110
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
180
So, you think you're a good person
axbom
PRO
2
2k
Between Models and Reality
mayunak
3
280
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Statistics for Hackers
jakevdp
799
230k
Faster Mobile Websites
deanohume
310
31k
Paper Plane (Part 1)
katiecoart
PRO
0
7.3k
Context Engineering - Making Every Token Count
addyosmani
9
870
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
790
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
110
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
510
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ࣗಈςετจԽͱɺࣗಈςετͷॏཁੑͱอकੑʢཧղ༰қੑɺมߋ༰қੑʣΛ৫ɺνʔϜ͕ཧղ͠ɺվળྗΛܧ ଓతʹߦ͏͜ͱ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠