Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ʲ࿈ଓߨ࠲ #5ʳςετۦಈ։ൃ ͡ΊͷҰา 2022/11/24 ConnpassΠϕϯτ൛ 2022/11/24 ύʔιϧςΫϊϩδʔελοϑגࣜձࣾ Ѩ෦ߞೋ
[email protected]
ΈࠐΈιϑτΣΞجૅ
Slide 2
Slide 2 text
▪ύʔιϧςΫϊϩδʔελοϑגࣜձࣾ ɹٕज़ຊ෦ɹػిٕज़෦ɹटݍ2GɹѨ෦ɹߞೋʢ͋ɹ͜͏͡ʣ ▪ҩྍػث։ൃ ɾࠐΈιϑτΣΞ։ൃɻ ɾCݴޠɺϕΞϝλϧͷ։ൃۀܦݧ͕΄ͱΜͲɻ ࣗݾհ 1 2
Slide 3
Slide 3 text
▪ٕज़ॻΛॻ͍ٕͯज़ॻయ13ʹࢀՃͨ͠Γɺ ɹ ▪ϚΠίϯͷίϯςετ(※)ʹࢀՃͨ͠Γɺ ɹ※SPRESENSE™ ׆༻ίϯςετ ɹࠐΈιϑτΣΞ։ൃ͕͖ͳ͓͡͞ΜͰ͢ɻ ɹΑΖ͓͘͠ئ͍͠·͢ɻ ▪LAPRASϙʔτϑΥϦΦɿhttps://lapras.com/public/k-abe ▪twitter: @juraruming ࣗݾհ 2 3
Slide 4
Slide 4 text
• ߨ࠲։࠵ͷഎܠɾత • ຊͷςʔϚʲςετۦಈ։ൃ ͡ΊͷҰาʳ • TDDֶशͷࢀߟ • QA • ·ͱΊ • ࣍ճ༧ࠂ ࣍ 4
Slide 5
Slide 5 text
• ͳʹ͔ςʔϚΛܾΊͯɺιϑτΣΞ։ൃͷ্ྲྀఔ͔ΒԼྲྀఔ·Ͱ આ໌͢Δߨ࠲Λ։࠵͠ɺεΩϧΞοϓΛਤΔɻ ɹ˙ཁٻ༷ͷཧղɹࢿྉɾهࣄ ɹ˙ཁٻ༷ͷ༷Խɹࢿྉɾهࣄ ɹ˙ઃܭɹ ɹɹ˔֓ཁɹࢿྉɾهࣄ ɹɹ˔ৄࡉɹࢿྉɾهࣄ ɹ˙TDD ɹɹ˔#1 ςετۦಈ։ൃ͡ΊͷҰาɹ˒͍·͜͜ ɹɹ˔#2 LEDυϥΠό(ϗετPCฤ) ɹɹ˔#3 LEDυϥΠό(λʔήοτฤ) ɹɹ˔#4 ɹɹ˔#5 ɹɹ ߨ࠲։࠵ͷഎܠɾత 5
Slide 6
Slide 6 text
ςʔϚɿ ʲطଘࠐΈ(CQ EVΧʔτ)ͷ ϚΠίϯΛҠ২͢Δʳ ߨ࠲։࠵ͷഎܠɾత 6
Slide 7
Slide 7 text
ςʔϚɿʲطଘࠐΈͷϚΠίϯΛҠ২͢Δʳ ରஔɿCQ EVΧʔτ എܠɿ ɾߨࢣ͕͓࣋ͬͯΓɺରஔͷυϝΠϯࣝΛཧղ͍ͯ͠Δɻ ɾιϑτΣΞͷߏΛཧղ͍ͯ͠Δɻ ɾରஔͷϚΠίϯ͕৽ن࠾༻ඇਪʹͳͬͨɻ ɹ⇛ֶशɾεΩϧΞοϓͷͨΊผϚΠίϯʹҠ২ͯ͠ΈΑ͏!!!ɹ ߨ࠲։࠵ͷഎܠɾత 7
Slide 8
Slide 8 text
• ςετۦಈ։ൃͱ? • ڥߏங • ςετΛॻ͍ͯΈΔ ຊͷςʔϚ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 8
Slide 9
Slide 9 text
• ςετۦಈ։ൃͱ? • ڥߏங • ςετΛॻ͍ͯΈΔ ຊͷςʔϚ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 9
Slide 10
Slide 10 text
• ςετۦಈ։ൃͱ? ɹจࣈͱ͓ΓςετͰιϑτΣΞ։ൃΛۦಈ͍ͯ͘͠ɻ ɹςετ͕։ൃͷىͱͳΔɻ ɹ࣮ˠςετͰͳ͘ɺςετˠ࣮ͷॱ൪Ͱ։ൃΛਐΊΔɻ ɾʲςετۦಈʳͯ͠Ͳ͏͢Δ? ɹςετΛॻ͍ͯΑΓྑ͍ઃܭΛಋ͘͜ͱ͕TDDͷࢦ͢ͱ͜Ζɻ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 10
Slide 11
Slide 11 text
▪ςετۦಈ։ൃͱ? ●ςετۦಈ։ൃΛΔϞνϕʔγϣϯ ɾσάϨʔυ͕গͳ͘ͳΔɻ ɾϦϑΝΫλϦϯάͰίʔυ͕៉ྷʹͳΔɻ ɾ։ൃऀͷෆ͕҆গͳ͘ͳΔ(ͳ͘ͳΓ͠ͳ͍ͱࢥ͏)ɻ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 11
Slide 12
Slide 12 text
▪ςετۦಈ։ൃͱ? ●ʲࠐΈʳͰςετۦಈ։ൃΛΔϞνϕʔγϣϯ ɾϋʔυΣΞ͕ͳͯ͘ςετ͕Ͱ͖Δɻ ɾϋʔυΣΞɾιϑτΣΞͷෆ۩߹ཁҼΓ͚͕໌֬ʹͳΔɻ ɹϋʔυΣΞىҼ͘͠λʔήοτϚΠίϯͷϓϥοτϑΥʔϜىҼ (ϦϯΫ͍ͯ͠ΔϥΠϒϥϦͷόάͳͲ)ͷΓ͚ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 12
Slide 13
Slide 13 text
▪ςετۦಈ։ൃͱ? ●ࢲ͕TDDΛֶͼ͡Ίͨಈػ ɾࠐΈͷੜ։ൃʢطଘػछͷόʔδϣϯΞοϓʣͰσάϨʔυ͕ ଟ͘ൃੜɻ ɹˠطଘػೳ͕ਖ਼͘͠ಈ͘͜ͱΛอূ͠ͳ͕Β৽ػೳΛΈࠐΉϊϋ Λֶͼ͔ͨͬͨɻ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 13
Slide 14
Slide 14 text
▪ςετۦಈ։ൃͱ? ●ࢲ͕TDDΛֶΜͩײ ɾૉʹָ͍͠ɻ ɹɾTDDͷαΠΫϧ(ϨουˠάϦʔϯˠϦϑΝΫλϦϯά)Λճ͢ͷָ͕͍͠ɻ ɹɾςετΛॻ͍ͯςετ͕ޭͨ͠ͱ͖ͷշײɻ ɾ҆৺Ͱ͖Δɻ ɾίʔυ͕͍࣮ͯ͘͠ײ͕ಘΒΕΔɻ ɾίʔυ͕៉ྷʹอͨΕ͍ͯΔ࣮ײ͕͋Δɻ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 14
Slide 15
Slide 15 text
▪ςετۦಈ։ൃͱ? ●ࠐΈͰTDDΛਪਐ͍ͯ͘͠͏͑Ͱͷ՝ ɾTDD։࢝લͷઓཱུҊ(Ͳ͜·ͰTDDΛ͏ͷ͔) ɾςετ͕͍͠ྖҬ(ྫ. ࠐΈஔͷը໘ܥ)ͰͷTDD׆༻ ɾྑ͍ઃܭΛಋͨ͘ΊͷTDD׆༻ ɹݱঢ়ςετϑϨʔϜϫʔΫΛ͍ςετΛॻ͖ɺTDDͷαΠΫϧΛճͤΔΑ ͏ʹͳͬͨͱ͍͏ঢ়گɻ ɹTDDΛͬͨྑ͍ઃܭͷྫTDDֶशͷࢀߟ 4, 5͕ࢀߟʹͳΔɻ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 15
Slide 16
Slide 16 text
• ςετۦಈ։ൃͱ? • ڥߏங • ςετΛॻ͍ͯΈΔ ຊͷςʔϚ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 16
Slide 17
Slide 17 text
▪ڥߏங ●ςετϑϨʔϜϫʔΫͷબ ɾUnity ɾCppUTest ɾGoogle Test TDDֶशͷࢀߟ 1ͷຊͰଟ͘આ໌͞Ε͍ͯΔ, ϚΠίϯʹࠐΈՄೳͳςε τϑϨʔϜϫʔΫͷCppUTestͱͨ͠ɻ ϗετڥͰͷΈTDD͢ΔͷͩͬͨΒGoogle Testਪ͠ͷ͕ଟ͍ؾ͕͢Δɻ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 17
Slide 18
Slide 18 text
▪ڥߏங ●λʔήοτϚΠίϯͷબఆ ɹSTϚΠΫϩΤϨΫτϩχΫεͷSTM32ϚΠίϯϘʔυʲNUCLEO- F446REʳʹܾΊͨɻ ɾSTM32F446RET6 64ϐϯ ɾArm Cortex-M4ίΞ 180MHz ɾϑϥογϡ: 512Kbyte ɾSRAM: 128Kbyte ɾArm MbedରԠ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 18
Slide 19
Slide 19 text
▪ڥߏங ●λʔήοτϚΠίϯͷબఆཧ༝ ɾςʔϚɿʲطଘࠐΈ(CQ EVΧʔτ)ͷϚΠίϯΛҠ২͢ΔʳͰ Ϟʔλʔ੍ޚΛ͓͜ͳ͏ɻ ֘ϚΠίϯϘʔυʹࡌ͞Ε͍ͯΔϚΠίϯϞʔλʔ੍ޚ༻ͷλΠ ϚʔػೳΛ͍࣋ͬͯͨͨΊɻ ɾଞͷSTM32ϚΠίϯϘʔυΑΓଟͬͨ͘͜ͱ͕͋Γ׳Ε͍ͯͨɻ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 19
Slide 20
Slide 20 text
• ςετۦಈ։ൃͱ? • ڥߏங • ςετΛॻ͍ͯΈΔ ຊͷςʔϚ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 20
Slide 21
Slide 21 text
▪ςετΛॻ͍ͯΈΔ ●TDDͷεςοϓ ɹɾςετΛॻ͘ɻ ɹɾςετࣦഊΛ֬ೝ͢Δ(Ϩου)ɻ ɹɾςετޭͤ͞ΔͨΊͷϓϩμΫτίʔυΛॻ͘ɻ ɹɾςετޭΛ֬ೝ͢Δ(άϦʔϯ)ɻ ɹɾςετޭͨ͠··ιʔείʔυΛ៉ྷ͢Δ(ϦϑΝΫλϦϯά) ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 21
Slide 22
Slide 22 text
▪ςετΛॻ͍ͯΈΔ ˒TDDαΠΫϧΛճͯ͠ΈΔσϞ TDDֶशͷࢀߟ 1ͷຊɹLEDυϥΠόʔͷςετରʹ͢Δɻ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 22 ςετରͷϓϩμΫτίʔυ LEDυϥΠό LedDriver.c, LedDriver.h ςετίʔυɿ CppUTestͷॻ͖ํͰ ςετΛॻ͘ LedDriverTest.cpp mainؔɿ ςετ࣮ߦ RunAllTests.cpp
Slide 23
Slide 23 text
▪ςετΛॻ͍ͯΈΔ λʔήοτϘʔυͰTDDͯ͠Έͨ STM32CubeIDEʹCppUTestΛڥߏங͠ɺSTM32ϚΠίϯͰTDD͢ Δ githubͪ͜Βɻ ϙΠϯτɿ ɾRAMͰςετ࣮ߦ(ROMॻ͖͑࣌ؒɺॻ͖͑ճߟྀ) ɾ౷߹։ൃڥͷΈͰςετՄೳ(γϦΞϧλʔϛφϧෆཁ) ɾCppUTestͷϝϞϦ༻ྔ ʲςετۦಈ։ൃ ͡ΊͷҰาʳ 23
Slide 24
Slide 24 text
1. ςετۦಈ։ൃʹΑΔΈࠐΈϓϩάϥϛϯά 2. ʦಈըͰղઆʧాਓͷ“ςετۦಈ։ൃ”ߨ࠲ هࣄҰཡ 3. ʰςετۦಈ։ൃʹΑΔΈࠐΈϓϩάϥϛϯάʱΛಡΜͰֶΜͩ͜ͱ 4. TDDʹΑΔϚΠίϯͷLνΧ։ൃ(1) 5. TDDʹΑΔϚΠίϯͷLνΧ։ൃ(2)() TDDֶशͷࢀߟ 24
Slide 25
Slide 25 text
• ࣭͝ɺؾʹͳͬͨ͜ͱ͋Εڞ༗Λ͓ئ͍͠·͢ɻ QA 25
Slide 26
Slide 26 text
▪ ͍Ζ͍Ζॻ͖·͕ͨ͠TDDͷεςοϓʹଇΓ·ͣखΛಈ͔ͯ͠ମײͯ͠ΈΔɺ͕TDDΛཧղ͢Δ͡Ί ͷҰา͔ͳͱࢥ͍·͢ɻ ●TDDͷεςοϓ(࠶ܝ) ɹɾςετΛॻ͘ɻ ɹɾςετࣦഊΛ֬ೝ͢Δ(Ϩου)ɻ ɹɾςετޭͤ͞ΔͨΊͷϓϩμΫτίʔυΛॻ͘ɻ ɹɾςετޭΛ֬ೝ͢Δ(άϦʔϯ)ɻ ɹɾςετޭͨ͠··ιʔείʔυΛ៉ྷ͢Δ(ϦϑΝΫλϦϯά) ·ͱΊ 26
Slide 27
Slide 27 text
ɹ࣍ճʲ12/22() 19:30ʙ20:15ʳͰ։࠵༧ఆͰ͢ɻ ʲ࿈ଓߨ࠲ #6ʳςετۦಈ։ൃ#2 LEDυϥΠό(ϗετPCฤ) ɹ ɹϗετPCͰTDD͍ͨ͠ͱߟ͍͑ͯ·͢ɻ ࢀՃͷํɺੋඇͱΑΖ͓͘͠Ͷ͕͍͠·͢ɻ ࣍ճ༧ࠂ 27
Slide 28
Slide 28 text
• ςʔϚͷલఏઆ໌ ʲCQ EVΧʔτʳͱ??? ɾಈը1: ߦத ɾಈը2: ج൘Λ֦େ աڈʹॻ͍ٕͨज़ॻ(EV Χʔτ で ࢝ΊΔϞ デ ϧ ベ ʔε։ൃ)Λϕʔεʹઆ໌͠·͢ɻ هࡌՕॴɿʲୈ1ষ EVΧʔτͱԿ͔ʳ ࢀߟʲςʔϚͷલఏઆ໌ʳ 28
Slide 29
Slide 29 text
• ςʔϚͷલఏઆ໌ ςʔϚɿʲطଘࠐΈͷϚΠίϯΛҠ২͢Δʳ࣍ͷલఏͱ͢Δɻ ɾੜ։ൃ(طʹ͋ΔஔͰϚΠίϯͷΈมߋ) ɾϋʔυΣΞ͋Γɻిؾత༷֬ೝOKɻ ɾچϚΠίϯͰͷιϑτΣΞࢿ࢈͋Γɻ˞GitHub, ࢿྉ ͷ֤ϦϯΫ ɾݸਓ։ൃ(͓ࣄʹద༻Ͱ͖ΔΤοηϯε͋Δ͔ͱࢥ͍·͢) ࢀߟʲςʔϚͷલఏઆ໌ʳ 29
Slide 30
Slide 30 text
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ɻ ऴΘΓ 30