筋トレを習慣化させる テクノロジー

17b0bcc39bc5cd3ccb4185698a26e256?s=47 naokia
December 06, 2018
420

筋トレを習慣化させる テクノロジー

17b0bcc39bc5cd3ccb4185698a26e256?s=128

naokia

December 06, 2018
Tweet

Transcript

  1. ےτϨΛश׳Խͤ͞Δ ςΫϊϩδʔ !OBPLJB

  2. ࣗݾ঺հ w Ѫౠ௚थ ͋ͨ͗ͳ͓͖  w UXJUUFS!OBPLJB w ΤϯδχΞɻ"TL%PDUPSTͱήϊϜؔ࿈αʔϏε୲౰ w

    3VCZ +BWB +4ͳͲීஈ৮ͬͯ·͢ w झຯ͸৯΂า͖ͱిݯΛ࢖Θͳ͍ήʔϜ
  3. ࠓ೔࿩͢͜ͱ w ϓϥΠϕʔτͰ΍ͬͯΔϓϩδΣΫτͷ࿩Ͱ͢ w ےτϨΛͨͯ͘͠΋ͳ͔ͳ͔श׳ԽͰ͖ͳ͍ਓͰ΋ɺے τϨΛश׳ԽͰ͖ΔϕετϓϥΫςΟεΛൃݟͨ͠ʂʂ w ͦͷϕετϓϥΫςΟεΛΑΓ࣮֬ʹ࣮ફ͢ΔͨΊͷ "QQMF8BUDI༻ͷΞϓϦΛ࡞ͬͨ

  4. ࢲ͸ͳͥٸʹےτϨΛ ࢝ΊΔΑ͏ʹͳ͔ͬͨ

  5. ͋Δ೔ɺ຾Γʹͭ͜͏ͱͯ͠ ෆҙʹؾ͍ͮͨ

  6. ࠓɺΤϯδχΞͱͯ͠ಇ͍ͯ ऩೖΛಘ͍ͯΔ͚Ͳ

  7. ΋֩͠ઓ૪Ͱจ໌่͕յͯ͠ɺ Πϯλʔωοτ΍ύιίϯ͕࢖͑ͳ͘ͳͬͨ ΒɺͲ͏΍ͬͯऩೖΛಘΕ͹͍͍Μͩɾɾɾʁ

  8. ૝ఆ͢Δੈք؍

  9. None
  10. ΋֩͠ઓ૪ޙͷੈքͰΑ͏΍͘खʹೖΕͨ ࢓ࣄ͕΢ΥʔϘʔΠͩͬͨΒʁ ೑ମ࿑ಇ ˠࠓ͔ΒےτϨ͢Δ͔͠ͳ͍

  11. ໰୊ w ͍ͭ΋ےτϨΛ͠Α͏ͱࢥ͏Μ͚ͩͲɺҙࢥ͕ऑ͗ͯ͢ ·ͱ΋ʹ௕ଓ͖ͨ͜͠ͱ͕ͳ͍ w ͲΕ͘Β͍ऑ͍͔ͱ͍͏ͱɺՈ͔Βెา̍̌෼ͷͱ͜Ζ ʹ͋ΔτϨʔχϯάδϜΛʮԕ͍ʯͱ͍͏ཧ༝Ͱୀձͨ͠ ͜ͱ͕͋ΔϨϕϧ

  12. ͦΜͳ๻Ͱ΋ઈରʹےτϨΛ ܧଓͰ͖Δํ๏Λݟ͚ͭ ͨɾɾ

  13. ࢲͷ5XJUUFSΞΧ΢ϯτʹͯɻ

  14. ࢲͷ5XJUUFSΞΧ΢ϯτʹͯɻ

  15. ࣗ෼ʹ՝ͨ͠ϧʔϧ w ຖि࠷௿ೋճɺඞͣےτϨΛ͢Δ w ےτϨΛͨ͠ΒͦͷࢫΛ5XJUUFSʹॻ͖ࠐΉ w ΋͠िೋճͷےτϨΛୡ੒͍ͯ͠ͳ͚Ε͹ɺϑΥϩϫʔ͸ ࢲʹઍԁ෼ͷ"NB[POΪϑτ݊Λ੥ٻͰ͖Δ
 
 ˠ͜ͷࠒϑΥϩϫʔਓ͘Β͍ͩͬͨͷͰɺےτϨΛଵ

    Ε͹ࢲ͸࠷େͰສԁͷଛࣦΛड͚Δ͜ͱʹͳΔɻ
 ڪා৺ʹۦΒΕͯɺےτϨ͕ḿΔ
  16. ݁Ռ w ڪා৺ʹۦΒΕͳ͕Βࡾϲ݄΋ےτϨΛܧଓ͢Δ͜ͱ͕ Ͱ͖ͨʂʢྺ୅࠷ߴه࿥ʣ

  17. ͔͠͠ࡾϲ݄໨ʹͯ͠࠳ં
 ͦΕͰ΋࠷௕ه࿥

  18. ໰୊఺ w ୭΋"NB[POΪϑτ݊Λ੥ٻͯ͠͸དྷͳ͔ͬͨ
 
 
 Կਓ͔΢ΥονϟʔΛެݴ͢Δਓ͕͍ͨ͸ͣͳͷͩ ͕ɾɾɾ 


  19. ໰୊఺ w ୭΋"NB[POΪϑτ݊Λ੥ٻͯ͠͸དྷͳ͔ͬͨ
 
 
 Կਓ͔΢ΥονϟʔΛެݴ͢Δਓ͕͍ͨ͸ͣͳͷͩ ͕ɾɾɾ 
 ˠҙ֎ͱΈΜͳ༏͔ͬͨ͠

  20. ໰୊఺ w ҙ֎ͱΈΜͳྑࣝ͋ΔେਓͩͬͨͷͰɺϖφϧςΟͷҙຯ ͕ͳ͔ͬͨ w ےτϨ͢Δͨͼʹ5XJUUFSʹॻ͖ࠐΉͷΊΜͲ͍͘͞͠ɺ ͳΜ͔Ξϐʔϧͯ͠ΔΈ͍ͨͰݏͩ


  21. ͦ͜ͰࣗಈԽΛࢼΈΔ w िೋճےτϨΛߦΘͳ͍ͱɺࣗಈతʹΫϨδοτΧʔυ͔ Β͓ۚΛҾ͖མͱ͍ͯ͘͜͠ͱ͸Ͱ͖ͳ͍͔ʁ w "QQMF8BUDI্Ͱಈ࡞͠ɺՃ଎౓ηϯαʔͰےτϨͷಈ ͖Λݕ஌ͯ͠ɺͦΕ͕Ұఆظ్ؒઈ͑ͨΒ͓ۚΛࣗಈతʹ Ҿ͖མͱ͍ͯͦ͘͠ΜͳΞϓϦ

  22. ػೳ w J1IPOFΞϓϦͰϢʔβʹ݄ऩ खऔΓ ͱɺΫϨδοτΧʔυ৘ ใΛೖྗͤ͞Δ w ےτϨͨ͠ࣄ͕ࣗݾਃࠂͩͱڏِͷਃࠂ͕ՄೳͳͷͰɺ"QQMF 8BUDIͰےτϨͷϞʔγϣϯΛݕ஌͠ɺه࿥Ͱ͖ΔΑ͏ʹ͢Δ w

    ےτϨͱ͍ͬͯ΋͍Ζ͍Ζϝχϡʔ͕͋Δ͕ɺͱΓ͋͑ͣෲے͕ ه࿥Ͱ͖Ε͹ྑ͠ͱ͢Δ w िʹೋճҎ্ɺه࿥͕ߦΘΕͳ͔ͬͨΒɺೖྗ͞Ε݄ͨऩʹԠ ͯ͡ɺࣗಈతʹΧʔυ͔ΒҾ͖௨͠Λߦ͏
 ʢϓϩτλΠϓͰ͸͜͜͸ະ࣮૷
  23. ϓϩτλΠϓΛ࡞ͬͯ ݟͨ

  24. None
  25. None
  26. γεςϜߏ੒ Amazon
 DynamoDB Lambda function Amazon API Gateway* ܾࡁ৘ใ τϨʔχϯάͷه࿥

  27. ෲےͨ͜͠ͱΛݕ஌͢Δํ๏ w $PSF.PUJPOΛ༻͍ͯ"QQMF8BUDIͷճస཰Λर͏ w γϯϓϧʹɺϐον͕࣠Ұఆͷ֯౓มԽͨ͠Βɺෲے͕ߦ ΘΕͨ͜ͱʹ͢Δ ϩʔϧ ϐον Ϥʔ

  28. σόΠεͷϞʔγϣϯΛर͏ ͨΊͷϋϯυϥΛొ࿥͢Δ let motionManager = CMMotionManager() motionManager.deviceMotionUpdateInterval = 1.0 /

    50 // 50hz motionManager.startDeviceMotionUpdates(to: queue) { (deviceMotion: CMDeviceMotion?, error: Error?) in if deviceMotion != nil { self.processDeviceMotion(deviceMotion!) } }
  29. σόΠεͷϞʔγϣϯΛर͏ ͨΊͷϋϯυϥΛొ࿥͢Δ let motionManager = CMMotionManager() motionManager.deviceMotionUpdateInterval = 1.0 /

    50 // 50hz motionManager.startDeviceMotionUpdates(to: queue) { (deviceMotion: CMDeviceMotion?, error: Error?) in if deviceMotion != nil { self.processDeviceMotion(deviceMotion!) } }
  30. ճస཰ͷมԽΛݕग़͢Δ let pitchThreshold = 1.95 // Radians let rateThreshold =

    3.5 // Radians/sec func processDeviceMotion(_ deviceMotion: CMDeviceMotion) { let rotationRate = deviceMotion.rotationRate let rateX = rotationRate.x // rateBuffer͸1ඵؒ෼ͷճస཰Λ഑ྻͰอ͍࣋ͯ͠Δ(50hzͳͷͰ50Πϕϯτ෼) rateBuffer.addSample(rateX) if !rateBuffer.isFull() { return } let accumulatedPitchRot = rateBuffer.sum() / 50 let peakRate = accumulatedPitchRot > 0 ? rateAlongGravityBuffer.max() : rateAlongGravityBuffer.min() if (accumulatedPitchRot > pitchThreshold && peakRate > rateThreshold) { incrementCountAndUpdateDelegate() } if (recentDetection && abs(rateBuffer.recentMean()) < resetThreshold) { recentDetection = false rateAlongGravityBuffer.reset() } }
  31. ͦΕͬΆ͘ෲےΛΧ΢ϯτͰ ͖ͯ͸ྑ͍͕ɾɾ w ࢲͷෲے͔ͩΒ͏·͘ճ਺Χ΢ϯτͰ͖ͯΔ͚Ͳɺ΋͏গ͠ νϡʔχϯάͷ༨஍͸͋Δؾ͕͢Δ w צͷྑ͍ਓ͸͓෼͔Γͷ௨Γɺ࿹Λ͙ΔΜ͙ΔΜ͢Ε͹ෲےͨ͠ ͜ͱʹͳͬͯ͠·͏ w αʔϏεతͳ໰୊ɻ


    ΋͠िೋճͷෲے͕ߦΘΕͳ͚Ε͹ɺϢʔβʹొ࿥ͤͯ͞ΔΧʔ υΛ࢖ͬͯҾ͖མͱ͕͠ߦΘΕΔ͕ɺܾࡁʹ༻͍͍ͯΔ4USJQFͷ ౎߹Ͱɺৼࠐઌ͕ࢲࣗ਎͔͠ࢦఆͰ͖ͳ͍
 

  32. ͦΕͬΆ͘ෲےΛΧ΢ϯτͰ ͖ͯ͸ྑ͍͕ɾɾ w ࢲͷෲے͔ͩΒ͏·͘ճ਺Χ΢ϯτͰ͖ͯΔ͚Ͳɺ΋͏গ͠ νϡʔχϯάͷ༨஍͸͋Δؾ͕͢Δ w צͷྑ͍ਓ͸͓෼͔Γͷ௨Γɺ࿹Λ͙ΔΜ͙ΔΜ͢Ε͹ෲےͨ͠ ͜ͱʹͳͬͯ͠·͏ w αʔϏεతͳ໰୊ɻ


    ΋͠िೋճͷෲے͕ߦΘΕͳ͚Ε͹ɺϢʔβʹొ࿥ͤͯ͞ΔΧʔ υΛ࢖ͬͯҾ͖མͱ͕͠ߦΘΕΔ͕ɺܾࡁʹ༻͍͍ͯΔ4USJQFͷ ౎߹Ͱɺৼࠐઌ͕ࢲࣗ਎͔͠ࢦఆͰ͖ͳ͍
 ˠظͤͣͯ͠ϏδωενϟϯεΛ૑ग़ͯ͠͠·ͬͨ

  33. ·ͱΊ w ڧ྽ͳϖφϧςΟ͕͋ΔͱےτϨ͸ḿΔ w $PSF.PUJPO͸ҙ֎ͱ؆୯ w ͜ͷΞϓϦΛଞਓʹ࢖Θͤͯͦ͜Ͱಘ͓ͨۚͰϥΠβοϓ ʹ͍͚͹ɺࢲݸਓͷ՝୊͸ղܾ͢ΔՄೳੑ͕͋Δ w ։ൃ͢Δߦҝ

    ಈ࡞֬ೝͱ͔ ࣗମͰ͍ͩͿෲے͕஁͑ΒΕ ͨ