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