ð§ å§¿å¢ãæ°ã«ãªãããªããžãVue + Mediapipeã§å§¿å¢åæWebã¢ããªãäœã£ãŠã¿ã話
ð¯ ãããžã§ã¯ããå§ãããã£ãã
å®ã¯ãããšããšç§ã¯ å§¿å¢ã身äœã®ãã©ã³ã¹ã«ãšãŠãé¢å¿ãããã¿ã€ãã§ãã
é·å¹Žã¹ããŒãããã£ãŠããçµéšããããæ®æ®µããèªåã®å§¿å¢ãäœã®ç¶æ
ã«ææã«åå¿ããã»ãã§ãã
ã§ãæè¿ãããœã³ã³ã®åã«åº§ã£ãŠããæéãã©ãã©ãé·ããªã£ãŠããŠâŠ
èªåèªèº«ããåšãã®äººãã¡ããæããã«å§¿å¢ã厩ããŠããã®ãæããããã«ãªããŸããã
ç¹ã«ãã¹ãã¬ãŒãããã¯ãã®ããã«ãèŠãç®ã§ã¯åããã¥ãããã©ãçæŽ»ã«å€§ãã圱é¿ããåé¡ã¯ã
ç
é¢ã§èšºãŠãããã«ã¯ã¡ãã£ãšé¢åã ããæ¥åžžã®äžã§ã¯èªèŠããã¥ãããã§ãããã
ããã§ç§ã¯ããæããŸããïŒ
誰ã§ãç°¡åã«èªåã®å§¿å¢ããã§ãã¯ã§ããŠãèªç¶ãšæèã§ããããŒã«ããã£ãããããªã
å°æ¥çã«ãããœã³ã³ã®åã§ä»äºã»ç掻ããã人ãããã«å¢ããŠããäžã§ã
ããããã身äœã®ãã©ã³ã¹ã®åŽ©ããã«æ°ä»ããã£ãããå¿
èŠã«ãªããšæãã
ãã®ãããžã§ã¯ããã¹ã¿ãŒãããŸããã
ð€ ãªã鿢ç»ããåç»ããŒã¹ã«åãæ¿ããã®ãïŒ
æåã¯ãåç1æãæ®ã£ãŠããã®å§¿å¢ãåæãããæ¹åŒã§ããã
ã§ããå人ã«è©ŠããŠããã£ããšããâŠ
ðžãæ®ãããïŒãâ ð³ ç¡æèã«å§¿å¢ãæ£ã
ã€ãŸãããæž¬ãããŠããããšæããç¬éã人ã¯èªç¶ã«å§¿å¢ãæ£ããŠããŸããã§ãã
ããã ãšæ¬æ¥ã®âæ¥åžžã®å§¿å¢âãšã¯éãçµæã«ãªã£ãŠããŸããŸãã
ããã§æ¹éã倧ãã倿ŽããŸããã
ä»ã¯ããã¿ã³ãæŒããšåç»ãã¹ã¿ãŒãããèªç¶ãªå§¿å¢ãèšé²ã
ãã®äžãã æãè¯ãå§¿å¢(best) ãš æãæªãå§¿å¢(worst) ã®ãã¬ãŒã ãèªåæœåºããŠåæããŠããŸãã
ãã®æ¹æ³ã«å€ããããšã§ïŒ
- ãŠãŒã¶ãŒã¯æèããèªç¶äœã§ãããã
- çµæãä¿¡é Œæ§ãé«ããªã
- UXãšããŠãããããã¥ã©ã«ã«äœ¿ãã
ãšããã¡ãªãããçãŸããŸããã
ð ãããªæ¹ã«ããããïŒ
- äžæ¥äžããœã³ã³ã®åã§äœæ¥ããŠããæ¹
- å§¿å¢ãæªããšããèšããããã©ãäœãããã°ãããåãããªãæ¹
- ç é¢ã«è¡ãã»ã©ã§ã¯ãªããã©ãèªåã®å§¿å¢ãç°¡åã«ãã§ãã¯ãããæ¹
ð§° äœ¿çšæè¡ã¹ã¿ãã¯
é å | æè¡ |
---|---|
ããã³ããšã³ã | Vue 3 + Vite |
å§¿å¢æšå® | Mediapipe Pose |
ããã¯ãšã³ã | Node.js (Express) |
ããŒã¿ããŒã¹ | MySQL |
ðž äž»ãªæ©èœãŸãšã
- Googleãã°ã€ã³ã«ããèªèšŒ
- Webã«ã¡ã©ã«ããåç»ããŒã¹ã®å§¿å¢æž¬å®
- ãã¿ã³ã§ 枬å®éå§/çµäº ãæäœ
- 枬å®ããããã¬ãŒã ãã best / worst å§¿å¢ãèªåæœåº
- åçãšéŠã®è§åºŠãä¿å
- æ¥ä»å¥ã«åçãäžèЧã»åé€
- 枬å®å±¥æŽããã£ãŒãããã¯è¡šç€º
- ã«ã¬ã³ããŒåœ¢åŒã§å§¿å¢ç¶æ ãè²åãå¯èŠå
â ãŠãŒã¶ãŒèŠç¹ã®æµã
ãã®ã¢ããªãå®éã«äœ¿ããšãããâŠ
ãããªæµãã«ãªããŸãïŒ
ã¹ããã | 説æ |
---|---|
1. ãã°ã€ã³ | Googleã¢ã«ãŠã³ãã§ãã°ã€ã³ïŒããŒã¯ã³èªèšŒïŒ |
2. 枬å®éå§ | ãæž¬å®éå§ããã¿ã³ã§åç»ã¹ããªãŒãã³ã°éå§ |
3. ãªã¢ã«ã¿ã€ã åæ | æ åäžã«éªšæ Œã©ã€ã³ãšéŠè§åºŠãå¯èŠå |
4. 枬å®çµäº | ãæž¬å®çµäºãã¯ãªãã¯ã§best/worstãèªåæœåº |
5. åçã¢ããããŒã | éžã°ããåçããµãŒããŒã«éä¿¡ãDBã«ä¿å |
6. çµæç¢ºèª | åçäžã«å¹³åã»æå€§è§åºŠããã£ãŒãããã¯è¡šç€º |
7. åçäžèŠ§ç¢ºèª | æ¥ä»å¥ã§æŽçãããäžèЧããç¢ºèª |
8. ãã€ããŒãž | 枬å®åæ°ãæ¹ååŸåãªã©çµ±èšã衚瀺 |
9. ã¢ã«ãŠã³ã管ç | ãŠãŒã¶ãŒæ å ±è¡šç€ºããã°ã¢ãŠããã¢ã«ãŠã³ãåé€ãªã© |
ð§± ã·ã¹ãã æ§æïŒæŠèŠïŒ
Frontend (Vue)
-
MainPhotos.vue
: ã«ã¡ã©ãšæž¬å®å¶åŸ¡ -
ResultPhotos.vue
: best/worst åç衚瀺 -
SummaryStats.vue
: å¹³å/æå€§è§åºŠã®çµ±èš -
PhotoList.vue
: åçã®äžèŠ§ã»æ¥ä»å¥ãã£ã«ã¿ãŒ -
MiniCalendar.vue
: å§¿å¢ç¶æ ã«ã¬ã³ã㌠-
PhotoModal.vue
: åçãã¯ãªãã¯ããŠæ¡å€§è¡šç€º
Backend (Node.js + Express)
-
/api/photos/upload
: åçã®ã¢ããããŒã -
/api/photos/list
: ãŠãŒã¶ãŒããšã®åçååŸ -
/api/posture/save
: 枬å®çµæã®ä¿å - MySQL ããŒãã«:
users
,photos
,posture_data
ð§ ã³ãŒãã§ãã£ãŠããããšïŒæŠèŠïŒ
- Mediapipeã§éŠã»è©ã»è³ã®äœçœ®ãååŸ
- å¯èŠæ§ïŒvisibilityïŒãèŠãŠå·Šå³ã©ã¡ãã䜿ããå€å®
- å šãã¬ãŒã ããéŠè§åºŠãåæããæå€§/æå°ãæœåº
- Axiosã§APIã䜿ããåçïŒè§åºŠããŒã¿ãã¢ããããŒã
ð éçºãéããŠåŠãã ããš
-
æ åã®äžã«ãªã¢ã«ã¿ã€ã ã§Canvasãæç»ããã®ã¯æå€ãšé£ããã£ãã§ãã
å転ã»ãµã€ãºèª¿æŽã»äœçœ®åãããªã©çްãããšããã«æ°ãé ãå¿ èŠããããŸããã -
Mediapipeã¯åŒ·åã§ãããè³ãè©ãèŠããªããšæ€åºã§ããªãããšããã£ãŠã
å¯èŠæ§ãèŠãªããèªåã§å·Šå³ãåãæ¿ããããã«ããŸããã -
åãªãæè¡çãªæ©èœã ãã§ã¯ãªãã
å®éã«äœ¿ãäººã®æµãïŒUXïŒãèšèšããããšã®å€§åãã宿ããŸããã
âš ä»åŸãã£ãŠã¿ããããš
- ð± ã¢ãã€ã«å¯Ÿå¿ïŒã¬ã¹ãã³ã·ããã¶ã€ã³ïŒ
- â±ïž äžå®æéäžã®å¹³åå§¿å¢ã®æž¬å®
- ð å§¿å¢æ¹åãªãã€ã³ããŒæ©èœ
- ð æž¬å®å±¥æŽãã¬ããŒããšããŠããŠã³ããŒã
ð æåŸã«âŠ
æåã¯ãèªåã®å§¿å¢ãã¡ãã£ãšæ°ã«ãªããªãããããã®æ°æã¡ã§ãããã
éçºãé²ãããã¡ã«ãããããã®äººã«åœ¹ç«ãŠããã®ã«ããããšæãããã«ãªããŸããã
ãã®èšé²ããåãããã«å§¿å¢ã«æ©ãã§ããæ¹ãã
æè¡çã«ãã£ã¬ã³ãžãããæ¹ã®ãã³ãã«ãªãã°å¬ããã§ãïŒ
æåŸãŸã§èªãã§ããã ããããããšãããããŸãã ðââïž
Discussion