Slide 1

Slide 1 text

#denatechcon ͋Δ48&5ΤϯδχΞͷ
 ։ൃϓϩηεվળ࠷લઢ γεςϜຊ෦඼࣭؅ཧ෦48&5άϧʔϓ ࠃ෼༎थʢ,VOJXBLʣ

Slide 2

Slide 2 text

#denatechcon ൃදͷͶΒ͍  

Slide 3

Slide 3 text

#denatechcon ։ൃݱ৔Ͱςετ΍։ൃϓϩηεʹ
 ೰ΜͰ͍ΔਓʹɺϞσϧέʔεͱͯ͠ 48&5ͷऔΓ૊ΈΛ঺հ͍ͨ͠  

Slide 4

Slide 4 text

#denatechcon   ୈষ ࣗݾ঺հ ୈষ 48&5ͱ͸Կ͔ ୈষ ൒೥લͷऔΓ૊Έ ୈষ ݱࡏͷऔΓ૊Έ ୈষ ·ͱΊ

Slide 5

Slide 5 text

#denatechcon ࣌ؒͷ౎߹ͰൃදதʹׂѪ͢Δϖʔδ΍
 ஫ऍͳͲ͕͋Γ·͢ɻ ·ͨɺίʔυͳͲ͕ಡΈͮΒ͍৔߹͸
 ҎԼ͔ΒεϥΠυΛ͝ཡ͍ͩ͘͞ɻ   https://speakerdeck.com/denatech

Slide 6

Slide 6 text

#denatechcon ࣗݾ঺հ   ୈষ

Slide 7

Slide 7 text

#denatechcon   ,VOJXBL w HJUIVCDPN,VOJXBL w RJJUBDPN,VOJXBL w ೥݄ʹத్ೖࣾ w 48&5άϧʔϓॴଐ w ઐ໳͸ɺ୯ମςετͱ੩తղੳ

Slide 8

Slide 8 text

#denatechcon w J04%$+BQBOϕεττʔΫ৆Ґ
 ʮJ04ΞϓϦͷ։ൃ଎౓Λʹ޲্ͤͨ͞σόοάϊ΢ϋ΢ʯ w CVJMEFSTDPOUPLZPൃද
 ʮࣄલ஌ࣝͳ͠Ͱཧղ͢Δɺ੩తݕࠪͷ͍Ζ͸ʯ w 2JJUB"EWFOU$BMFOEBS࠷ଟ͍͍Ͷ৆
 ʮςετ͕ͳ͔ͬͨແ๏஍ଳʹςετΛಋೖͯ͠։ൃ଎౓Λഒʹͨ͠࿩ʯ   ࠷ۙͷܦྺ

Slide 9

Slide 9 text

#denatechcon 48&5ͱ͸Կ͔   ୈষ

Slide 10

Slide 10 text

#denatechcon   48&5ͱ͸ αʔϏεͷ඼࣭޲্΍ɺ։ൃੜ࢈ੑ޲্Λ͓͜ͳ͏૊৫ɻ
 ϝϯόʔ͸ࢲΛؚΊݱࡏ໊ɻ ۀ຿಺༰͸ɺ։ൃऀͷςετΛॿ͚Δج൫ͷ੔උ΍
 ֤ϓϥοτϑΥʔϜʹ͓͚Δςετϊ΢ϋ΢ͷܗࣜԽͳͲɻ

Slide 11

Slide 11 text

#denatechcon 48&5ͷ੒Γཱͪ   48&5ͱ͸Կ͔

Slide 12

Slide 12 text

#denatechcon   ໊લͷ༝དྷ (PPHMFͳͲʹ͓͚Δ4&5 4PGUXBSF&OHJOFFSJO5FTU Λ
 ࢀߟʹ͍ͯ͠Δɻ͜ͷଞͷϩʔϧͱͯ͠ɺ48& 4PGUXBSF &OHJOFFS ͱ5& 5FTU&OHJOFFS ͳͲ͕͋Δɻ ͜ͷ໋໊Λࢀߟʹ͢Δࡍʹ4&5͸48&ͷҰछͰ͋Δ
 ͱ͍͏ೝ͔ࣝΒ4&5 48&ˠ48&5΁มߋɻ ৄ͘͠͸ʮςετ͔Βݟ͑ͯ͘Δάʔάϧͷιϑτ΢ΣΞ։ൃʯΛࢀর

Slide 13

Slide 13 text

#denatechcon 48&5ͷϏδϣϯ   48&5ͱ͸Կ͔

Slide 14

Slide 14 text

#denatechcon   ָ͘͠ɺݡ͘ɺՁ஋͋ΔςετͰ
 ։ൃϓϩηεͷվળΛॿ͚Δ͜ͱ

Slide 15

Slide 15 text

#denatechcon   ָ͍͠ ͨͱ͑͹ɺςετͷ໨త͕͸͖ͬΓ͠ͳ͍··ɺ
 τοϓμ΢ϯͰ࢝Ίͤ͞ΒΕͨΒςετ͸ָ͘͠ͳ͍ɻ ͭΒ͍ ͨͱ͑͹ɺػೳͷ׬੒Λ͢͹΍͘ςετͷ੒ޭͰ ت΂ΔͳΒςετ͸ָ͘͠ͳΔɻ

Slide 16

Slide 16 text

#denatechcon   ݡ͍ ໨తʹରͯ͠खஈ͕ద͍ͯ͠ͳ͍ٕज़ɻͨͱ͑͹ɺ
 ςετ඼࣭ͷଌఆʹҋӢʹΧόϨοδΛ࢖ͬͯ΋Θ͔Βͳ͍ɻ ҋӢ ςετ݁ՌΛద੾ͳλΠϛϯά΍಺༰Ͱڭ͑ͯ͘ΕΔٕज़ɻ
 ࠷ۙͰ͸ɺςετͷ඼࣭Λݡ͘ڭ͑ͯ͘ΕΔٕज़ͱͯ͠ɺ
 NVUBUJPOUFTUJOHͷௐࠪͳͲ΋͍ͯ͠Δɻ

Slide 17

Slide 17 text

#denatechcon   Ձ஋͕͋Δ ͨͱ͑͹ɺΧόϨοδ౳ͷࢦඪͷΈΛ௥͍͔͚Δ͜ͱʹ
 ݻࣥͯ͠ɺ໨తΛ๨ΕۭͯճΓͯ͠͠·ͬͨςετɻ ແବ͕ଟ͍ ͨͱ͑͹ɺ୯ମςετΛ͏·͘࢖͑͹ɺख໭ΓΛগͳ͘ɺ୹͘
 Ͱ͖Δɻ͜Ε͸࠷ऴతʹΑΓଟ͘ͷػೳΛϓϨΠϠʔʹ
 ༧ࠂ௨ΓͷλΠϛϯάͰఏڙ͢Δ͜ͱʹͭͳ͕Δɻ

Slide 18

Slide 18 text

#denatechcon   ָ͘͠ɺݡ͘ɺՁ஋͋ΔςετͰ
 ։ൃϓϩηεͷվળΛॿ͚Δ͜ͱ 48&5ͷϏδϣϯ

Slide 19

Slide 19 text

#denatechcon औΓ૊Έͷྺ࢙   48&5ͱ͸Կ͔

Slide 20

Slide 20 text

#denatechcon   w .PCBHFͷ8FC"1*6*΁ͷ&&ςετ   w ϚϧνϓϥοτϑΥʔϜͰͷ4%,ͷςετ ʙ  w ςετج൫ʢ45'ͳͲʣͷల։ ʙ  w ϥΠϒϥϦͷࣗಈόʔδϣϯΞοϓج൫ ʙ  w ը૾ೝࣝʹΑΔ&&ςετࢧԉج൫ ʙ  w ʜ w ͜Ε͔Βൃද͢Δ্Լ൒ظͷऔΓ૊Έ ʙ

Slide 21

Slide 21 text

#denatechcon 48&5͸໊ͷϝϯόʔ͔ΒͳΔɺ
 ָ͘͠ɺݡ͘ɺՁ஋͋ΔςετͰ
 ։ൃϓϩηεΛΑ͍ͯ͘͘͠૊৫   ͜͜·Ͱͷ·ͱΊ

Slide 22

Slide 22 text

#denatechcon ൒೥લͷऔΓ૊Έ   ୈষ

Slide 23

Slide 23 text

#denatechcon എܠ   ൒೥લͷऔΓ૊Έ

Slide 24

Slide 24 text

#denatechcon   ήʔϜͷόοΫΤϯυ΍4%,΁ͷऔΓ૊Έ͸͋ͬͨ
 ΋ͷͷɺجװྖҬͰ͋ΔήʔϜΫϥΠΞϯτྖҬʹ
 48&5ͷऔΓ૊Έ͕·ͩͳ͔ͬͨɻ ͜͜ͰͷऔΓ૊Έ΋͸͡ΊΔͨΊɺෆ଍͍ͯͨ͠
 υϝΠϯ஌ࣝͷ֫ಘͱݱ৔ͷ՝୊ײͷ೺ѲΛ໨ࢦ͠ɺ
 48&5͔Βਓʢ࠷ऴతʹ͸ਓʣΛΞαΠϯɻ

Slide 25

Slide 25 text

#denatechcon ՝୊ͷ෼ੳ   ൒೥લͷऔΓ૊Έ

Slide 26

Slide 26 text

#denatechcon   εϚʔτϑΥϯήʔϜͷ։ൃݱ৔΁ɺ࡞ۀޮ཰ͷѱ͍
 λεΫ΍όάͷ಺༁ɺख໭ΓݪҼͳͲΛώΞϦϯάͨ͠ɿ w ඳըܥͷϦάϨογϣϯݕ஌͕େม w +FOLJOTͷ৑௕ੑ͕ͳ͍ w νέοτ͔Β࠶ݱ৚͕݅Θ͔Βͳ͍ w ʜ

Slide 27

Slide 27 text

#denatechcon   நग़͞Εͨ՝୊͕ଟ਺͋ͬͨͷͰ
 ༏ઌ౓Λ͚ͭͯղܾΛ໛ࡧ ༏ઌ౓ͷߴ͔ͬͨऔΓ૊ΈΛ
 ॱʹ঺հ͍͖ͯ͠·͢

Slide 28

Slide 28 text

#denatechcon ඳըܥͷϦάϨογϣϯ
 ݕ஌ج൫   ൒೥લͷऔΓ૊Έ

Slide 29

Slide 29 text

#denatechcon   ඳըܥͷߋ৽ස౓͕ߴ͘ɺݕ߲ࠪ໨΋ඇৗʹଟ͍ͷͰ
 ݱঢ়ͷϦιʔεͰ͸ݕ͖ࠪ͠Εͳ͍ɻ ݱ৔ͷ՝୊ ظ଴͢ΔϑϨʔϜը૾ ඳըܥͷόάʹΑͬͯ࿪Μͩը૾ ໼ҹͷઌ͕࿪ΜͰ͍Δ

Slide 30

Slide 30 text

#denatechcon   ղܾํ๏ͷݕ౼ ·ͣ͸ϑΟʔυόοΫͷ଎͍୯ମςετͰղܾΛݕ౼ɻ
 ͨͩ͠ɺ݁߹ʹΑΔ͕ܽؕଟ͘༧૝͞ΕͨͨΊɺ
 ݁߹ͯ͠ඳըͨ͠ޙͷϑϨʔϜը૾Λݕࠪ͢Δ͜ͱʹɻ &&ςετ ݁߹ςετ ୯ମςετ ݁߹όάΛൃݟͰ͖Δ ݁߹όάΛݟམͱ͢ ϑΟʔυόοΫ͕஗͍ ϑΟʔυόοΫ͕଎͍ ݁߹όάΛݟ͚͍ͭͨ
 ͱ͖ʹ͚ͩ࢖͏ ୯ମςετͰ׬݁Ͱ͖Δ
 ͳΒͦͷํ͕Α͍

Slide 31

Slide 31 text

#denatechcon   ϑϨʔϜը૾શମͷ༰ྔ͸ͭͷόʔδϣϯʹରͯ͠
 ໿(#ɺ࿥ըʹ͔͔Δ࣌ؒ͸IҎ্ɻ ը૾ൺֱج൫ͷن໛ ج൫΁ͷཁٻ ϑΟʔυόοΫ·Ͱͷ࣌ؒΛͳΔ΂͘୹͘͢ΔͨΊɺ
 ࣮ߦ࣌ؒ͸গͳͭͭ͘͠ɺ݁Ռ͸Θ͔Γ΍͘͢ɻ

Slide 32

Slide 32 text

#denatechcon   ͢΂ͯͷϑϨʔϜը૾Λ֨ೲͨ͠;JQΞʔΧΠϒ͔Βɺ
 ϑΝΠϧϔομʹه࿥͞Ε͍ͯΔ$3$Λൺֱɻ ࠩҟͷ͋ΔϑϨʔϜը૾ͷΈల։ͯ͠(16্Ͱ
 QY୯ҐͰൺֱɻ3(#஋ͷࠩҟ͕ᮢ஋ΑΓେ͖͚Ε͹ɺ ࠩҟ͕͋ͬͨͱΈͳ͢ɻ ߴ଎Խͷ޻෉ ;JQΞʔΧΠϒͷར༻͸ϑΝΠϧҰཡͷอ࣋ͱ$3$ͷه࿥͕໨తͳͷͰແѹॖɻ ൺֱʹ͸1JMMPX $V1ZΛ࢖༻ɻ*NBHF.BHJDLΑΓׂ଎͍͔ಉఔ౓ͩͬͨɻ
 $16ͷ4*.%໋ྩ͚ͩͰे෼଎͍Մೳੑ͕͋Δ͕·ͩࢼ͍ͤͯͳ͍ɻ

Slide 33

Slide 33 text

#denatechcon   ͜ΕͰ΋શମͷൺֱ࣌ؒ͸໿I΄Ͳ͔͔ͬͯ͠·͍ɺ ͳΔ΂͘ϑΟʔυόοΫ·Ͱͷ࣌ؒΛ୹͘͢Δͱ͍͏
 ཁٻΛຬ͍ͨͤͯͳ͍ɻ ͦ͜ͰɺҰ෦ͷαϯϓϧͷΈͷൺֱΛ࣮ࢪ͢Δʮ଎ใʯͱ
 શମΛൺֱ͢ΔʮଓใʯͷछྨͷδϣϒΛ෼͚ͯ༻ҙɻ ೔ճͷ଎ใ͸໿I΄ͲͰ௨஌Ͱ͖ΔͨΊɺ޿ൣғͳ
 ϦάϨογϣϯͷϑΟʔυόοΫͷ࣌ؒΛ୹͘Ͱ͖͍ͯΔɻ ߴ଎Խͷ޻෉

Slide 34

Slide 34 text

#denatechcon   ϑϨʔϜ͝ͱͷࠩҟΛҎԼͷΑ͏ʹදࣔͨ͠ಈըΛ࡞੒ɻ
 Ͳ͔͜Βࠩҟ͕ൃੜͯ͠ফࣦ͢Δͷ͔Λ֬ೝ͠΍͍͢ɻ ݁ՌͷՄಡੑͷ޻෉ ϑϨʔϜ" ϑϨʔϜ# "ͱ#ͷࠩҟ ࠩҟΛදࣔ ඳըܥͷόά ಈը΋ಉ༷

Slide 35

Slide 35 text

#denatechcon   େن໛ͳը૾ൺֱج൫ΛߏஙͰ͖ɺݕূϦιʔεͷ
 ଍Βͳ͍ঢ়گͰ΋ඳըܥͷϦάϨογϣϯΛݕ஌͢Δ
 ج൫͕Ͱ͖ͨɻ ·ͩӡ༻Λ͸͡Ί͕ͯ࣌ؒܦա͍ͯ͠ͳ͍ͷͰվྑதɻ ੒Ռͱ՝୊

Slide 36

Slide 36 text

#denatechcon +FOLJOTΫϥελΛ
 ҆ఆՔಇͤ͞ΔऔΓ૊Έ   ൒೥લͷऔΓ૊Έ

Slide 37

Slide 37 text

#denatechcon   +FOLJOTͷϚγϯʹ৑௕ੑ͕ͳ͘ɺμ΢ϯλΠϜ͕
 ൃੜ͠΍͘͢ɺॏཁͳ࡞ۀ͕தஅ͞Ε͍ͯͨɻμ΢ϯλΠϜͷ ݪҼ͸σΟεΫ༰ྔෆ଍΍04΍πʔϧͷΞοϓσʔτͳͲɻ ౰࣌ͷߏ੒͸ɺ8JOEPXTNBD04ͦΕͧΕͰNBTUFS͕
 Ұ୆ͷΈͷߏ੒ɻ ݱ৔ͷ՝୊  ͳΔ΂͘μ΢ϯλΠϜͷӨڹͷগͳ͍໷ؒʹ࣮ࢪ͢ΔͨΊ୲౰ऀ΁ͷෛ୲΋େ͖͍ɻ  8JOEPXT޲͚ͷϏϧυ͸8JOEPXTϚγϯ্ͰɺJ04NBD04޲͚ͷ
 Ϗϧυ͸NBD04্Ͱ࣮ࢪ͢Δ͜ͱΛҙਤͨ͠ߏ੒ɻ

Slide 38

Slide 38 text

#denatechcon   ࣍ͷΑ͏ʹ+FOLJOTΫϥελΛ࠶ߏங

Slide 39

Slide 39 text

#denatechcon   ߏஙͨ͠+FOLJOTΫϥελͷߏ੒ +FOLJOTNBTUFS 8JOEPXTBHFOU 8JOEPXTBHFOU NBD04BHFOU NBD04BHFOU (PPHMF$MPVE1MBUGPSN ։ൃऀ ࣾ಺ωοτϫʔΫ ࣾ಺ωοτϫʔΫ )5514 +/-1 1FSTJTUFOU%JTL ੒Ռ෺

Slide 40

Slide 40 text

#denatechcon   +FOLJOTNBTUFS 8JOEPXTBHFOU 8JOEPXTBHFOU NBD04BHFOU NBD04BHFOU (PPHMF$MPVE1MBUGPSN ։ൃऀ ࣾ಺ωοτϫʔΫ ࣾ಺ωοτϫʔΫ )5514 +/-1 1FSTJTUFOU%JTL ੒Ռ෺ ແఀࢭͰεέʔϧՄೳ ߏஙͨ͠+FOLJOTΫϥελͷߏ੒

Slide 41

Slide 41 text

#denatechcon   +FOLJOTNBTUFS 8JOEPXTBHFOU 8JOEPXTBHFOU NBD04BHFOU NBD04BHFOU (PPHMF$MPVE1MBUGPSN ։ൃऀ ࣾ಺ωοτϫʔΫ ࣾ಺ωοτϫʔΫ )5514 +/-1 1FSTJTUFOU%JTL ੒Ռ෺ ৑௕Խ ߏஙͨ͠+FOLJOTΫϥελͷߏ੒

Slide 42

Slide 42 text

#denatechcon   +FOLJOTNBTUFS Քಇத 8JOEPXTBHFOU Քಇத Քಇத (PPHMF$MPVE1MBUGPSN ։ൃऀ ࣾ಺ωοτϫʔΫ ࣾ಺ωοτϫʔΫ )5514 +/-1 1FSTJTUFOU%JTL ੒Ռ෺ 04Ξοϓσʔτத ߏஙͨ͠+FOLJOTΫϥελͷߏ੒ ϩʔϦϯάΞοϓσʔτ͕Մೳ ੾அ

Slide 43

Slide 43 text

#denatechcon   ෳ਺ͷBHFOUΛಉ͡ঢ়ଶʹอͭඞཁ͕͋ΔͨΊɺ
 NBD048JOEPXT޲͚ʹ"OTJCMF1MBZCPPLΛ༻ҙɻ 9DPEF΍6OJUZͳͲͷ։ൃ؀ڥΛࣗಈతʹߏஙͰ͖Δɻ ෳ਺ͷBHFOUͷߏ੒؅ཧ  อकίετͷ؍఺͔Βɺຊདྷ͸ίϯςφٕज़ͳͲʹΑΔ*NNVUBCMF
 *OGSBTUSVDUVSFΛ໨ࢦ͔ͨͬͨ͠ɻͨͩɺNBD04ΛήετʹͰ͖Δ
 ίϯςφٕज़ͷ"OLB͕ݕূ్தͰؒʹ߹Θͣɺࠓ͸༏ઌ౓ͷ໰୊Ͱະಋೖɻ

Slide 44

Slide 44 text

#denatechcon   ͜ͷ1MBZCPPLࣗମͷϦϑΝΫλΛ༰қʹ͢ΔͨΊɺ
 04͝ͱʹ7BHSBOU#PYʢԾ૝ΠϝʔδʣΛ४උͯ͠ ݕূͷαΠΫϧΛ؆୯ʹճͤΔΑ͏ʹͨ͠ɻ "OTJCMF1MBZCPPLͷݕূ Ծ૝؀ڥ Ծ૝؀ڥ Ծ૝؀ڥ "OTJCMF1MBZCPPLͷ
 ॳճద༻Λࢼݧ WBHSBOUVQͰ
 Ծ૝؀ڥΛ࡞੒ ࠶ద༻Ͱႈ౳ੑΛࢼݧ WBHSBOUEFTUSPZͰ
 Ծ૝؀ڥΛഁغ

Slide 45

Slide 45 text

#denatechcon   ͜ͷݕূαΠΫϧΛָʹ͢ΔͨΊɺ5FTU,JUDIFO΋
 ར༻Ͱ͖ΔΑ͏ʹ͍ͯ͠Δɻͨͩ͠ɺͭͳ͗෦෼ͷ
 σόοά͕໘౗ͳͨΊɺϓϥάΠϯ։ൃΛݕ౼தɻ 5FTU,JUDIFOʹΑΔݕূͷ༰қԽ Ծ૝؀ڥ Ծ૝؀ڥ Ծ૝؀ڥ LJUDIFODPOWFSHF
 ʢॳճద༻ͷ֬ೝʣ LJUDIFODSFBUF
 ʢԾ૝؀ڥͷ࡞੒ʣ LJUDIFODPOWFSHF
 ʢႈ౳ੑͷ֬ೝʣ LJUDIFOEFTUSPZ
 ʢԾ૝؀ڥͷഁغʣ

Slide 46

Slide 46 text

#denatechcon   +FOLJOTBHFOUͷ௥Ճ͕௿ίετͰࡁΉΑ͏ʹͳΓɺ
 μ΢ϯλΠϜͷൃੜΛݮΒ͍ͤͯΔɻ ͨͩ͠ɺσΟεΫ༰ྔෆ଍໰୊͸ผͷ৔ॴͰ໰୊͕
 ݦࡏԽ͍ͯ͠ΔɻNBTUFSʹอଘ͞ΕΔ੒Ռ෺Ͱ͸ͳ͘ɺ BHFOU্ʹଘࡏ͢Δதؒੜ੒෺͕BHFOUͷσΟεΫΛ
 ѹഭ͢Δ໰୊͕ൃੜ͍ͯͯ͠ରԠΛݕ౼͍ͯ͠Δɻ ੒Ռͱ՝୊

Slide 47

Slide 47 text

#denatechcon   ݱࡏͷ+FOLJOTͷ࠷େͷ՝୊͸ɺIΛ௒͑Δ௕େͳ
 Ϗϧυ࣌ؒͷ୹ॖʹҠ͍ͬͯͯɺDDBDIFͳͲΛݕূதɻ ·ͨɺ+FOLJOTNBTUFSଆͷΞοϓσʔτͰ͸·ͩ
 μ΢ϯλΠϜ͕ൃੜͯ͠͠·͏͕ɺ͜ΕΛ๷͙ͨΊʹ
 #MVF(SFFO%FQMPZNFOUͷखॱΛཱ͍֬ͨ͠ɻ ࠓޙͷల๬

Slide 48

Slide 48 text

#denatechcon   #MVF(SFFO%FQMPZNFOUͷΠϝʔδਤ ՔಇதͷNBTUFS 8JOEPXTBHFOU 8JOEPXTBHFOU NBD04BHFOU NBD04BHFOU (PPHMF$MPVE1MBUGPSN ։ൃऀ ࣾ಺ωοτϫʔΫ ࣾ಺ωοτϫʔΫ )5514 +/-1 %JTLͷίϐʔ ੒Ռ෺ ݕূதͷNBTUFS ӡ༻ऀ

Slide 49

Slide 49 text

#denatechcon σόοάΛॿ͚Δ
 Ϟδϡʔϧͷ։ൃ   ൒೥લͷऔΓ૊Έ ൃ ද Ͱ ͸ ׂ Ѫ

Slide 50

Slide 50 text

#denatechcon   ςελʔʹΑΔಈ࡞ݕূ࣌ʹɺ։ൃ༻ͷσόοάϩά͕
 ඞཁʹͳΔ͕ɺςελʔ͕खಈͰΞοϓϩʔυ͢Δͷ͕
 खؒͩͬͨɻ·ͨɺ໰୊͕ى͖͔ͯΒϩάΛఏग़͢Δ
 ϑϩʔͩͬͨͨΊɺજࡏతͳ໰୊ͷൃݟ͕೉͍͠ɻ ݱ৔ͷ՝୊ ղܾํ๏ ϦϞʔταʔόʔ΁ϩάΛूੵ͢ΔϥΠϒϥϦΛ։ൃɻ ൃ ද Ͱ ͸ ׂ Ѫ

Slide 51

Slide 51 text

#denatechcon   طଘͷ$ ͷίʔυϕʔεʹϦϞʔτϩάػೳΛ
 ௿ίετͰಋೖ͔ͨͬͨͨ͠Ίɻ ط੒ͷαʔϏε΋ݕ౼͕ͨ͠ɺϚϧνϓϥοτϑΥʔϜͷ ରԠঢ়گ͕ෆಁ໌ͩͬͨΓɺ୺຤ͷҰ࿈ͷϩάΛ࣌ܥྻͰ
 ฒ΂ͯ؍࡯Ͱ͖ͳ͍ɺϩάͷ౎౓ૹ৴ͩͱੑೳཁٻΛ
 ຬͨͤͳ͍ͳͲͷϛεϚον͕͋ͬͨɻ ط੒αʔϏεΛબ͹ͳ͔ͬͨཧ༝ ൃ ද Ͱ ͸ ׂ Ѫ

Slide 52

Slide 52 text

#denatechcon Ճ͑ͯɺಠ࣮ࣗ૷͸ͦ͜·Ͱ
 ۤ࿑͠ͳ͍ͱࢥ͍ͬͯͨʜ   ൃ ද Ͱ ͸ ׂ Ѫ

Slide 53

Slide 53 text

#denatechcon ͳ͓ɺ࣮૷͸ͦ͜·Ͱ
 ۤ࿑͠ͳ͍ͱࢥ͍ͬͯͨʜ   େ͖ͳצҧ͍ͩͬͨʂ ൃ ද Ͱ ͸ ׂ Ѫ

Slide 54

Slide 54 text

#denatechcon   8JOEPXT"OESPJEJ04NBD04ͷ͢΂ͯͰϑΝΠϧͷ
 ಡΈॻ͖ͱ௨৴ΛͰ͖ΔΑ͏ʹ࣮૷͠ɺ͜ΕΒͷ
 Ϗϧυ؀ڥΛߏங͢Δͷ͸૝ఆҎ্ʹෳࡶͩͬͨɻ ͨͱ͑͹ɺίϯύΠϥ͸গͳ͘ͱ΋.47$ͱ$MBOHΛ
 ҙࣝ͢Δඞཁ͕͋Γɺ$MBOHͰ΋"OESPJEͱJ04Ͱ
 ϏϧυςετͷίϚϯυ΍σόοάํ๏͕͔ͳΓҧ͏ɻ ͜ͷΑ͏ʹ޿͍஌ࣝΛ೺Ѳ͍ͯ͠ͳ͍ͱ࣮૷͕Ͱ͖ͳ͍ɻ ૝૾Ͱ͖͍ͯͳ͔࣮ͬͨ૷ͷ೉͠͞ ൃ ද Ͱ ͸ ׂ Ѫ

Slide 55

Slide 55 text

#denatechcon   Ճ͑ͯɺ֤ϓϥοτϑΥʔϜ্Ͱͷݕূج൫ͷཱ֬΋
 $*ߏங͔Βख୳ΓͷελʔτͰɺ͜ΕΒ͕੔͏ࠒʹ͸
 ౰ॳͷݟੵ΋ΓҎ্ͷ͕࣌ؒܦաͯ͠͠·͍ͬͯͨʜ ݕূ؀ڥߏஙͷ೉͠͞ ൃ ද Ͱ ͸ ׂ Ѫ

Slide 56

Slide 56 text

#denatechcon   ։ൃ͸୹ظؒͰ׬ྃ͢Δͱ༧૝͍ͯͨ͠ͷͰɺ
 ࠓճ͸ݸਓϓϨʔͰૉૣ͘׬੒ͤ͞ɺ͋ͱͰ
 υΩϡϝϯτΛॻ͘ͷ͕ϕετͱࢥ͍ͬͯͨɻ ࣮ࡍʹ͸୲౰ऀͰ͋Δࣗ෼͕ର֎ൃදͰ
 ๩ࡴ͞Ε్ͯதͰਐߦ͕ࢭ·ͬͯ͠·ͬͨɻ ଐਓੑͷ੍ޚͷࣦഊ ൃ ද Ͱ ͸ ׂ Ѫ

Slide 57

Slide 57 text

#denatechcon   Ұ෦ͷ04޲͚ͷίʔυϕʔεͱͷ݁߹ࢼݧ͸
 ׬ྃͰ͖͍͕ͯͨɺ͜ͷ··ͷϖʔεͰ͸
 ϦϞʔτϩά͕༗༻ͳ࣌ظΑΓ׬੒͕஗ΕΔ
 ͜ͱ͔Β։ൃΛதஅɻ ࢒೦ͳ݁Ռͱͳ͕ͬͨɺࣦഊ͔ΒֶΜͩɻ ੒Ռ ൃ ද Ͱ ͸ ׂ Ѫ

Slide 58

Slide 58 text

#denatechcon ৼΓฦΓ   ൒೥લͷऔΓ૊Έ

Slide 59

Slide 59 text

#denatechcon   w Ձ஋Λಧ͚ΔͨΊʹݱ৔ͷ՝୊ͷநग़ͱ
 ༏ઌॱҐ͚͔ͮΒ࢝Ίɺ੒ޭ΋ࣦഊ΋ͨ͠ w ࠷ऴ඼࣭ΛߴΊΔՁ஋͋Δςετͱͯ͠
 ඳըܥͷϦάϨογϣϯݕ஌ج൫Λߏங w ςετͷͭΒ͞Λͳͨ͘͢Ίʹ
 μ΢ϯλΠϜͷ୹͍+FOLJOTΫϥελΛߏங w ݡ͍ςετͷͨΊʹϦϞʔτϩάΛ։ൃʢஅ೦ʣ

Slide 60

Slide 60 text

#denatechcon ݱࡏͷऔΓ૊Έ   ୈষ

Slide 61

Slide 61 text

#denatechcon എܠ   ݱࡏͷऔΓ૊Έ

Slide 62

Slide 62 text

#denatechcon   ૊৫ͷνʔϜ࠶ฤͰ্൒ظͷऔΓ૊Έ͔Β཭ΕΔ͜ͱʹɻ
 ͨͩɺ཭Ε͔ͯΒৼΓฦΔͱͭͷֶͼ͕͋ͬͨɿ w طʹશମతͳઃܭ͕ݻ·ͬͯ͠·͍ͬͯΔஈ֊͔Β
 ࢀՃͯ͠΋ɺඅ༻ରޮՌͷߴ͍ςετͷಋೖ͸೉͍͠ w ࣗ෼ࣗ਎ʹήʔϜΫϥΠΞϯτ։ൃͷ஌͕ࣝ଍Γ͓ͯΒͣɺ ରԠ͸৔౰ͨΓతʹͳΓຊ࣭తͳରࡦΛଧͯͳ͔ͬͨ

Slide 63

Slide 63 text

#denatechcon   ͜ͷֶͼ͔ΒԼ൒ظͰ͸࣍ͷํ޲ੑΛఆΊͨɿ ઃܭஈ֊ͷॳظʹඞཁͳήʔϜΫϥΠΞϯτ։ൃͷ
 ஌ࣝΛ֫ಘ͠ɺܗࣜ஌ʹ·ͱΊͯଈԠଶ੎Λ੔͑Δɻ ܗࣜ஌ʹ·ͱΊΔͱɺ੡඼ʹͳΔ͔Ͳ͏͔ෆಁ໌ͳஈ֊ͷ
 ϓϩτλΠϓͨͪʹ΋ว͘ޮՌΛൃشͰ͖Δɻ ਤ΍ݴ༿Ͱදݱ͞Εͨઆ໌ͷ͜ͱɻٯ͸৬ਓͷצͷΑ͏ͳ҉໧஌ɻ

Slide 64

Slide 64 text

#denatechcon औΓ૊Έͷํ਑   ݱࡏͷऔΓ૊Έ

Slide 65

Slide 65 text

#denatechcon   ܗࣜ஌ʹ·ͱΊΔ࡞ۀͷੑ࣭͸3%ʹۙ͘ͳΔͨΊɺ
 ผͷ3%ςʔϚ΋͋Θ໊ͤͯͰऔΓ૊Ή͜ͱʹɿ ήʔϜΫϥΠΞϯτྖҬͷઃܭͷֶशΛ݉Ͷͯɺ
 ޮՌతͳઃܭͱ୯ମςετͷܗࣜ஌Խ ୯ମςετΛ௥͍͔͚Δ͏ͪʹ໌Β͔ʹͳͬͨɺ
 ήʔϜ࢓༷ॻͷܽؕ໰୊ͷରॲͷܗࣜ஌Խ όάमਖ਼ͷࠩ෼͔ΒϦεΫՕॴΛ෼ੳͯ͠ɺ௿ϦεΫ࣌ ʹ2"࣌ͷςετέʔεΛ࡟ݮ͢Δج൫ͷ։ൃʢׂѪʣ   

Slide 66

Slide 66 text

#denatechcon   ܗࣜ஌ʹ·ͱΊΔ࡞ۀͷੑ࣭͸3%ʹۙ͘ͳΔͨΊɺ
 ผͷ3%ςʔϚ΋͋ΘͤͯऔΓ૊Ή͜ͱʹɿ ήʔϜΫϥΠΞϯτྖҬͷઃܭͷֶशΛ݉Ͷͯɺ
 ޮՌతͳઃܭͱ୯ମςετͷܗࣜ஌Խ ୯ମςετΛ௥͍͔͚Δ͏ͪʹ໌Β͔ʹͳͬͨɺ
 ήʔϜ࢓༷ॻͷܽؕ໰୊ͷରॲͷܗࣜ஌Խ όάमਖ਼ͷࠩ෼͔ΒϦεΫՕॴΛ෼ੳͯ͠ɺ௿ϦεΫ࣌ ʹ2"࣌ͷςετέʔεΛ࡟ݮ͢Δج൫ͷ։ൃʢׂѪʣ    ·ͣ͸୯ମςετͷऔΓ૊Έ͔Β঺հ

Slide 67

Slide 67 text

#denatechcon ήʔϜΫϥΠΞϯτ෼໺ͷ
 ୯ମςετͷ໛ࡧ   ݱࡏͷऔΓ૊Έ

Slide 68

Slide 68 text

#denatechcon   Ұൠʹޮ཰͕͍͍ͱ͍ΘΕΔಈ࡞֬ೝํ๏Ͱ͋Δ
 ʮ୯ମςετʯΛήʔϜΫϥΠΞϯτ։ൃͰࢼ͍ͨ͠ɻ લ৬Ͱ୯ମςετΛ࢖ͬͯ։ൃ଎౓Λେ͖͘޲্ͤͨ͞
 ܦݧ͕͋Γɺ͏·͘ϑΟοτ͢Ε͹։ൃ଎౓Λ্͛ΒΕΔ
 ͜ͱ͕Θ͔͍ͬͯΔʢϑΟοτ͢Δ͔Ͳ͏͔͸ޙड़ʣɻ Ϟνϕʔγϣϯ &&ςετ ݁߹ςετ ୯ମςετ ݁߹όάΛൃݟͰ͖Δ ݁߹όάΛݟམͱ͢ ϑΟʔυόοΫ͕஗͍ ϑΟʔυόοΫ͕଎͍ ݁߹όάΛݟ͚͍ͭͨ
 ͱ͖ʹ͚ͩ࢖͏ ୯ମςετͰ׬݁Ͱ͖Δ
 ͳΒͦͷํ͕Α͍

Slide 69

Slide 69 text

#denatechcon   ͋ΔΫϥε΍ؔ਺ͷಈ࡞ΛίʔυͰ֬ೝ͢Δ͜ͱɻ ୯ମςετͱ͸ public class ExampleBehaviourTest { [Test] public void TestDistance() { var vec1 = new Vector2(1.0f, 0.0f); var vec2 = new Vector2(0.0f, 1.0f); var distance = Vector2.Distance(vec1, vec2); Assert.AreApproximatelyEqual(distance, Mathf.Sqrt(2)); } } ͋·Γݱ࣮తͰͳ͍ྫ͕ͩ
 ͭͷϕΫτϧ   ͱ
   ͷڑ཭͕˽ʹͳΔ
 ͜ͱΛίʔυͰ֬ೝ͍ͯ͠Δɻ ॏཁͳͷ͸ɺ͜ͷछͷ֬ೝΛ
 ίʔυ͔ΒͰ͖Δ͜ͱɻ

Slide 70

Slide 70 text

#denatechcon   6OJUZʹ͓͚Δςετͷ࣮ߦํ๏ 8JOEPX(FOFSBM5FTU3VOOFSͰ
 ςετ༻ͷը໘Λ։͘ɻ

Slide 71

Slide 71 text

#denatechcon   6OJUZʹ͓͚Δςετͷ࣮ߦํ๏ ։͍ͨςετ༻ͷը໘ʹ͸ɺࠨͷΑ͏ʹઌ΄Ͳͷ
 ؔ਺TestDistance͕දࣔ͞Ε͍ͯΔɻ આ໌͸লུ͍ͯ͠Δ͕ɺ6OJUZͷςετʹ͸छྨ͕͋ͬͯɺ
 &EJU.PEFͱ1MBZ.PEF͕͋Δɻࠓճ࢖͍ͬͯΔͷ͸
 &EJU.PEFͷํͰɺಈ࡞͸଎੍͍͕ݶ͕͋Δɻ ৄ͍͠ηοτΞοϓํ๏͸5FTU3VOOFSͷެࣜϚχϡΞϧΛ
 ಡΉͱΑ͍ɻ

Slide 72

Slide 72 text

#denatechcon   6OJUZʹ͓͚Δςετͷ࣮ߦํ๏ ࠨ্ʹ͋Δ3VO"MMΛ࣮ߦ͢Δͱɺઌ΄Ͳͷ
 TestDistance͕࣮ߦ͞ΕΔɻ

Slide 73

Slide 73 text

#denatechcon   6OJUZʹ͓͚Δςετͷ࣮ߦํ๏   ͱ   ͷ݁Ռ͸࣮ࡍʹ˽ͳͷͰɺ
 ಈ࡞֬ೝ͸੒ޭ͢Δɻ ੒ޭ͢ΔͱɺࠨͷΑ͏ʹ྘ͷνΣοΫϚʔΫ͕ͭ͘ɻ

Slide 74

Slide 74 text

#denatechcon   ಈ࡞֬ೝʹࣦഊ͢Δ৔߹ [Test] public void TestWrong() { var vec1 = new Vector2(1.0f, 0.0f); var vec2 = new Vector2(0.0f, 1.0f); var distance = Vector2.Distance(vec1, vec2); Assert.AreApproximatelyEqual(distance, 100); } ಉ͡Α͏ʹ   ͱ   ͷ
 ڑ཭Λܭࢉ͍ͯ͠Δɻ
 ͨͩɺࣦഊ͢Δέʔε΋
 ͔֬ΊΔͨΊʹɺ͋͑ͯ
 ؒҧͬͨ݁Ռͱൺֱ͢Δ ਖ਼͘͠͸˽

Slide 75

Slide 75 text

#denatechcon   6OJUZʹ͓͚Δςετͷ࣮ߦํ๏ ௥Ճͨ͠ಈ࡞֬ೝͷίʔυ͸ؒҧ͍ͬͯΔͷͰɺ
 ࠨͷΑ͏ʹ੺͍ࣦഊϚʔΫ͕ͭ͘ɻ

Slide 76

Slide 76 text

#denatechcon   ίϚϯυϥΠϯ͔Β΋࣮ߦͰ͖Δ $ /Applications/Unity.app/Contents/MacOS/Unity \ -runEditorTests \ -projectPath ./ \ -batchmode $ file TestResults-*.xml TestResults-xxxxx.xml: XML 1.0 document text, ASCII text, ίϚϯυϥΠϯ͔Β࣮ߦͰ͖Δͱ͍͏͜ͱ͸ɺ+FOLJOTͳͲ͔Β
 ࣗಈͰಈ࡞֬ೝΛ࣮ߦ͠΍͍͢ɻͭ·Γఆظతͳ࣮ߦͳͲ΋Մೳɻ 6OJUZ)VCΛ࢖͍ͬͯΔ৔߹͸ɺ
 ࣮ߦϑΝΠϧͷύε͕ҟͳΔͷͰ஫ҙɻ

Slide 77

Slide 77 text

#denatechcon   ͔͜͜Β͸໛ࡧதͷ࿩ʹͳΓ·͢ ݱ ࡏ 
 ໛ ࡧ த ໛ࡧதͳͨΊɺਖ਼͘͠ͳ͍ચ࿅͞Ε͍ͯͳ͍෦෼΋ؚ·Ε·͢ɻ
 ήʔϜ෼໺ͷํ͸౰ͨΓલͱࢥ͏෦෼΋͋Δ͔΋͠Ε·ͤΜɻ

Slide 78

Slide 78 text

#denatechcon   ୯ମςετ͕ϑΟοτ͢Δ͔Ͳ͏͔ͷٞ࿦ ͜ΕΛߟ͑Δʹ͸ɺήʔϜͷίΞ෦෼ʢΠϯήʔϜʣͱ
 ϝχϡʔը໘ͳͲʢΞ΢τήʔϜʣͰେ͖͘ࣄ৘͕
 ҟͳΔͷͰ෼͚ͯߟ͑ͨํ͕Α͍ɻ Ξ΢τήʔϜ͸୯ମςετΛ͠΍͍͢ͱ͍ΘΕ͍ͯΔɻ ςετ͠΍͍͢ઃܭύλʔϯΛ࡞Ε͹ɺ։ൃ଎౓Λ
 ߴΊΒΕΔՄೳੑ͕͋Δɻ ݱ ࡏ 
 ໛ ࡧ த

Slide 79

Slide 79 text

#denatechcon   Ξ΢τήʔϜͷ୯ମςετ͠΍͢͞ ݱ ࡏ 
 ໛ ࡧ த ͜͜Ͱ૝ఆ͍ͯ͠Δͷ͸ʮ͋Δ࣌ؒ΍Πϕϯτ഑৴࣌
 ͷΈಋઢ͕༗ޮʹͳΔʯͱ͍ͬͨϩδοΫͷݕূɻ ͜ͷछͷϩδοΫ͸ύλʔϯ਺͕ଟ͍͕ɺ
 ୯ମςετ͸؆୯ͳ͜ͱ͕ଟ͍ɻ ͳ͓ɺ୯ମςετʹൺ΂ͯखಈϓϨΠͰͷ֬ೝ͕
 ໘౗ʢ࣌ࠁґଘɺ͋Γ͑Δύλʔϯ͕ଟ͍ʣͳͨΊɺ
 ಛʹ୯ମςετͷޮՌͷߴ͍෦෼ͩͱߟ͍͑ͯΔɻ

Slide 80

Slide 80 text

#denatechcon   ͜Εʹର͠ɺΠϯήʔϜͷํ͸୯ମςετͮ͠Β͍ɺ
 ͋Δ͍͸ͯ͠΋ҙຯ͕ͳ͍ͱ͍ΘΕ͍ͯΔɻ ࣮ࡍͷίʔυΛ؆୯ʹ෼ੳͨ͠ͱ͜Ζɺͭͷ೉͕͠͞
 ൑໌͍ͯ͠Δɿ  ୯ମςετͰ͸ݟ͚ͭΒΕͳ͍݁߹όά͕ଟ͍  ਓؒͷײੑͰ͔͠൑அͰ͖ͳ͍Α͏ͳݕূ͕ଟ͍ ݱ ࡏ 
 ໛ ࡧ த ΠϯήʔϜͷ୯ମςετ͠΍͢͞

Slide 81

Slide 81 text

#denatechcon   ΠϯήʔϜͷ೉݁͠͞߹όάͷ໰୊ ݁߹όάͱ͸ɺෳ਺ͷΦϒδΣΫτͷ૊Έ߹ΘͤͰൃੜ͢Δ όάͷ͜ͱɻྫ͑͹ɺ਺ेݸͷΦϒδΣΫτΛ഑ஔ͠ͳ͍ͱ
 ࠶ݱ͠ͳ͍όάͳͲɻ ͜ΕΛ୯ମςετͷΑ͏ʹࣗಈͰݟ͚ͭΑ͏ͱ͢Δͱɿ w ඞཁͳঢ়ଶΛ࠶ݱ͢ΔͨΊͷେྔʹίʔυ͕ඞཁ w ແؔ܎ͳมߋͰյΕ΍͘͢อकίετ͕ߴ͍ ݱ ࡏ 
 ໛ ࡧ த

Slide 82

Slide 82 text

#denatechcon   ΠϯήʔϜͷ೉͠͞ײੑͷ໰୊ ୯ମςετͷΑ͏ͳࣗಈతͳςετͰ͸ɺײੑͰ͔͠
 Θ͔Βͳ͍൑அΛͰ͖ͳ͍ɻ ͨͱ͑͹ɺʮεϜʔζʹಈ͘ʯͱ͍͏ײੑϕʔεͷ൑அ͸
 ͦͷ··Ͱ͸ࣗಈతͳςετΛͰ͖ͳ͍ɻ ͦ͜Ͱɺ͜ΕΛʮ'14͕ᮢ஋ΑΓখ͘͞ͳΒͳ͍ʯ΍
 ʮϝϞϦΛແବʹফඅ͠ͳ͍ʯͳͲͷɺίʔυ͔Β
 ൑அͰ͖ΔΑ͏ͳࢦඪʹམͱ͜͠Ή޻෉͕ඞཁʹͳΔɻ ݱ ࡏ 
 ໛ ࡧ த

Slide 83

Slide 83 text

#denatechcon   ΠϯήʔϜͷ೉͠͞·ͱΊ ୯ମςετͰ͸ݟ͚ͭΒΕͳ͍݁߹όά͕ଟ͍ɻ ݁߹όάΛݟ͚ͭΒΕΔΑ͏ʹͯ͠΋໰୊͕͋Δɿ w ঢ়گ࠶ݱͷίʔυ͕େྔʹඞཁʹͳΔ w ແؔ܎ͳมߋͰյΕ΍͍͢ ਓؒͷײੑͰ͔͠൑அͰ͖ͳ͍Α͏ͳݕূ͕ଟ͍ɻ ίʔυͰ൑அͰ͖Δࢦඪʹམͱ͢ඞཁ͕͋Δɻ ݱ ࡏ 
 ໛ ࡧ த  

Slide 84

Slide 84 text

#denatechcon   ΍͍ͬͯΔ͜ͱ·ͱΊ Ξ΢τήʔϜ ୯ମςετ͠΍͍͢ઃܭύλʔϯͷ໛ࡧͱܗࣜԽɻ ݱ ࡏ 
 ໛ ࡧ த ΠϯήʔϜ ݁߹όάͷςετΛॻ͖΍͘͢͢ΔͨΊͷ޻෉
 ʢঢ়ଶ࠶ݱͷ؆қԽͱมߋ΁ͷݎ࿚Խʣͱɺ
 ίʔυͰදݱ͠΍͍͢ײੑͷࢦඪͷ໛ࡧͱܗࣜԽɻ

Slide 85

Slide 85 text

#denatechcon   ۩ମతͳίʔυΛ঺հͰ͖Δ
 Α͏ʹӶҙऔΓ૊Έதʜʂ ݱ ࡏ 
 ໛ ࡧ த

Slide 86

Slide 86 text

#denatechcon   ܗࣜ஌ʹ·ͱΊΔ࡞ۀͷੑ࣭͸3%ʹۙ͘ͳΔͨΊɺ
 ผͷ3%ςʔϚ΋͋ΘͤͯऔΓ૊Ή͜ͱʹɿ ήʔϜΫϥΠΞϯτྖҬͷઃܭͷֶशΛ݉Ͷͯɺ
 ޮՌతͳઃܭͱ୯ମςετͷܗࣜ஌Խ ୯ମςετΛ௥͍͔͚Δ͏ͪʹ໌Β͔ʹͳͬͨɺ
 ήʔϜ࢓༷ॻͷܽؕ໰୊ͷରॲͷܗࣜ஌Խ όάमਖ਼ͷࠩ෼͔ΒϦεΫՕॴΛ෼ੳͯ͠ɺ௿ϦεΫ࣌ ʹ2"࣌ͷςετέʔεΛ࡟ݮ͢Δج൫ͷ։ൃʢׂѪʣ    ࣍͸͜Ε·Ͱͷ୯ମςετͱ͸ผͷऔΓ૊ΈΛ঺հ

Slide 87

Slide 87 text

#denatechcon ήʔϜ෼໺ʹ͓͚Δ
 ܗࣜख๏ͷ໛ࡧ   ݱࡏͷऔΓ૊Έ

Slide 88

Slide 88 text

#denatechcon   ӡ༻λΠτϧͷࢧ഑తͳ໰୊Ͱ͋ΔɺήʔϜ࢓༷ॻͷ
 ໰୊ʢߟྀ࿙Εهࡌ࿙Εໃ६౳ʣʹ͍ͭͯղܾΛ
 ໛ࡧͯ͠΄͍͠ͱ͍͏ཁ๬͕͋ͬͨͷ͕͖͔͚ͬɻ ͦ͜Ͱɺ໌֬ͰݫີͳҙຯΛ΋ͭݴޠΛ͔ͭͬͯ
 ࢓༷Λهड़͢Δܗࣜख๏ͷద༻ͱ࣮༻ੑௐࠪΛ
 ͢Δ͜ͱʹͳͬͨɻ Ϟνϕʔγϣϯ

Slide 89

Slide 89 text

#denatechcon   ࢓༷ΛݫີͰ໌֬ʹهड़͢Δख๏΍ɺ͜ΕͰهड़͞Εͨ
 ઃܭͷੑ࣭Λػցతʹݕূ͢Δख๏ͷ૯শɻ ͨͱ͑͹ɺ1SPNFMBͱ͍͏ݴޠͰฒྻಈ࡞͢ΔγεςϜͷ
 ࢓༷Λهड़͢ΔͱɺσουϩοΫ΍ϥΠϒϩοΫΛ
 ى͜͞ͳ͍ͱ͍ͬͨੑ࣭ͳͲΛอূͰ͖Δɻ ܗࣜख๏ͱ͸

Slide 90

Slide 90 text

#denatechcon   ͔͜͜Β͸໛ࡧதͷ࿩ʹͳΓ·͢ ݱ ࡏ 
 ໛ ࡧ த ܗࣜख๏ͷΞϓϩʔν΍ίʔυʹΠέͯͳ͍෦෼͕
 ͋Δ͔΋͠Ε·ͤΜ͕ɺ໛ࡧதͳͷͰ͝༰͍ࣻͩ͘͞

Slide 91

Slide 91 text

#denatechcon   औΓ૊ΈͷΠϝʔδͱͯ͠ɺήʔϜ࢓༷ͷ
 ߟྀ࿙ΕΛܗࣜख๏Ͱͳ͘͢ྫΛ঺հ ݱ ࡏ 
 ໛ ࡧ த

Slide 92

Slide 92 text

#denatechcon   ήʔϜʹ͓͚Δ࢓༷ͷ໰୊ͷྫ Ϙεͷߦಈύλʔϯͷ࢓༷ɿ w )1͕ҎԼͳΒม਎ w )1͕ʹͳͬͨΒࢮ๢ ͜ͷ࢓༷ʹ͸ߟྀ࿙Εͷ໰୊͕͋Δɻ ݱ ࡏ 
 ໛ ࡧ த

Slide 93

Slide 93 text

#denatechcon   Ϙεͷߦಈύλʔϯͷ࢓༷ɿ w )1͕ҎԼͳΒม਎ w )1͕ʹͳͬͨΒࢮ๢ ͜ͷ࢓༷ʹ͸ߟྀ࿙Εͷ໰୊͕͋Δɻ ήʔϜʹ͓͚Δ࢓༷ͷ໰୊ͷྫ ݱ ࡏ 
 ໛ ࡧ த ΋͠ɺҰܸͰ)1͕ʹ͞Εͯ͠·ͬͨΒɺ
 ม਎͢ΔͷͩΖ͏͔ɺ͠ͳ͍ͷͩΖ͏͔ʜʁ ͜Ε͕ߟྀ͞Ε͍ͯͳ͍ͷͰɺม਎͔ͯ͠Β
 ࢮ๢͢Δͷ൱͔͕໌֬Ͱ͸ͳ͍

Slide 94

Slide 94 text

#denatechcon   Ϙεͷߦಈύλʔϯͷ࢓༷ɿ w )1͕ҎԼͳΒม਎ w )1͕ʹͳͬͨΒࢮ๢ ͜ͷ࢓༷ʹ͸ߟྀ࿙Εͷ໰୊͕͋Δɻ ήʔϜʹ͓͚Δ࢓༷ͷ໰୊ͷྫ ݱ ࡏ 
 ໛ ࡧ த ͜ͷ࣌఺Ͱاըऀ͸ɺϘε͸ม਎͔ͯ͠Β
 ࢮ๢͢Δ͜ͱΛظ଴͍ͯ͠Δͱ͢Δ ͨͩɺ࢓༷ͷᐆດ͞ʹ·ͩؾ͚͓ͮͯΒͣ
 ߟྀ͔Β࿙Ε͍ͯΔঢ়گΛԾఆ͢Δ

Slide 95

Slide 95 text

#denatechcon   ܗࣜख๏ͷ׆༻Πϝʔδɿ 1SPNFMBͰ࢓༷ΛৄࡉԽ͢Δ ߟྀ࿙ΕΛݟ͚ͭΔ ݱ ࡏ 
 ໛ ࡧ த  

Slide 96

Slide 96 text

#denatechcon   ܗࣜख๏ͷ׆༻Πϝʔδɿ 1SPNFMBͰ࢓༷ΛৄࡉԽ͢Δ ߟྀ࿙ΕΛݟ͚ͭΔ ݱ ࡏ 
 ໛ ࡧ த   ·ͣ͸࢓༷ͷৄࡉԽ͔Β

Slide 97

Slide 97 text

#denatechcon   mtype:bossMode = { Normal, Transformed } mtype:bossHp = { Full, GreaterThanHalf, LessThanHalf, Dead } inline Attack(bossHp) { if :: (bossHp > Dead) -> bossHp = bossHp - 1 :: (bossHp > LessThanHalf) -> bossHp = bossHp - 2 :: (bossHp > GreaterThanHalf) -> bossHp = bossHp - 3 fi } ݱ ࡏ 
 ໛ ࡧ த

Slide 98

Slide 98 text

#denatechcon   mtype:bossMode = { Normal, Transformed } mtype:bossHp = { Full, GreaterThanHalf, LessThanHalf, Dead } inline Attack(bossHp) { if :: (bossHp > Dead) -> bossHp = bossHp - 1 :: (bossHp > LessThanHalf) -> bossHp = bossHp - 2 :: (bossHp > GreaterThanHalf) -> bossHp = bossHp - 3 fi } ݱ ࡏ 
 ໛ ࡧ த Ϙεͷঢ়ଶͷఆٛɻ௨ৗͱม਎ޙͷ͕ͭ͋Δ

Slide 99

Slide 99 text

#denatechcon   mtype:bossMode = { Normal, Transformed } mtype:bossHp = { Full, GreaterThanHalf, LessThanHalf, Dead } inline Attack(bossHp) { if :: (bossHp > Dead) -> bossHp = bossHp - 1 :: (bossHp > LessThanHalf) -> bossHp = bossHp - 2 :: (bossHp > GreaterThanHalf) -> bossHp = bossHp - 3 fi } ݱ ࡏ 
 ໛ ࡧ த Ϙεͷ)1ͷఆٛɻϑϧɺ൒෼Ҏ্ɺ൒෼ҎԼɺࢮ๢ͷ͕ͭ͋Δ

Slide 100

Slide 100 text

#denatechcon   mtype:bossMode = { Normal, Transformed } mtype:bossHp = { Full, GreaterThanHalf, LessThanHalf, Dead } inline Attack(bossHp) { if :: (bossHp > Dead) -> bossHp = bossHp - 1 :: (bossHp > LessThanHalf) -> bossHp = bossHp - 2 :: (bossHp > GreaterThanHalf) -> bossHp = bossHp - 3 fi } ݱ ࡏ 
 ໛ ࡧ த ඃ߈ܸʹΑΔϘεͷ)1มԽɻ͜ͷJGจͷҙຯ͸ී௨ͷݴޠͱ͸ҟͳΓɺ
 ׅހ಺ͷ৚݅Λຬͨ͢ʮ͍ͣΕ͔ʯͷจ͕࣮ߦ͞ΕΔͱ͍͏͜ͱɻͲΕ͕
 ࣮ߦ͞ΕΔ͔͸ඇܾఆతʹͳ͍ͬͯΔʢμϝʔδྔ͕೚ҙͳ͜ͱΛදݱʣ

Slide 101

Slide 101 text

#denatechcon   ݱ ࡏ 
 ໛ ࡧ த active proctype Battle() { mtype:bossMode bossMode = Normal mtype:bossHp bossHp = Full do :: Attack(bossHp) od assert false } // TODO: ͜͜ʹ͸ότϧͷࢮ๢/ม਎൑ఆΛهड़͢Δɻ // ͜͜ʹ͸ 2 ௨Γͷॻ͖ํ͕͋Δɻ

Slide 102

Slide 102 text

#denatechcon   active proctype Battle() { mtype:bossMode bossMode = Normal mtype:bossHp bossHp = Full do :: Attack(bossHp) od assert false } // TODO: ͜͜ʹ͸ότϧͷࢮ๢/ม਎൑ఆΛهड़͢Δɻ // ͜͜ʹ͸ 2 ௨Γͷॻ͖ํ͕͋Δɻ ࣮ࡍͷότϧͷྲྀΕͷఆٛ ݱ ࡏ 
 ໛ ࡧ த

Slide 103

Slide 103 text

#denatechcon   active proctype Battle() { mtype:bossMode bossMode = Normal mtype:bossHp bossHp = Full do :: Attack(bossHp) od assert false } // TODO: ͜͜ʹ͸ότϧͷࢮ๢/ม਎൑ఆΛهड़͢Δɻ // ͜͜ʹ͸ 2 ௨Γͷॻ͖ํ͕͋Δɻ ॳظঢ়ଶͷϘεΛɺະม਎ɺ)1ϑϧʹઃఆɻ ݱ ࡏ 
 ໛ ࡧ த

Slide 104

Slide 104 text

#denatechcon   active proctype Battle() { mtype:bossMode bossMode = Normal mtype:bossHp bossHp = Full do :: Attack(bossHp) od assert false } // TODO: ͜͜ʹϘεͷࢮ๢/ม਎൑ఆΛهड़͢Δɻ // ͦΕͧΕͷ൑ఆͷॱংͰ 2 ௨Γͷॻ͖ํ͕͋Δɻ ߈ܸΛ܁Γฦ͢ϧʔϓʢ50%0෦෼ͰCSFBL͞ΕΔ·Ͱ܁Γฦ͢ʣ ݱ ࡏ 
 ໛ ࡧ த

Slide 105

Slide 105 text

#denatechcon if :: (bossHp == Dead) -> break :: else -> skip fi   ݱ ࡏ 
 ໛ ࡧ த Ϙεͷ)1͕ %FBEঢ়ଶʣͳΒ߈ܸΛऴྃ͢Δ൑ఆ ࢮ๢൑ఆ ม਎൑ఆ if :: (bossHp <= LessThanHalf) -> bossMode = Transformed :: else -> skip fi Ϙεͷ)1͕ͳΒม਎͢Δ൑ఆ

Slide 106

Slide 106 text

#denatechcon if :: (bossHp == Dead) -> break :: else -> skip fi if :: (bossHp <= LessThanHalf) -> bossMode = Transformed :: else -> skip fi   ݱ ࡏ 
 ໛ ࡧ த ࢮ๢൑ఆΛઌʹ͢Δ৔߹ɿ if :: (bossHp <= LessThanHalf) -> bossMode = Transformed :: else -> skip fi 
 if :: (bossHp == Dead) -> break :: else -> skip fi ม਎൑ఆΛઌʹ͢Δ৔߹ɿ ࢮ๢൑ఆ ม਎൑ఆ ࢮ๢൑ఆ ม਎൑ఆ

Slide 107

Slide 107 text

#denatechcon if :: (bossHp == Dead) -> break :: else -> skip fi if :: (bossHp <= LessThanHalf) -> bossMode = Transformed :: else -> skip fi   ݱ ࡏ 
 ໛ ࡧ த ࢮ๢൑ఆΛઌʹ͢Δ৔߹ɿ if :: (bossHp <= LessThanHalf) -> bossMode = Transformed :: else -> skip fi 
 if :: (bossHp == Dead) -> break :: else -> skip fi ม਎൑ఆΛઌʹ͢Δ৔߹ɿ ࢮ๢൑ఆ ม਎൑ఆ ࢮ๢൑ఆ ม਎൑ఆ ͪ͜ΒΛࢼ͢

Slide 108

Slide 108 text

#denatechcon   active proctype Battle() { mtype:bossMode bossMode = Normal mtype:bossHp bossHp = Full do :: Attack(bossHp) if :: (bossHp == Dead) -> break :: else -> skip fi if :: (bossHp <= LessThanHalf) -> bossMode = Transformed :: else -> skip fi od assert false } ݱ ࡏ 
 ໛ ࡧ த 50%0෦෼Λࢮ๢൑ఆɺม਎൑ఆͷॱͰهड़

Slide 109

Slide 109 text

#denatechcon   ܗࣜख๏ͷ׆༻Πϝʔδɿ 1SPNFMBͰ࢓༷ΛৄࡉԽ͢Δ ߟྀ࿙ΕΛݟ͚ͭΔ ݱ ࡏ 
 ໛ ࡧ த   ৄࡉԽʹΑΔߟྀ࿙Εൃݟࢧԉͷྫ

Slide 110

Slide 110 text

#denatechcon   active proctype Battle() { mtype:bossMode bossMode = Normal mtype:bossHp bossHp = Full do :: Attack(bossHp) if :: (bossHp == Dead) -> break :: else -> skip fi if :: (bossHp <= LessThanHalf) -> bossMode = Transformed :: else -> skip fi od assert false } গ͠ճΓ͘Ͳ͍͕ɺৗʹΤϥʔͰऴྃͤ͞Δ͜ͱͰϘεͷঢ়ଶ͕
 ͲͷΑ͏ʹҠΓมΘΔ͔ΛπʔϧͰྻڍͰ͖Δ ݱ ࡏ 
 ໛ ࡧ த

Slide 111

Slide 111 text

#denatechcon   $ spin -a -o2 ./boss-batle.pml $ gcc -DREACH -o pan pan.c $ ./pan -c0 -e
 ... State-vector 20 byte, depth reached 17, errors: 4
 ... 1SPNFMBʹରԠ͢Δ࢓༷νΣοΫπʔϧ4QJOͰ
 ܗࣜԽͨ͠ϘεઓͷͱΓ͏Δঢ়ଶભҠͷҰཡΛܭࢉ͢Δ ݱ ࡏ 
 ໛ ࡧ த BTTFSUʹҾ͔͔ͬͬͨܦ࿏͕ͭ͋ΔͷͰɺঢ়ଶભҠ͸ܦ࿏͋ΔͱΘ͔Δ

Slide 112

Slide 112 text

#denatechcon   $ spin -t1 -p boss-battle.pml using statement merging 1: ... boss-battle.pml:7 ... [((bossHp>1))] 2: ... boss-battle.pml:7 ... [bossHp = (bossHp-1)] ... 16: ... boss-battle.pml:30 ... [assert(((bossMode!=2)&&(boss spin: trail ends after 16 steps #processes: 1 bossMode = Transformed bossHp = Dead ܦ࿏Λͭͣͭ֬ೝ͢ΔɻUͷޙͷ਺ࣈ͕ܦ࿏ͷ൪߸Λҙຯ͍ͯ͠Δ ݱ ࡏ 
 ໛ ࡧ த

Slide 113

Slide 113 text

#denatechcon   $ spin -t1 -p boss-battle.pml using statement merging 1: ... boss-battle.pml:7 ... [((bossHp>1))] 2: ... boss-battle.pml:7 ... [bossHp = (bossHp-1)] ... 16: ... boss-battle.pml:30 ... [assert(((bossMode!=2)&&(boss spin: trail ends after 16 steps #processes: 1 bossMode = Transformed bossHp = Dead ͜ͷܦ࿏͕ͲͷΑ͏ͳঢ়ଶΛܦ༝͔ͨ͠ͷৄࡉɻӈଆ͸࣮ߦ͞Εͨίʔυ ݱ ࡏ 
 ໛ ࡧ த

Slide 114

Slide 114 text

#denatechcon   $ spin -t1 -p boss-battle.pml using statement merging 1: ... boss-battle.pml:7 ... [((bossHp>1))] 2: ... boss-battle.pml:7 ... [bossHp = (bossHp-1)] ... 16: ... boss-battle.pml:30 ... [assert(((bossMode!=2)&&(boss spin: trail ends after 16 steps #processes: 1 bossMode = Transformed bossHp = Dead ࠷ऴతͳϘεͷঢ়ଶɻม਎ࡁΈ͔ͭࢮ๢͍ͯ͠Δ͜ͱ͕Θ͔Δ ݱ ࡏ 
 ໛ ࡧ த

Slide 115

Slide 115 text

#denatechcon   $ spin -t2 -p boss-battle.pml using statement merging 1: ... boss-battle.pml:9 (state 5) [((bossHp>3))] 2: ... boss-battle.pml:9 (state 6) [bossHp = (bossHp-3)] 3: ... boss-battle.pml:20 (state 10) [((bossHp==1))] ... 4: ... boss-battle.pml:30 (state 25) [assert(((bossMode!=2 spin: trail ends after 4 steps #processes: 1 bossMode = Normal bossHp = Dead ॱʹ֬ೝ͍͖ͯ͠ɺ൪໨ͷܦ࿏Λ֬ೝ͢Δ ݱ ࡏ 
 ໛ ࡧ த

Slide 116

Slide 116 text

#denatechcon   $ spin -t2 -p boss-battle.pml using statement merging 1: ... boss-battle.pml:9 (state 5) [((bossHp>3))] 2: ... boss-battle.pml:9 (state 6) [bossHp = (bossHp-3)] 3: ... boss-battle.pml:20 (state 10) [((bossHp==1))] ... 4: ... boss-battle.pml:30 (state 25) [assert(((bossMode!=2 spin: trail ends after 4 steps #processes: 1 bossMode = Normal bossHp = Dead ߟྀͰ͖͍ͯͳ͔ͬͨɺϘε͕ม਎͠ͳ͍··
 ࢮ๢͢Δܦ࿏Λൃݟʢܦ࿏΋ม਎͠ͳ͍ʣ ݱ ࡏ 
 ໛ ࡧ த

Slide 117

Slide 117 text

#denatechcon   $ spin -t2 -p boss-battle.pml using statement merging 1: ... boss-battle.pml:9 (state 5) [((bossHp>3))] 2: ... boss-battle.pml:9 (state 6) [bossHp = (bossHp-3)] 3: ... boss-battle.pml:20 (state 10) [((bossHp==1))] ... 4: ... boss-battle.pml:30 (state 25) [assert(((bossMode!=2 spin: trail ends after 4 steps #processes: 1 bossMode = Normal bossHp = Dead ঢ়ଶભҠͷաఔ͔ΒݪҼΛ୳ΔͱɺϘεΛҰܸͰ
 ౗ͨ͠ͱ͜Ζߟྀ͍ͯ͠ͳ͍ঢ়ଶͳͬͨ͜ͱ͕Θ͔Δ ݱ ࡏ 
 ໛ ࡧ த

Slide 118

Slide 118 text

#denatechcon   active proctype P() { mtype:bossMode bossMode = Normal mtype:bossHp bossHp = Full do :: Attack(bossHp) if :: (bossHp == Dead) -> break :: else -> skip fi if :: (bossHp <= LessThanHalf) -> bossMode = Transformed :: else -> skip fi od assert false } ݱ ࡏ 
 ໛ ࡧ த ઌ΄ͲܗࣜԽͨ͠࢓༷Ͱ͸ɺϘεͷม਎൑ఆͷલʹ
 Ϙεͷࢮ๢Λ൑ఆ͢Δ͜ͱʹ͍ͯͨͨ͠ΊɺҰܸͰ
 Ϙε͕౗͞Εͨ৔߹ʹະม਎ʹͳΔ

Slide 119

Slide 119 text

#denatechcon   active proctype P() { mtype:bossMode bossMode = Normal mtype:bossHp bossHp = Full do :: Attack(bossHp) if :: (bossHp <= LessThanHalf) -> bossMode = Transformed :: else -> skip fi if :: (bossHp == Dead) -> break :: else -> skip fi od assert false } ݱ ࡏ 
 ໛ ࡧ த ม਎൑ఆΛࢮ๢൑ఆͷલʹҠಈ͢Δͱߟྀ࿙ΕΛͳͤ͘Δ ͜͜Ͱঢ়ଶͷྻڍΛ͢Δͱɺ͢΂ͯม਎ࡁΈͰࢮ๢͢Δ͜ͱ͕
 Θ͔ΔͷͰɺߟྀ࿙ΕͷղܾΛ֬ೝͰ͖Δ

Slide 120

Slide 120 text

#denatechcon   ͜ͷΑ͏ʹܗࣜख๏Λ࢖͏ͱɺ։ൃ΍
 ςετέʔε࡞੒ͷલʹ࢓༷ॻͷߟྀ࿙ΕΛ
 গͳ͘Ͱ͖ΔͨΊɺख໭Γ͕গͳ͘ͳΔɻ σϝϦοτ͸ɺ࢓༷ॻͷಡΈॻ͖ͷֶश͕
 ඞཁʹͳΔ͜ͱɻ·ͨอकίετ͕ࣗવݴޠͰ
 هड़͞Εͨ΋ͷͱൺ΂ͯͲ͏ͳΔ͔͸ఆ͔Ͱͳ͍ɻ ϝϦοτͱσϝϦοτ ݱ ࡏ 
 ໛ ࡧ த

Slide 121

Slide 121 text

#denatechcon   ͜ͷΑ͏ͳܗࣜख๏ΛاըߟҊऀʹ࣮ࢪͯ͠
 ΋Β͏͜ͱ͸ݱ࣮తʹ೉͍͠ɻ ͦ͜ͰɺاըΛߟҊ͢Δஈ֊Ͱॻهϩʔϧ͕
 ٞ࿦தͷ࢓༷Λܗࣜख๏Ͱهड़͠ɺ
 ࣮ࡍͷ։ൃલʹݕূ͢Δͱ͍ͬͨݱ࣮తͳ
 ӡ༻ͷͨΊͷ޻෉Λߟ͍͑ͯΔɻ ֶशͷ໰୊ͷରԠҊ ݱ ࡏ 
 ໛ ࡧ த

Slide 122

Slide 122 text

#denatechcon   ෦෼తʹܗࣜख๏Λ࢖͏͜ͱͰɺอकίετ͸
 ௐ੔Ͱ͖Δɻ Ͳͷ෦෼Λܗࣜख๏Ͱѻ͏ͱΑ͍͔͸ఆ͔Ͱ
 ͳ͍ͷͰɺ͜ͷޙʹ໌Β͔ʹ͍͖͍ͯͨ͠ɻ อकίετ΁ͷରԠҊ ݱ ࡏ 
 ໛ ࡧ த

Slide 123

Slide 123 text

#denatechcon   ΍͍ͬͯΔ͜ͱ·ͱΊ ݱ ࡏ 
 ໛ ࡧ த ܗࣜख๏ʹΑͬͯɺήʔϜ࢓༷ॻͷߟྀ࿙ΕͳͲΛ
 Ͳ͜·Ͱݕ஌Ͱ͖Δ͔Λ࣮ݧ͍ͯ͠Δɻܗࣜख๏ͷछྨ͸
 ଟ͍ͨΊɺ͞·͟·ͳख๏Λ࣮ݧ͢Δ༧ఆɻ ࠷ऴతʹ͸ɺܗࣜख๏Λ࢖͏ͱɺͲͷఔ౓ͷίετͰ
 Ͳͷఔ౓ख໭ΓΛ๷͛Δ͔ͱ͍͏අ༻ରޮՌΛݕূ͍ͨ͠ɻ

Slide 124

Slide 124 text

#denatechcon   ӶҙऔΓ૊Έதʂ ݱ ࡏ 
 ໛ ࡧ த

Slide 125

Slide 125 text

#denatechcon ·ͱΊ   ݱࡏͷऔΓ૊Έ

Slide 126

Slide 126 text

#denatechcon   ͍·औΓ૊ΜͰ͍ΔͭͷςʔϚΛ঺հͨ͠ɿ ήʔϜΫϥΠΞϯτྖҬͷ୯ମςετͷܗࣜ஌Խ ήʔϜ࢓༷ॻͷܽؕ໰୊ͷରॲͷܗࣜ஌Խ  

Slide 127

Slide 127 text

#denatechcon ·ͱΊ   ୈষ

Slide 128

Slide 128 text

#denatechcon   48&5͸ɺָ͘͠ɺݡ͘ɺՁ஋͋ΔςετͰ
 ։ൃϓϩηεΛΑ͍ͯ͘͘͠૊৫ ͜ͷϝϯόʔͱͯ͠ɺ൒೥લ͸ը૾ൺֱج൫ͷ
 ߏங΍+FOLJOTΫϥελߏஙͳͲʹऔΓ૊Ή ࠓ͸ήʔϜΫϥΠΞϯτʹ͓͚Δ୯ମςετٕज़ͷ
 ܗࣜ஌Խͱܗࣜख๏ͷ࣮ݧʹऔΓ૊Ή   

Slide 129

Slide 129 text

#denatechcon

Slide 130

Slide 130 text

#denatechcon ૝ఆ࣭໰ͱͦͷճ౴  

Slide 131

Slide 131 text

#denatechcon ୯ମςετؔ࿈  

Slide 132

Slide 132 text

#denatechcon   Ξ΢τήʔϜͱΠϯήʔϜͷࠩ ݱ ࡏ 
 ໛ ࡧ த w Ξ΢τήʔϜ͸ײੑʹΑΒͳ͍ݕূʹ͠΍͍͢ w ྫಋઢͷ༗ޮੑͷݕূ͸ײੑʹΑΒͳ͍ w Ξ΢τήʔϜ͸৚݅෼ذΛू໿͠΍͍͢ w ྫΠϕϯτ΍ΫΤετҰཡͷߜΓࠐΈΛ૝ఆ

Slide 133

Slide 133 text

#denatechcon   ΠϯήʔϜͷςετ͠΍͢͞ʹ͍ͭͯ ݱ ࡏ 
 ໛ ࡧ த ଟ͘ͷήʔϜͰ͸ͭͷίϯϙʔωϯτʹϩδοΫΛ
 ڽूͮ͠Β͍͜ͱ͕ଟ͘ɺ୯ମͰςετͯ͠΋
 ҙຯͷͳ͍͜ͱ͕ଟ͍ɻ ྫͱͯ͠ɺ෺ཧγϛϡϨʔγϣϯΛؚΉήʔϜΛߟ͑Δɻ

Slide 134

Slide 134 text

#denatechcon   ෺ཧγϛϡϨʔγϣϯΛؚΉήʔϜͷ໰୊ ݱ ࡏ 
 ໛ ࡧ த ࣮ࡍʹ6OJUZͰ͘͝୯७ͳ෺ཧγϛϡϨʔγϣϯ෇͖ͷήʔϜΛ ୯ମςετͨ͠ͱ͜Ζɺ࣍ͷ໰୊Λൃݟͨ͠ɻ ෺ཧγϛϡϨʔγϣϯͰ͸ɺ͋ΔΦϒδΣΫτͷҐஔ࠲ඪΛ
 ಡΈॻ͖͢Δίϯϙʔωϯτ͕ଟ͋͘Δɿ w িಥ൑ఆϩδοΫ w ྗֶܭࢉΤϯδϯ w ΦϒδΣΫτʹ෇ਵ͢Δॲཧʢೖྗૢ࡞΁ͷ൓ԠͳͲʣ

Slide 135

Slide 135 text

#denatechcon   ݱ ࡏ 
 ໛ ࡧ த িಥ൑ఆϩδοΫͱྗֶܭࢉΤϯδϯ ήʔϜΤϯδϯ΁ͷઃఆʹऴ࢝͢Δʢ෼ذ΍ϧʔϓ͕ͳ͍ʣ
 ͨΊɺ୯ମςετͰݕূ͢ΔՁ஋͸ͳ͍ɻ ෇ਵॲཧ ୯७ͳ͜ͱ͕ଟ͍͏͑ʹɺ୯ମͰͷόάΑΓ݁߹Ͱͷ
 όάʢนൈ͚΍นΊΓࠐΈ͔Βͷਧ͖ඈͼͳͲʣͷํ͕
 ࢧ഑తͰɺ୯ମςετͷϝϦοτΑΓίετͷํ͕উΔɻ ෺ཧγϛϡϨʔγϣϯབྷΈͷ୯ମςετͷՁ஋

Slide 136

Slide 136 text

#denatechcon ܗࣜख๏ؔ࿈  

Slide 137

Slide 137 text

#denatechcon   ݱ ࡏ 
 ໛ ࡧ த  ͕࣌ؒܦͭ΄ͲৄࡉΛ๨ΕΔ  ༨ܭͳίϛϡχέʔγϣϯ͕૿͑Δ  ࢓༷ͷख໭Γ͸ޙଓλεΫΛϒϩοΫ͢Δ ख໭ΓʹΑΔੜ͡Δ໰୊

Slide 138

Slide 138 text

#denatechcon   ݱ ࡏ 
 ໛ ࡧ த ͕࣌ؒܦͭ΄ͲৄࡉΛ๨ΕΔ ͜͜Θ͔Βͳ͍ͷͰ͕͢
 Ͳ͏͍͏ҙຯͰ͢ʁ ઌिߟ͑ͯͨ΍͚ͭͩͲɺ
 ͲΜͳҙຯ͚ͩͬͨͬʜʁ ࢓༷ಡΜͩਓ ࢓༷هड़ऀ

Slide 139

Slide 139 text

#denatechcon   ݱ ࡏ 
 ໛ ࡧ த ༨ܭͳίϛϡχέʔγϣϯ͕૿͑Δ ͜Εໃ६ͯ͠·ͤΜ͔ʁ Ͳ͜ͷ͜ͱͰ͠ΐ͏͔ʁ ࢓༷ಡΜͩਓ ࢓༷هड़ऀ ͜ͷ"ͱ#Ͱ͕͢ʜ

Slide 140

Slide 140 text

#denatechcon   ݱ ࡏ 
 ໛ ࡧ த ࢓༷ͷख໭Γ͸ޙଓλεΫΛϒϩοΫ͢Δ اը ࣮૷ ϨϏϡʔ ςετ࡞੒ ख໭ΓରԠ ࢓༷͕ݻ·Δ·Ͱ࡞ۀͮ͠Β͍ اը ։ൃ 2" தஅ தஅ ࣮૷ ςετ࡞੒

Slide 141

Slide 141 text

#denatechcon   ػցతͳঢ়ଶભҠͷྻڍ

Slide 142

Slide 142 text

#denatechcon   $ spin -a -o2 ./boss-batle.pml $ gcc -DREACH -o pan pan.c $ file ./pan pan: Mach-O 64-bit executable x86_64 1SPNFMB͸ɺݕࠪ΍ՄࢹԽͷͨΊͷπʔϧͰ͋Δ
 4QJOͰղੳͰ͖Δɻ4QJOΛ࣮ߦ͢Δͱ$ͷίʔυ͕
 ੜ੒͞ΕΔͷͰɺίϯύΠϧ࣮ͯ͠ߦͰ͖ΔΑ͏ʹ͢Δ ੜ੒͢ΔόΠφϦ͸QBOͱ͍͏׳ྫతͳ໊લʹ͢Δ͜ͱ͕ଟ͍
 ʢQBO͸1SPUPDPM"/BMZ[FSͩͬͨͱ͍͏ྺ࢙తܦҢ͕͋Δʣ ݱ ࡏ 
 ໛ ࡧ த

Slide 143

Slide 143 text

#denatechcon   $ ./pan -D digraph p_Battle { size="8,10"; GT [shape=box,style=dotted,label="Battle"]; GT -> S22; S22 -> S2 [color=black,style=bold,label="( S22 -> S4 [color=black,style=bold,label="( S22 -> S6 [color=black,style=bold,label="( ... QBO͔Βঢ়ଶભҠਤΛEPUܗࣜͰग़ྗͰ͖Δ ݱ ࡏ 
 ໛ ࡧ த

Slide 144

Slide 144 text

#denatechcon   EPUܗࣜͷਤ͸(SBQIWJ[ͰඳըͰ͖Δ ભҠલͷঢ়ଶ 4 4 YYY ঢ়ଶભҠΛൃੜͤͨ͞ίʔυ ঢ়ଶ ঢ়ଶભҠͷ໼ҹ
 ʢઢͷࡉ͞͸ࣗಈੜ੒Λҙຯʣ ભҠޙͷঢ়ଶ ੜ੒͞Εͨঢ়ଶભҠਤͷಡΈํ ݱ ࡏ 
 ໛ ࡧ த