
- TOP
- ã¿ã°äžèЧ
- Android
Android
ã€ãã³ã
ãã¬ãžã³
æè¡ããã°
ITæ¥çãžã®è»¢è·ã坿¥ã§ã®ã¢ããªéçºãæ€èšããéãå€ãã®åŠç¿è
ããããã«å¹çããã³ãŒããæžãããã«æèãåããã¡ã§ãã ããããããã®çŸå Žã§æãéèŠããããããžã§ã¯ãã®æåŠãåããã®ã¯ãå®ã¯ããã°ã©ãã³ã°ãã®ãã®ããããå質管çãã®ããã»ã¹ã«ãããŸãã ã©ãã»ã©ç»æçãªã¢ã€ãã¢ã®ã¢ããªã§ããé »ç¹ã«ã¯ã©ãã·ã¥ããããæäœãåããã«ããã£ããããã°ããŠãŒã¶ãŒã¯ç¬æã«é¢ããŠããŸããŸãã äžåºŠå€±ã£ãä¿¡é Œãåãæ»ãã«ã¯ãéçºã«ããã£ã以äžã®èšå€§ãªã³ã¹ããšæéãå¿
èŠã§ãã ããã§ä»åã¯ã¢ããªéçºã«ãããå質管çã®å®çŸ©ãšãã£ãåºç€ç¥èãããå
·äœçãªãã¹ãææ³ãå¹ççãªããŒã äœå¶ã®æ§ç¯æ¹æ³ãŸã§ãè«ççã«è§£èª¬ããŸãã å質管çã®æ¬è³ªãçè§£ããããšã¯ãåã«ãã°ãé²ãã ãã§ãªãããšã³ãžãã¢ãšããŠã®èŠåº§ãé«ããåžå ŽäŸ¡å€ã®é«ã人æãžãšæé·ããããã®åŒ·åãªæŠåšã«ãªãã¯ãã§ãã ä»äºçµããã®éãããæéãäŒæ¥ã®åŠç¿ãããå®ããããã®ã«ããããã«ããããå®è·µããå質管çã®æèæ³ãçŽè§£ããŠãããŸãããã import haihaiInquiryFormClient from "https://form-gw.hm-f.jp/js/haihai.inquiry_form.client.js";haihaiInquiryFormClient.create({baseURL: "https://form-gw.hm-f.jp",formUUID: "927d2c4e-f06c-45b1-bd36-0240e55ccf72",}) âŒã¢ããªéçºã®åºæ¬ã«ã€ããŠç¥ãããæ¹ã¯ãã¡ã⌠ã¢ããªéçºãšã¯ïŒçš®é¡ã»æµãã»å¿
èŠã¹ãã«ã»è²»çšæãŸã§åå¿è
åãã«ãããããã解説 ã¢ããªéçºã«ãããå質管çãšã¯äœã ã¢ããªãéçºããäžã®äžã«éãåºãããã»ã¹ã«ãããŠãå質管çã¯ãããžã§ã¯ãã®æåŠãåããæ±ºå®çãªèŠçŽ ã§ãã ã©ã®ãããªå·¥çšãçµãŠãã©ã®ãããªåºæºã§è£œåãä»äžããã¹ãããç¥ãããšã¯ãå°æ¥ãšã³ãžãã¢ãç®æãäžã§ã®åŒ·åãªæŠåšã«ãªããŸãã å質管çã®å®çŸ©ãšç®çïŒå質ä¿èšŒãšã®éãïŒ å質管çïŒQuality ControlïŒQCïŒãšã¯ã宿ãã補åããéçºã®åå·¥çšã§çã¿åºãããææç©ãããããããå®ããããåºæºãæºãããŠããããæ€èšŒããæŽ»åãæããŸãã å
·äœçã«ã¯ãããã°ã©ã ãå®éã«åãããŠäžå
·åãèŠã€ãããã¹ãäœæ¥ãããœãŒã¹ã³ãŒãã®èšè¿°ãã¹ããã§ãã¯ããã³ãŒãã¬ãã¥ãŒãªã©ãããã«è©²åœããŸãã äžæ¹ã§ããã䌌ãèšèã«å質ä¿èšŒïŒQuality AssuranceïŒQAïŒããããŸãã å質ä¿èšŒã¯ãããããäžå
·åãçºçããªãããã«éçºå
šäœã®ããã»ã¹ãäœå¶ãæŽãããŠãŒã¶ãŒã«å®å¿æãäžããããšãç®çãšãããããåºãæŠå¿µã§ãã å質管çããç®ã®åã®è£œåã®æ¬ é¥ãèŠã€ããŠä¿®æ£ããããšããå®ãã®åœ¹å²ãæ
ãã®ã«å¯Ÿããå質ä¿èšŒã¯ãé«å質ãªè£œåãçã¿åºãããä»çµã¿ãäœãããšããæ»ããšå®ãã®äž¡é¢ãæã£ãŠããŸãã ã¢ããªéçºã«ãããå質管çã®æå€§ã®ç®çã¯ãäžå
·åã®ãªã補åãæäŸããããšã§ãéçºè
ã®èªå·±æºè¶³ã§ã¯ãªããå©çšè
ã®æåŸ
ã«å¿ãã䟡å€ãå±ããããšã«ãããŸãã ãªãã¢ããªéçºã§å質管çãéèŠãªã®ã çŸä»£ã®ã¢ããªåžå Žã§ã¯ãæ°ãåããªãã»ã©ã®ãµãŒãã¹ãç«¶ãåã£ãŠããããŠãŒã¶ãŒã¯ããããªäžäŸ¿ããäžå
·åã«ãææã§ãã ã¢ããªãèµ·åããç¬éã«åŒ·å¶çµäºããããåäœã極端ã«éãã£ããããã°ããŠãŒã¶ãŒã¯å³åº§ã«ã¢ã³ã€ã³ã¹ããŒã«ããäºåºŠãšæ»ã£ãŠããªãå¯èœæ§ãé«ãã§ãããã ããå質管çãæ ããéçºã®åŸåããªãªãŒã¹åŸã«é倧ãªãã°ãçºèŠãããå Žåããã®ä¿®æ£ã«ã¯è«å€§ãªã³ã¹ããšæéãããããŸãã éçºåæã®èŠä»¶å®çŸ©ã®ãã¹ãéçšæ®µéã§çŽãããšãããšãåœåã®æ°åå以äžã®æéãããããšããããŒã¿ããããŸãã ãŸããäžåºŠæãªããããã©ã³ãã€ã¡ãŒãžããŠãŒã¶ãŒããã®ä¿¡é Œãå埩ããã®ã¯å®¹æã§ã¯ãããŸããã ããã«ãæšä»ã§ã¯å人æ
å ±ã®æµåºãã»ãã¥ãªãã£äŸµå®³ãäŒæ¥ã®åç¶ã«é¢ããèŽåœçãªãªã¹ã¯ãšãªããŸãã å質管çã培åºããããšã¯ãåã«ãã°ããŒãã«è¿ã¥ããã ãã§ãªããéçºãããžã§ã¯ãã®äºç®ãçŽæãå®ããããžãã¹ãšããŠã®ç¶ç¶æ§ãæ
ä¿ããããã«äžå¯æ¬ ãªããã»ã¹ãªã®ã§ãã å質ã®3èŠçŽ ïŒæ©èœã»æ§èœã»ãŠãŒã¶ããªãã£ïŒ ã¢ããªã®å質ãè©äŸ¡ããéãåã«ããã°ããªãããšããèŠç¹ã ãã§ã¯äžååã§ããå€è§çãªèŠç¹ã§å質ãæããããã«ã以äžã®3ã€ã®èŠçŽ ããã©ã³ã¹ããæºããããšãæ±ããããŸãã ãŸããæ©èœããšã¯ãã¢ããªãæ¬æ¥æäŸãã¹ã䟡å€ãæ£ããå®è¡ã§ããèœåã§ãããã°ã€ã³ãã§ãããååã賌å
¥ã§ãããšãã£ããèšèšéãã«åäœããããšãåºæ¬ãšãªããŸãã æ¬¡ã«ãæ§èœãã¯ãåŠçã®ã¹ããŒããå®å®æ§ãæããŸãããã¿ã³ãæŒããŠããç»é¢ãåãæ¿ãããŸã§ã®åå¿é床ããå€ãã®ãŠãŒã¶ãŒãåæã«ã¢ã¯ã»ã¹ããŠãèããããå
ç¢æ§ãè©äŸ¡ã®å¯Ÿè±¡ã§ãã æåŸã«ããŠãŒã¶ããªãã£ãã¯ã䜿ãåæã®è¯ãã§ãã ã©ãã»ã©é«æ©èœã§ããæäœæ¹æ³ãçŽæçã«ããããªãã£ãããæåãå°ããããŠèªã¿ã«ããã£ããããã°ãããã¯è³ªã®é«ãã¢ããªãšã¯èšããŸããã ããã3ã€ã®èŠçŽ ãäºãã«è£ãåãããšã§ãåããŠãŠãŒã¶ãŒã«ã䜿ã£ãŠããã£ãããšæãããé«ãå質ãå®çŸãããŸãã å質ãäœäžããäž»ãªåå ïŒèŠä»¶ã»èšèšã»éçšã®èгç¹ïŒ ã¢ããªã®å質äœäžã¯ãããã°ã©ãã³ã°ã®ãã¹ã ãã§ãªããéçºã®ãããããã§ãŒãºã«æœããèªèã®ãºã¬ãããèæ
®äžè¶³ãããçããŸãã ãŸãèŠä»¶ã®èгç¹ã§ã¯ããŠãŒã¶ãŒãæ¬åœã«æ±ããŠããæ©èœãæ£ããå®çŸ©ãããŠããªãããšãåå ãšãªããŸãã ç®çãææ§ãªãŸãŸéçºãé²ãããšãæçµçã«ã誰ã䜿ããªãäžèŠãªæ©èœãã°ããã®ã¢ããªã«ãªã£ãŠããŸããŸãã èšèšã®èгç¹ã§ã¯ãå°æ¥çãªæ¡åŒµæ§ãä¿®æ£ã®ãããããç¡èŠããå Žåœããçãªæ§é ããåŸã®å質äœäžãæããŸãã è€éãããèšèšã¯éçºè
ã®ãã¹ãèªçºããäžã€ã®ãã°ãçŽããšå¥ã®å Žæã§æ°ããªãã°ãçºçãããã¢ã°ã©å©ããã®ãããªç¶æ
ãåŒãèµ·ãããŸãã æåŸã«éçšã®èгç¹ã§ããããªãªãŒã¹åŸã®æŽæ°äœæ¥ããã©ãã«å¯Ÿå¿ã®äœå¶ãäžååã ãšãæéã®çµéãšãšãã«å質ã¯å£åããŠãããŸãã OSã®ã¢ããããŒããžã®å¯Ÿå¿ãé
ãããããµãŒããŒã®è² è·ç£èŠãçãã«ãªã£ããããããšã§ããã€ãŠã¯é«å質ã ã£ãã¢ããªã次第ã«äœ¿ãã«ãããã®ãžãšå€ãã£ãŠããŸããŸãã ãã®ããã«ãéçºããéçšãŸã§ã®äžè²«ããå質æèããåªããã¢ããªãç¶æããããã®éµãšãªããŸãã ã¢ããªéçºã«ãããå質管çã®å
šäœããã»ã¹ ã¢ããªéçºãæåãããããã«ã¯ãããã°ã©ãã³ã°ãã®ãã®ãšåãããããå質ã管çããå·¥çšãéèŠã§ãã å€ãã®æªçµéšè
ããã³ãŒããæžããŠåãã°å®æããšèããã¡ã§ãããå®éã«ã¯è£œåããŠãŒã¶ãŒã®æåŸ
ã«å¿ããå®å®ããŠåäœãç¶ããããã®äœç³»çãªä»çµã¿ãå¿
èŠã«ãªããŸãã èŠä»¶å®çŸ©æ®µéã§ã®å質æ
ä¿ïŒå質ã¯äžæµã§äœã蟌ãïŒ å質管çã¯ãéçºã®æãåææ®µéã§ããèŠä»¶å®çŸ©ããå§ãŸããŸãã ã¢ããªéçºã®äžçã«ã¯ãå質ã¯äžæµå·¥çšã§äœã蟌ãããšããæ Œèšãããããã®æ®µéã§ã®äžåãåŸããä¿®æ£ããããšãããšãéçºã³ã¹ããææ°é¢æ°çã«èšãäžããããšãç¥ãããŠããŸãã èŠä»¶å®çŸ©ã«ãããå質æ
ä¿ãšã¯ãåã«æ©èœã®çŸ
åãäœãã®ã§ã¯ãªãããŠãŒã¶ãŒãçŽé¢ãã課é¡ãã©ã解決ããã©ã®ãããªæ¡ä»¶äžã§åäœãã¹ãããæç¢ºã«èšèªåããããšãæããŸãã ãã®ãã§ãŒãºã§ã¯ã仿§ã®ççŸãæŒãã培åºçã«æé€ããããšãæ±ããããŸãã äŸãã°ããªãã©ã€ã³ç°å¢ã§ã®æåããç¹æ®ãªå
¥åããã£ãéã®åŠçãªã©ãäŸå€çãªã±ãŒã¹ãäºåã«æ³å®ããŠããããšãéèŠã§ãã ææ§ãªèŠä»¶ã¯ãåŸã®å®è£
段éã§ãšã³ãžãã¢ã®èª€è§£ãæããçµæãšããŠãã°ã®æž©åºãšãªããŸãã å¶æ¥è·ãšããŠé¡§å®¢ã®èŠæãæŽçããã¹ãã«ã¯ãå®ã¯ãã®äžæµå·¥çšã§ã®å質管çã«ãããŠéåžžã«å€§ããªæŠåšãšãªããŸãã è«ççãªæŽåæ§ãçªãè©°ãããããžã§ã¯ãã®åå°ã匷åºã«ããããšããé«å質ãªã¢ããªãžã®ç¬¬äžæ©ã§ãã èšèšã»å®è£
ãã§ãŒãºã§ã®å質管çãã€ã³ã èšèšããã³å®è£
ãã§ãŒãºã§ã¯ãã³ãŒãã®æžãæ¹ãæ§é ãã®ãã®ã管çã®å¯Ÿè±¡ãšãªããŸãã åã«æ©èœãå®çŸããã ãã§ãªããä¿å®æ§ãæ¡åŒµæ§ãèæ
®ããèšèšã«ãªã£ãŠããããéèŠã§ãã èšè𿮵éã§ã¯ãå°æ¥çãªæ©èœè¿œå ã容æããäžéšã®ä¿®æ£ãå
šäœã«æªåœ±é¿ãåãŒããªãããšãã£ãèŠç¹ãå¿
èŠã§ãã ããã§è€éãããèšèšãæ¡çšããŠããŸããšããã¹ãå·¥çšã§ãã°ãå€çºãããªãªãŒã¹ã®é
å»¶ãæãåå ã«ãªããŸãã å®è£
段éã«ãããŠã¯ããœãŒã¹ã³ãŒãã®å質ãåäžã«ä¿ã€ããã«ãã³ãŒãã£ã³ã°èŠçŽã®éµå®ããã¢ã¬ãã¥ãŒãæ¬ ãããŸããã ãã¢ã¬ãã¥ãŒãšã¯ãæžããã³ãŒããä»ã®ãšã³ãžãã¢ã客芳çã«ãã§ãã¯ããä»çµã¿ã§ãããåäººã®æã蟌ã¿ã«ãããã¹ãæ©æã«çºèŠãã广ããããŸãã ãŸããéçè§£æããŒã«ãšåŒã°ããèªåãã§ãã¯ããã°ã©ã ãå°å
¥ããããšã§ãæ§æãã¹ãã»ãã¥ãªãã£äžã®è匱æ§ãæ©æ¢°çã«æ€ç¥ããããšãå¯èœã§ãã å¹çãéèŠããåŠç¿è
ã«ãšã£ãŠãããããããŒã«ãã«ãŒã«ã掻çšããŠã人çºçãªãã¹ãä»çµã¿ã§é²ãããšããèãæ¹ã¯ãçŸå Žã§éå®ããããããã§ãã·ã§ãã«ã®èŠç¹ãšèšããŸãã ãã¹ããã§ãŒãºã«ãããå質æ€èšŒã®åœ¹å² ãã¹ããã§ãŒãºã¯ãäœãäžããã¢ããªãå®çŸ©ãããèŠä»¶éãã«åäœããããæçµç¢ºèªãããå質管çã®èŠãšãªãå·¥çšã§ãã ãã¹ãã«ã¯ããã€ãã®æ®µéããããå°ããªéšååäœã§ãã§ãã¯ããåäœãã¹ããããããçµã¿åãããŠé£æºã確èªããçµåãã¹ãããããŠã·ã¹ãã å
šäœãšããŠãŠãŒã¶ãŒã®ç®çãéæã§ããããæ€èšŒããã·ã¹ãã ãã¹ããžãšé²ã¿ãŸãã ãã®æ®µéã§ã®åœ¹å²ã¯ãåã«ãã°ãèŠã€ããããšã ãã§ã¯ãªãã補åããªãªãŒã¹ããŠãè¯ããšãã客芳çãªæ ¹æ ã瀺ãããšã«ãããŸãã ç¹ã«ã¹ããŒããã©ã³ã¢ããªã®å ŽåãOSã®çš®é¡ãããŒãžã§ã³ãç»é¢ãµã€ãºãéä¿¡ç°å¢ãªã©ãå€å²ã«ãããæ¡ä»¶äžã§å®å®ããŠåäœãããã確èªããªããã°ãªããŸããã ãŸããæ©èœçãªæ£ããã ãã§ãªããæäœã®ãããããèŠèªæ§ãšãã£ããŠãŒã¶ããªãã£ã®æ€èšŒãå«ãŸããŸãã ãã°ãçºèŠãããéã¯ãåã«ä¿®æ£ããã ãã§ãªãããªããã®ãã°ãçºçããã®ããšããåå ãç¹å®ããåçºé²æ¢çãç·ŽãããšãéèŠã§ãã ãã¹ããéããŠåŸ¹åºçã«ç£šãäžããããã¢ããªãããããŠãŒã¶ãŒããã®ä¿¡é Œãåã¡åããåžå Žã§é·ãçãæ®ãããšãã§ããã®ã§ãã ãªãªãŒã¹åŸã®å質管çïŒéçšã»æ¹åã»ã¢ãã¿ãªã³ã°ïŒ ã¢ããªã¯ãªãªãŒã¹ããŠçµããã§ã¯ãªããå
¬éåŸã®éçšãããåè³ªç¶æã®æ£å¿µå Žã§ãã å®éã®å©çšç°å¢ã§ã¯ãéçºäžã«ã¯æ³å®ã§ããªãã£ãäºæãã¬ãã©ãã«ãçºçããããšãçãããããŸããã ãã®ããããµãŒããŒã®çšŒåç¶æ³ãã¢ããªã®ã¯ã©ãã·ã¥çãåžžã«ç£èŠããã¢ãã¿ãªã³ã°äœå¶ã®æ§ç¯ãå¿
èŠã§ãã ç°åžžãæ€ç¥ããéã«å³åº§ã«å¯Ÿå¿ã§ããäœå¶ãæŽããŠããããšã§ããŠãŒã¶ãŒãžã®åœ±é¿ãæå°éã«æããããšãã§ããŸãã ãŸãããŠãŒã¶ãŒããå¯ããããåãåãããã¬ãã¥ãŒã¯ãå質æ¹åã®ããã®è²ŽéãªããŒã¿ãšãªããŸãã ã䜿ãã«ããããåäœãé
ãããšãã£ããã£ãŒãããã¯ãçæ¯ã«åãæ¢ããç¶ç¶çã«ã¢ããããŒããè¡ãããšã§ãã¢ããªã®åžå ŽäŸ¡å€ã¯åäžããŸãã ã»ãã¥ãªãã£ã®è匱æ§ãžã®å¯Ÿå¿ããæ°ããOSãžã®è¿œåŸããªãªãŒã¹åŸã®éèŠãªå質管çé
ç®ã§ãã å€åã®æ¿ããITæ¥çã«ãããŠãåžžã«ææ°ã®ç¶æ
ã«ä¿ãããã¢ããªãæäŸãç¶ããããšã¯ããšã³ãžãã¢ãšããŠã®è²¬ä»»ã§ããã坿¥ãèµ·æ¥ãç®æãéã«ãé¿ããŠã¯éããªãç¶ç¶çãªããã»ã¹ãšèšããŸãã ã·ããã¬ãããšç¶ç¶çå質æ¹åã®èãæ¹ è¿å¹Žãã¢ããªéçºã®çŸå Žã§ã¯ãã·ããã¬ããããšããèãæ¹ãäž»æµã«ãªã£ãŠããŸãã ããã¯ãéçºããã»ã¹ã®åŸåïŒå³åŽïŒã§è¡ãããŠãããã¹ããåè³ªç®¡çæŽ»åããããæ©ãæ®µéïŒå·ŠåŽïŒãžååãããŠå®æœããããšãæããŸãã äžå
·åãåŸããèŠã€ããã®ã§ã¯ãªããæåããäœã蟌ãŸãªãããããã¯æ©æã«æã¿åããšããææ³ã§ãã ããã«ãããææ»ãã®ã³ã¹ããåçã«åæžããã¹ããŒãæã®ããéçºãå®çŸããããšãå¯èœã«ãªããŸãã ããã«ãäžåºŠããã®æ¹åã§æºè¶³ããã®ã§ã¯ãªããåžžã«å質ãé«ãç¶ãããç¶ç¶çå質æ¹åãã®å§¿å¢ãæ¬ ãããŸããã éçºã®åãµã€ã¯ã«ã§åŸãããç¥èŠã次ã®éçºã«æŽ»ãããããŒã å
šäœã®ã¹ãã«ãããã»ã¹ãæŽç·ŽãããŠãããŸãã èªåãã¹ãã®å°å
¥ãæ¡å€§ããããCI/CDãšåŒã°ããèªååããŒã«ã掻çšããŠãã³ãŒããä¿®æ£ãããã³ã«å³åº§ã«å質ãã§ãã¯ãèµ°ãä»çµã¿ãäœãããšãæå¹ã§ãã ããããå¹ççãã€è«ççãªå質管çã®ã¢ãããŒããçè§£ããŠããããšã¯ãæªçµéšãããšã³ãžãã¢ãç®æãäžã§ã®åŒ·åãªæŠåšãšãªããåžå ŽäŸ¡å€ã®é«ã人æãžã®éãéãããšã«ã€ãªãããŸãã å質ãé«ããããã®å
·äœçãªãã¹ãææ³ãšææ³ ã¢ããªãæ£ããåãããšãä¿èšŒããããã«ã¯ãè«ççãªè£ä»ãã«åºã¥ããæ€èšŒäœæ¥ãæ¬ ãããŸããã ãšã³ãžãã¢ãšããŠå¹ççã«éçºãé²ããäžã§ããã©ã®ãããªãã¹ããã©ã®æ®µéã§å®æœãã¹ãããçè§£ããããšã¯ãææ»ããé²ããæçã«ãŒãã§é«å質ãªè£œåã圢ã«ããããã«æ¥µããŠéèŠã§ãã ãã¹ãã®çš®é¡ïŒåäœã»çµåã»ã·ã¹ãã ã»åãå
¥ããã¹ãïŒ ã¢ããªéçºã«ããããã¹ãã¯ãå°ããªåäœããæ®µéçã«ç¯å²ãåºããŠããã®ãäžè¬çã§ãã ãŸãåäœãã¹ãã§ã¯ãããã°ã©ã ã®æå°åäœã§ãã颿°ãã¡ãœããããæ³å®éãã«åäœããããåå¥ã«æ€èšŒããŸãã ãã®æ®µéã§äžå
·åãæœ°ããŠããããšããåŸã®å·¥çšã®è² æ
ãæžããéµãšãªããŸãã æ¬¡ã«ãããããè€æ°çµã¿åãããç¶æ
ããã§ãã¯ããã®ãçµåãã¹ãã§ãã ç°ãªãã¢ãžã¥ãŒã«éã§ã®ããŒã¿ã®ããåããæ£ããè¡ãããŠãããã«çŠç¹ãåœãŠãŸãã ãã®åŸãã·ã¹ãã å
šäœãèŠä»¶å®çŸ©éãã«æ©èœãããã確èªããã·ã¹ãã ãã¹ããžãšé²ã¿ãŸãã ããã§ã¯å®éã®å©çšç°å¢ã«è¿ãç¶æ
ã§ãå
šãŠã®æ©èœã飿ºããŠåãããç¶²çŸ
çã«æ€èšŒããŸãã ãããŠæçµæ®µéãåãå
¥ããã¹ãã§ãã ããã¯ãçºæ³šè
ããŠãŒã¶ãŒããæ±ããŠãã䟡å€ãæäŸãããŠããããã確èªããããã»ã¹ã§ãããããžãã¹çãªç®æšãéæããŠãããã倿ããéåžžã«éèŠãªãã§ãŒãºãšãªããŸãã åæ®µéã§ç®çãæç¢ºã«åããããšã§ããã°ã®çºèŠå¹çãæå€§åãããããšãã§ããŸãã éæ©èœãã¹ãïŒæ§èœã»ã»ãã¥ãªãã£ã»è² è·ãã¹ãïŒ æ©èœã仿§éãã«åãããšã¯æäœéã®å質ã§ãããå®çšçãªã¢ããªã«ããããã«ã¯ãéæ©èœé¢ãã®æ€èšŒãæ¬ ãããŸããã æ§èœãã¹ãã§ã¯ãæäœã«å¯Ÿããåå¿é床ããŠãŒã¶ãŒã®ã¹ãã¬ã¹ã«ãªããªãç¯å²ã«åãŸã£ãŠãããã確èªããŸãã ã©ãã»ã©åªããæ©èœã§ããç»é¢ã®åãæ¿ãã«æ°ç§ãããããã§ã¯åžå ŽäŸ¡å€ã¯äœããªã£ãŠããŸããŸãã ãŸãã»ãã¥ãªãã£ãã¹ãã¯ãäžæ£ã¢ã¯ã»ã¹ãå人æ
å ±æŒæŽ©ã®ãªã¹ã¯ãæªç¶ã«é²ãããã«ãè匱æ§ãæœãã§ããªãããå°éçãªèŠç¹ã§èª¿æ»ããæŽ»åã§ãã ããã«ãå€ãã®ãŠãŒã¶ãŒãåæã«ã¢ããªãå©çšããŠãããŠã³ããªãããæ€èšŒããã®ãè² è·ãã¹ãã§ãã äžåºŠã«å€§éã®ã¢ã¯ã»ã¹ãéäžããéã«ãã·ã¹ãã ãæ£åžžã«èãããããããããã¯éçãè¶
ãããšãã«ã©ã®ããã«å®å
šã«åæ¢ãããã確èªããŸãã ãããã®éæ©èœãã¹ãã軜èŠãããšããªãªãŒã¹åŸã«äºæãã¬ãµãŒãã¹åæ¢ãæããäŒæ¥ã®ä¿¡é Œã倧ããæãªãåå ãšãªããŸãã è«ççãªãšã³ãžãã¢ãç®æããªããç®ã«èŠããåãã ãã§ãªããã·ã¹ãã ã®è£åŽã«æœãå®å®æ§ãå®å
šæ§ã«ãç®ãåããå¿
èŠããããŸãã ãã¹ãèšèšææ³ïŒåå€åå²ã»å¢çå€åæã»ãã£ã·ãžã§ã³ããŒãã«ïŒ éãããæéã®äžã§å¹ççã«ãã¹ããè¡ãã«ã¯ãå
šãŠã®ãã¿ãŒã³ãéé²ã«è©Šãã®ã§ã¯ãªããçè«ã«åºã¥ããèšèšææ³ãçšããã¹ãã§ãã 代衚çãªãã®ã«åå€åå²ããããŸãã ããã¯ãå
¥åå€ããåãçµæãåŸãããã°ã«ãŒããã«åããåã°ã«ãŒããã代衚å€ãäžã€éžãã§ãã¹ãããææ³ã§ãã ããã«ãããç¡é§ãªãã¹ãåæ°ãåçã«æžããããšãã§ããŸãã äžæ¹ã§ãäžå
·åãçºçããããã®ã¯ã°ã«ãŒãã®å¢ç®ã§ãã ãããéç¹çã«çãã®ãå¢çå€åæã§ãäŸãã°ã100以äžããšããæ¡ä»¶ãªã99ã100ã101ããã³ãã€ã³ãã§ç¢ºèªããå€å®ã®ãã¹ããªãããçªãæ¢ããŸãã ãŸããè€æ°ã®æ¡ä»¶ãè€éã«çµã¿åãããããžãã¯ã®æ€èšŒã«ã¯ããã£ã·ãžã§ã³ããŒãã«ãæå¹ã§ãã æ¡ä»¶ã®çµã¿åãããšããã«å¿ããåäœã衚圢åŒã§æŽçããããšã§ãèæ
®æŒããèŠèŠçã«é²ããè€éãªä»æ§ãè«ççã«æŽçã§ããŸãã ããããææ³ãé§äœ¿ããããšã¯ãåã«äœæ¥ãéããã ãã§ãªãã第äžè
ã«å¯ŸããŠãããªããã®ãã¹ãã ãã§ååã ãšèšããã®ãããšããæ ¹æ ãæç¢ºã«ç€ºãããšã«ã€ãªãããŸãã ããã¯å°æ¥çã«ãšã³ãžãã¢ãšããŠããŒã ããªãŒãããéã«ã圹ç«ã€ã極ããŠå®è·µçãªã¹ãã«ã§ãã ã¢ãã€ã«ã¢ããªç¹æã®ãã¹ã芳ç¹ïŒç«¯æ«å·®ç°ã»OSäŸåïŒ ã¢ãã€ã«ã¢ããªã®éçºã«ãããŠæãé ãæ©ãŸããã®ãã端æ«ãOSã®å€æ§æ§ããããããã©ã°ã¡ã³ããŒã·ã§ã³ãžã®å¯Ÿå¿ã§ãã Webã¢ããªãšç°ãªããAndroidãiOSãšãã£ãOSã®ããŒãžã§ã³éãã ãã§ãªããåã¡ãŒã«ãŒç¬èªã®ã«ã¹ã¿ãã€ãºãããŒããŠã§ã¢ã®æ§èœå·®ãåäœã«å€§ããªåœ±é¿ãäžããŸãã ç¹å®ã®æ©çš®ã§ã¯å¿«é©ã«åãã®ã«ãå¥ã®æ©çš®ã§ã¯ç»é¢ã厩ããããç¹å®ã®ã»ã³ãµãŒæ©èœãåäœããªãã£ããããããšã¯çãããããŸããã ãã®ãããã¿ãŒã²ãããšãªããŠãŒã¶ãŒå±€ãå©çšããŠããäž»èŠãªç«¯æ«ãOSãäºåã«éžå®ãã宿©ã§ã®æ€èšŒãè¡ãããšãå¿
é ãšãªããŸãã ç»é¢ã®è§£å床ãã¢ã¹ãã¯ãæ¯ã®éãã«ããã¬ã€ã¢ãŠã厩ããã¡ã¢ãªå®¹éã®å·®ã«ããåäœã®äžå®å®åãªã©ãã¢ãã€ã«ç¹æã®èгç¹ã§ãã§ãã¯ãªã¹ããäœæããããšãéèŠã§ãã ãŸãããã¯ã°ã©ãŠã³ãã«åã£ãéã®æåããããããªãŒæ®éãå°ãªãæã®åŠçãäžå®å®ãªéä¿¡ç°å¢ã§ã®èªå忥ç¶ãªã©ãã¹ããŒããã©ã³ãªãã§ã¯ã®å©çšã·ãŒã³ãæ³å®ãããã¹ããè¡ãããšãããŠãŒã¶ãŒæºè¶³åºŠã®é«ãã¢ããªãä»äžããããã®å¿
é æ¡ä»¶ãšãªããŸãã ãã¹ãèªååã®æŽ»çšãšæ³šæç¹ éçºã®ã¹ããŒããäžãã€ã€å質ãä¿ã€ããã®åŒ·åãªææ®µãããã¹ãã®èªååã§ãã äžåºŠã¹ã¯ãªãããäœæããã°ããã¿ã³äžã€ã§äœåºŠã§ãåããã¹ããç¹°ãè¿ãããããæ©èœè¿œå ã®ãã³ã«æ¢åã®éšåãå£ããŠããªããã確èªãããååž°ãã¹ããã®å¹çãé£èºçã«åäžããŸãã ç¹ã«éçºãµã€ã¯ã«ãéããããžã§ã¯ãã§ã¯ãèªååãªãã«å質ãç¶æããããšã¯å°é£ã§ãã ã³ãŒãã®ä¿®æ£ãå³åº§ã«æ€èšŒãããä»çµã¿ã¯ããšã³ãžãã¢ã«å¿ççãªå®å¿æãäžããææ¢ãªæ¹åãå¯èœã«ããŸãã ãã ããèªååãå
šãŠã®è§£æ±ºçã«ãªãããã§ã¯ãããŸããã ãã¹ãã¹ã¯ãªããèªäœã®äœæãã¡ã³ããã³ã¹ã«ã¯ã³ã¹ããããããé »ç¹ã«ç»é¢ãã¶ã€ã³ãå€ãããã§ãŒãºã§ã¯ãããã£ãŠæåãã¹ãã®æ¹ãå¹ççãªå ŽåããããŸãã ãŸãäººã®ææ§ã«äŸåãã䜿ãå¿å°ããäžåºŠããããè¡ããªãç¹æ®ãªãã¹ãã¯èªååã«ã¯åããŸããã äœã§ãèªååããããšããã®ã§ã¯ãªããç¹°ãè¿ãã®å€ãåçŽãªäœæ¥ã¯æ©æ¢°ã«ä»»ãã人éã¯ããé«åºŠãªèšèšãæ¢çŽ¢çãªãã¹ãã«éäžãããšãã䜿ãåããèå¿ã§ãã ãã®æè³å¯Ÿå¹æãèŠæ¥µãããã©ã³ã¹æèŠããããå¹çãéèŠãããããã§ãã·ã§ãã«ã«æ±ããããè³è³ªã§ãã å質管çãæ¯ããäœå¶ã»ããã»ã¹ã»ããŒã« ã¢ããªéçºã«ãããå質管çã¯ãå人ã®ã¹ãã«ã ãã«é Œãã®ã§ã¯ãªããçµç¹çãªäœå¶ãé©åãªããŒã«ããããŠæç¢ºãªããã»ã¹ã«ãã£ãŠæ¯ããããŠããŸãã å¹ççã«é«å質ãªãµãŒãã¹ãçã¿åºãããã®ä»çµã¿ãçè§£ããããšã¯ããšã³ãžãã¢ãšããŠã®åžå ŽäŸ¡å€ãé«ããéèŠãªã¹ããããšãªããŸãã å質管çäœå¶ïŒQAããŒã ã»éçºããŒã ã®åœ¹å²åæ
ïŒ é«å質ãªã¢ããªãç¶ç¶çã«ãªãªãŒã¹ããããã«ã¯ãéçºããŒã ãšQAïŒQuality AssuranceïŒããŒã ã®æç¢ºãªåœ¹å²åæ
ãšé£æºãäžå¯æ¬ ã§ãã éçºããŒã ã®äž»ãªè²¬åã¯ãèŠä»¶ã«åºã¥ããæ©èœãå®è£
ãããœãŒã¹ã³ãŒãã¬ãã«ã§ã®å質ãæ
ä¿ããããšã«ãããŸãã å
·äœçã«ã¯ããã°ã©ãã³ã°äžã®ã»ã«ããã§ãã¯ããéçºè
å士ã§è¡ãã³ãŒãã¬ãã¥ãŒãåäœãã¹ãã®å®æœãªã©ãå«ãŸããŸãã éçºè
ããæ£ããåãã¯ãã ããšãã確信ãæã£ãŠæ¬¡ã®å·¥çšãžæž¡ãããšããäœå¶ã®åºæ¬ãšãªããŸãã äžæ¹ã§QAããŒã ã¯ããŠãŒã¶ãŒã«è¿ã客芳çãªèŠç¹ãã補åãæ€èšŒããå°ééå£ã§ãã éçºããŒã ãäœæããæ©èœãã仿§æžéãã§ãããããŸããŠãŒã¶ãŒã«ãšã£ãŠäœ¿ããããããšãã芳ç¹ã§å€è§çãªãã¹ãã宿œããŸãã åãªããã°æ¢ãã«ãšã©ãŸãããéçºããã»ã¹ã®æ¹åãææ¡ãããããªãªãŒã¹å€æã®åºæºãçå®ããããã圹å²ãæ
ããŸãã ãã®ããã«ãäœãåŽãšæ€èšŒããåŽãããããã®å°éæ§ãçºæ®ãã€ã€ãå
±éã®ç®æšã§ããããŠãŒã¶ãŒæºè¶³åºŠã®åäžãã«åãã£ãŠååãåãäœå¶ãããããããã§ãã·ã§ãã«ãªéçºçŸå Žã®å§¿ã§ãã åè³ªææšïŒKPIïŒãšå¯èŠåã®éèŠæ§ å質管çãè«ççã«é²ããããã«ã¯ãæèŠã«é Œããæ°å€ã§ç¶æ³ãææ¡ãããå¯èŠåããæ¥µããŠéèŠã§ãã ãã®ããã«çšããããã®ãåè³ªææšïŒKPIïŒã§ãã 代衚çãªææšã«ã¯ããã¹ãã®ç¶²çŸ
çã瀺ããã¹ãã«ãã¬ããžããçºèŠããããã°ã®æ°ãä¿®æ£ã«ããã£ãæéããªãªãŒã¹åŸã«çºçããäžå
·åã®æ°ãªã©ããããŸãã ãããã®æ°å€ãèšæž¬ããããšã§ãçŸåšã®ãããžã§ã¯ããæ±ãããªã¹ã¯ãæ©æã«çºèŠããé©åãªå¯Ÿçãè¬ããããšãå¯èœã«ãªããŸãã ææšãå¯èŠåããã¡ãªããã¯ãããŒã å
šäœã§å®¢èгçãªçŸç¶èªèãæãŠãç¹ã«ãããŸãã äŸãã°ãç¹å®ã®æ©èœã«ãã°ãéäžããŠããããšãæ°å€ã§ãããã°ããã®éšåã®èšèšãèŠçŽããšãã£ãè«ççãªæææ±ºå®ãã§ããŸãã ãŸããé²æç¶æ³ãã°ã©ããªã©ã§å
±æãããŠããã°ããªãªãŒã¹ã®å»¶æå€æããªãœãŒã¹ã®è¿œå æå
¥ãšãã£ãçµå¶çãªå€æãã¹ã ãŒãºã«è¡ããŸãã æ°åã«åºã¥ãã管çã¯ãå¹çãéèŠãããšã³ãžãã¢ã«ãšã£ãŠãç¡é§ãªäœæ¥ãæžããææãæå€§åããããã®åŒ·åãªæŠåšãšãªããŸãã ãã¹ã管çããŒã«ã®åœ¹å²ãšå°å
¥ã¡ãªãã ã¢ããªã®èŠæš¡ã倧ãããªãã«ã€ããèšå€§ãªæ°ã®ãã¹ãé
ç®ãæäœæ¥ãåçŽãªè¡šèšç®ãœããã§ç®¡çããã®ã¯éçã«éããŸãã ããã§å°å
¥ãããã®ããã¹ã管çããŒã«ã§ãã ãã®ããŒã«ã®äž»ãªåœ¹å²ã¯ããã¹ãã±ãŒã¹ã®äœæãå®è¡çµæã®èšé²ãé²æç¶æ³ã®éèšãäžå
管çããããšã«ãããŸãã éå»ã«ã©ã®ãããªãã¹ããè¡ããã©ã®ãããªçµæã ã£ãã®ããšããå±¥æŽãç°¡åã«åç
§ã§ãããããæ
å ±ã®å±äººåãé²ãããšãã§ããŸãã å°å
¥ã®å€§ããªã¡ãªããã¯ããã¹ãäœæ¥ã®å¹çåãšéææ§ã®åäžã§ãã 誰ãã©ã®ãã¹ããå®äºããçŸåšã©ãã§æ»ã£ãŠããã®ãããªã¢ã«ã¿ã€ã ã§å
±æãããããã管çè
ã®è² æ
ã倧å¹
ã«è»œæžãããŸãã ãŸããåå©çšå¯èœãªãã¹ãã±ãŒã¹ãè³ç£ãšããŠèç©ã§ãããããæ¬¡ã®ã¢ããããŒãã®éã«ãè¿
éã«æ€èšŒãéå§ã§ããŸãã ããŒã«ã䜿ãããªãããšã¯ãåãªãäœæ¥ã®ã¹ããŒãã¢ããã ãã§ãªãããããžã§ã¯ãå
šäœã®å質ã¬ãã«ãäžå®ã«ä¿ã€ããã®æšæºåã«çŽçµããŸãã ãã°ç®¡çã»ãã¬ãŒãµããªãã£ã®ç¢ºä¿ çºèŠãããäžå
·åã確å®ã«ä¿®æ£ããåçºãé²ãããã«ã¯ããã°ç®¡çã·ã¹ãã ïŒBTSïŒã®æŽ»çšãå¿
é ã§ãã ãã°äžã€ã²ãšã€ã«IDãæ¯ããçºçç¶æ³ãéèŠåºŠãæ
åœè
ãä¿®æ£ã¹ããŒã¿ã¹ã管çããããšã§ãä¿®æ£æŒããšããåæ©çãªãã¹ããŒãã«ããŸãã ããã«éèŠãªã®ãããã¬ãŒãµããªãã£ïŒè¿œè·¡å¯èœæ§ïŒãã®ç¢ºä¿ã§ãã ããã¯ãç¹å®ã®äžå
·åãã©ã®èŠä»¶ã«é¢é£ããã©ã®ã³ãŒãä¿®æ£ã«ãã£ãŠçŽããã©ã®ãã¹ãã§æ€èšŒãããã®ããšããäžé£ã®æµããçŽä»ããããšãæå³ããŸãã ãã¬ãŒãµããªãã£ã確ä¿ãããŠãããšãäžå
·åãçºçããéã®åœ±é¿ç¯å²ãå³åº§ã«ç¹å®ã§ãããããä¿®æ£ã«ããäºæ¬¡è¢«å®³ãé²ãããšãã§ããŸãã ãŸãèŠä»¶ã®å€æŽããã£ãéã«ãã©ã®ãã¹ãã±ãŒã¹ãä¿®æ£ãã¹ãããäžç®ã§ãããããã«ãªããŸãã ããããç·»å¯ãªç®¡çããã»ã¹ã¯ãäžèŠé åãã«èŠãããããããŸããããå€§èŠæš¡ãªéçºãé·æçãªéçšã«ãããŠã¯ãçµæãšããŠæãå¹ççãªææ³ãšãªããŸãã è«ççãªæŽåæ§ãéèŠãããšã³ãžãã¢ã«ãšã£ãŠããã®äžæ°é貫ã®ç®¡çäœå¶ã¯ä¿¡é Œã®åºç€ãšãªããŸãã ã¢ãžã£ã€ã«éçºã«ãããå質管çã®é²ãæ¹ è¿å¹Žã®äž»æµã§ããã¢ãžã£ã€ã«éçºã§ã¯ãçæéã§éçºãšãªãªãŒã¹ãç¹°ãè¿ããããåŸæ¥ã®ãæåŸã«ãŸãšããŠãã¹ãããããšããææ³ã¯éçšããŸããã ããã§ã¯ãåã€ãã¬ãŒã·ã§ã³ïŒå埩ïŒã®äžã«å質管çãçµã¿èŸŒãé²ãæ¹ãæ±ããããŸãã éçºã®åææ®µéããQAãåç»ãã仿§ã®äžåãæªç¶ã«é²ããšãšãã«ãå®è£
ãšäžŠè¡ããŠãã¹ããé²ããŠããã¹ããŒãæãéèŠã§ãã ã¢ãžã£ã€ã«ã«ãããå質管çã®éµã¯ãèªååããšãããŒã å
šäœã§ã®å質æèãã§ãã é »ç¹ãªå€æŽã«å¯Ÿå¿ããããã«ã¯ãååž°ãã¹ããèªååããåžžã«åºæ¬æ©èœãå£ããŠããªãããšãä¿èšŒããä»çµã¿ãäžå¯æ¬ ã§ãã ãŸãå質ã¯QAããŒã ã ãã®è²¬ä»»ã§ã¯ãªããéçºè
ãã¹ã¯ã©ã ãã¹ã¿ãŒãå
šå¡ãåœäºè
æèãæã€ããšãæšå¥šãããŸãã çããµã€ã¯ã«ã§ãã£ãŒãããã¯ãåŸãŠãå³åº§ã«ããã»ã¹ãžåæ ãããç¶ç¶çãªæ¹å掻åããããå€åã®æ¿ããçŸä»£ã®ã¢ããªéçºã«ãããŠãã¹ããŒããšå質ãäž¡ç«ãããå¯äžã®éãšèšããŸãã å質管çãæåãããããã®ãã€ã³ããšããããèª²é¡ ã¢ããªéçºã®çŸå Žã§ã¯ãçæ³çãªå質管çã远æ±ããäžæ¹ã§ãçŸå®çãªå¶çŽãäºæãã¬ãã©ãã«ã«çŽé¢ããããšãå°ãªããããŸããã ç¹ã«ãšã³ãžãã¢ãžã®è»¢è·ãç®æãæ®µéã§ã¯ãæè¡çãªç¥èã ãã§ãªããéçºãããžã§ã¯ãå
šäœãåæ»ã«é²ããããã®ãèãæ¹ããã課é¡ãžã®å¯ŸåŠæ³ããçè§£ããŠããããšãã峿ŠåãšããŠè©äŸ¡ããããã€ã³ãã«ãªããŸãã å質ãšã¹ããŒãã®ãã¬ãŒããªãã®èãæ¹ ã¢ããªéçºã«ãããŠãå質ã®è¿œæ±ãšéçºã¹ããŒãã®åäžã¯ãã°ãã°å¯Ÿç«ããé¢ä¿ã«ãããŸãã ããžãã¹ã®çŸå Žã§ã¯ãç«¶åããæ©ããªãªãŒã¹ãããããšããèŠæã匷ãŸãäžæ¹ã§ãé床ãªã¹ããŒãéèŠã¯ãã¹ãå·¥çšã®çç¥ãæããçµæãšããŠé倧ãªäžå
·åãåŒãèµ·ãããªã¹ã¯ãé«ããŸãã ãã®ãã¬ãŒããªããã©ãã³ã³ãããŒã«ããããããããžã§ã¯ãã®æåŠãåããéèŠãªå€æè»žãšãªããŸãã è«ççãªè§£æ±ºçãšããŠã¯ããã¹ãŠã®æ©èœãå®ç§ã«ä»äžããŠããåºãã®ã§ã¯ãªãããŸãã¯æ žãšãªã䟡å€ãæäŸãããæå°éã®æ©èœïŒMVPïŒãã«çµãããã®ç¯å²å
ã§åŸ¹åºçã«å質ã磚ãäžããã¢ãããŒããæå¹ã§ãã äžå®å
šãªãã®ã倧éã«äœãã®ã§ã¯ãªããå°ãããšãé«å質ãªãã®ã段éçã«ç©ã¿äžããŠããããšã§ããªãªãŒã¹åŸã®å€§èŠæš¡ãªææ»ããé²ããããŒã¿ã«ã§ã®éçºæéãççž®ããããšãå¯èœã«ãªããŸãã ã¹ããŒããç¶æããªããå質ãæ
ä¿ããããã«ã¯ãããããæŠç¥çãªåªå
é äœä»ããšãèªååããŒã«ã®ç©æ¥µçãªæŽ»çšã«ããå¹çåãæ¬ ãããŸããã ãããã倱æäŸïŒãã¹ãäžè¶³ã»å±äººåã»åŸå·¥çšäŸåïŒ å€ãã®éçºãããžã§ã¯ããå質ãã©ãã«ã«èŠèãããåå ã«ã¯ãå
±éã®ãã¿ãŒã³ãååšããŸãã æã代衚çãªãã®ã¯ãçŽæçŽåã®ããã¹ãäžè¶³ãã§ãã éçºã®é
ãããã¹ãæéã®ççž®ã§åãåãããããšããçµæãåºæ¬çãªãã°ãèŠéãããŸãŸãªãªãŒã¹ãããŠãŒã¶ãŒã®ä¿¡é Œã倱ãã±ãŒã¹ã¯åŸãçµ¶ã¡ãŸããã ãŸããç¹å®ã®çç·Žãšã³ãžãã¢ã ãã仿§ãææ¡ããŠãããå±äººåããæ·±å»ãªèª²é¡ã§ãã ãã®æ
åœè
ãäžåšã«ãªã£ãç¬éã«å質ãç¶æã§ããªããªãäœå¶ã¯ããããžã§ã¯ãã®ç¶ç¶æ§ãå±ããããŸãã ããã«ãå質管çãéçºã®æåŸã«ã ãè¡ããåŸå·¥çšäŸåãã倱æã®å
žåäŸã§ããèšè𿮵éã®ãã¹ããªãªãŒã¹çŽåã®ãã¹ãã§èŠã€ãããšããŠããä¿®æ£ã«ã¯è«å€§ãªã³ã¹ããããããŸãã ãããã®å€±æãé²ãããã«ã¯ãæ©ã段éããããã¥ã¡ã³ããæŽåãã誰ã§ããã¹ãã宿œã§ããæšæºåãé²ãããšãšãã«ãéçºã®åãã§ãŒãºã«ãã§ãã¯æ©èœã忣ãããããšãéèŠã§ãã 倱æäºäŸãåé¢æåž«ãšããŠãä»çµã¿ã§å質ãå®ãæèãæã€ããšããå®å®ããéçºäœå¶ã®æ§ç¯ã«ã€ãªãããŸãã å質æåã®éžæãšããŒã ã³ãã¥ãã±ãŒã·ã§ã³ å質管çã¯ç¹å®ã®æ
åœè
ãããŒã«ã ãã§å®çµãããã®ã§ã¯ãªããããŒã å
šå¡ããé«ãå質ãå±ããããšããå
±éã®äŸ¡å€èгãæã€ããšã§åããŠæ©èœããŸãã ãããå質æåãšåŒã³ãŸãã ããã°ã©ãã³ã°ã®ã¹ãã«ãé«ããŠããå質ãžã®æèãäœãã¡ã³ããŒãäžäººããã ãã§ãã¢ããªå
šäœã®ä¿¡é Œæ§ã¯æºããã§ããŸããŸãã ãã®ãããæ¥é ããã³ãŒãã¬ãã¥ãŒãéããŠè¯ãæžãæ¹ãåŠã³åã£ãããäºçްãªäžå
·åã®èœãèŠéããªãå§¿å¢ãå
±æãããããããšã倧åã§ãã ããã§éµãšãªãã®ãã³ãã¥ãã±ãŒã·ã§ã³ã§ãã äžå
·åãèŠã€ãã£ãéã«ãç¯äººæ¢ããããã®ã§ã¯ãªãããªããã®ãã¹ãèµ·ããä»çµã¿ã«ãªã£ãŠããã®ããã建èšçã«è°è«ã§ããç°å¢ããå質ãé«ããåå£ãšãªããŸãã å¶æ¥è·ã§å¹ã£ã調æŽåããçžæã®æå³ãæ±²ã¿åã察人ã¹ãã«ã¯ãéçºçŸå Žã«ãããŠãéåžžã«éå®ãããŸãã æè¡çãªæ£ããã䞻匵ããã ãã§ãªããããŒã å
šäœã§å質åäžã«åãåãã空æ°ãäœãããšã¯ããšã³ãžãã¢ãšããŠã®é«åºŠãªãœããã¹ãã«ãšèšããŸãã ç¶ç¶çæ¹åïŒPDCAã»æ¯ãè¿ãïŒã®å®è·µæ¹æ³ äžåºŠæ±ºããå質管çã®ããã»ã¹ãããããžã§ã¯ãã®é²è¡ãšãšãã«æé©åããŠããå¿
èŠããããŸãã ããã§å®è·µãããã®ããPDCAãµã€ã¯ã«ã«åºã¥ããç¶ç¶çæ¹åã§ãã å
·äœçã«ã¯ãéçºã®åºåãããšã«ãæ¯ãè¿ãïŒã¬ããã¹ãã¯ãã£ãïŒãã宿œããèµ·ããåé¡ã®æ ¹æ¬åå ãç¹å®ããŠã次ã®ãµã€ã¯ã«ã§ã©ãæ¹åããããå
·äœçã«æ±ºå®ããŸãã æ¯ãè¿ãã®å Žã§ã¯ãåã«åçããã ãã§ãªããè¯ãã£ãç¹ããå
±æãããããæšæºåããããšãå¹çåãžã®è¿éã§ãã äŸãã°ãæ°ãããã¹ãããŒã«ãå°å
¥ããŠãã°ã®æ€ç¥çãäžãã£ãã®ã§ããã°ããããããŒã å
šäœã®æšæºã«ãŒã«ã«ææ ŒãããŸãã ãŸãéå»ã®ãã°ããŒã¿ãåæããã©ã®ãããªçš®é¡ã®ãã¹ãå€ãã®ããšããåŸåãææ¡ããããšã§ãéç¹çã«ãã§ãã¯ãã¹ããã€ã³ããæç¢ºã«ãªããŸãã è«ççã«ããŒã¿ãåæããæšæ¥ããã仿¥ã仿¥ãããææ¥ãšããã»ã¹ãæŽç·ŽãããŠããå§¿å¢ã¯ãæé·ææ¬²ã®é«ãåŠç¿è
ã«ãšã£ãŠèŠªåæ§ã®é«ãåãçµã¿ãšèšããã§ãããã ä»åŸã®ãã¬ã³ãïŒAIãã¹ãã»DevOpsã»å質ã®èªååïŒ ã¢ããªéçºã®å質管çã¯ããã¯ãããžãŒã®é²åãšãšãã«æ¥éã«å€åããŠããŸãã ä»åŸã®å€§ããªãã¬ã³ãã®äžã€ããAIãæŽ»çšãããã¹ãã®é«åºŠåã§ãã AIãéå»ã®ãã°ãã¿ãŒã³ãåŠç¿ãã人éãæ°ã¥ãã«ããæœåšçãªäžå
·åãäºæž¬ãããããã¹ãã³ãŒããèªåçæãããããæè¡ãæ®åãã€ã€ãããŸãã ããã«ãããåçŽãªç¹°ãè¿ãäœæ¥ã¯ããã«æ©æ¢°ãžç§»è¡ãã人éã¯ããã¯ãªãšã€ãã£ããªèšèšæ¥åã«éäžã§ããããã«ãªããŸãã ãŸããéçºïŒDevelopmentïŒãšéçšïŒOperationsïŒã坿¥ã«é£æºããããDevOpsãã®èãæ¹ããåè³ªç¶æã«ã¯æ¬ ãããŸããã ã³ãŒããæžããç¬éã«èªåã§ãã¹ããèµ°ãããã®ãŸãŸæ¬çªç°å¢ã«è¿ãç¶æ
ã§æ€èšŒããããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã»ç¶ç¶çããªããªãŒïŒCI/CDïŒãã®ä»çµã¿ã¯ããã¯ãæ¥çã®æšæºãšãªãã€ã€ãããŸãã ããããææ°ã®ãã¬ã³ããèªååã®ä»çµã¿ã«ã¢ã³ããã匵ããæ°ããæè¡ãå¹ççã«åãå
¥ããæè»æ§ãæã€ããšã¯ã倧ããªã¢ããã³ããŒãžãšãªãã¯ãã§ãã ãŸãšã ã¢ããªéçºã«ãããå質管çã¯ãåã«ããã°ãèŠã€ããŠçŽãããšããäœæ¥ã§ã¯ãããŸããã èŠä»¶å®çŸ©ãããªãªãŒã¹åŸã®éçšã«è³ããŸã§ããã¹ãŠã®å·¥çšã§ãŠãŒã¶ãŒã«å±ãã䟡å€ãæå€§åããããžãã¹ã®ä¿¡é Œæ§ãæ
ä¿ããããã®æŠç¥çãªæŽ»åã§ãã ä»åã¯ã以äžã®éèŠãªãã€ã³ãã確èªããŠããŸããã å質ã¯äžæµã§äœã蟌ãïŒ èŠä»¶å®çŸ©ãèšè𿮵éã§ã®é
æ
®ããåŸã®ã³ã¹ãåæžãšé«å質ã«çŽçµããã å€è§çãªãã¹ãã®å®æœïŒ æ©èœé¢ã ãã§ãªããæ§èœãã»ãã¥ãªãã£ãã¢ãã€ã«ç¹æã®å·®ç°ãèæ
®ããæ€èšŒãäžå¯æ¬ ã§ããã ä»çµã¿ãšããŒã«ã®æŽ»çšïŒ ãã¹ãèªååã管çããŒã«ãå°å
¥ããå±äººåãé²ãã§å¹ççã«å質ãç¶æããã ç¶ç¶çãªæ¹åãµã€ã¯ã«ïŒ PDCAãæ¯ãè¿ããéããŠãããŒã å
šäœã®å質æåãéžæãç¶ããã ãšã³ãžãã¢ãšããŠãã£ãªã¢ãåãæããèªåã®ã¢ã€ãã¢ã圢ã«ããŠããéçšã«ãããŠãå質管çã®ç¥èã¯ãäžçã¢ãã®ã¹ãã«ããšãªããŸãã ææ°ã®AIãã¹ããDevOpsãšãã£ããã¬ã³ãã«ãç®ãåãã€ã€ããŸãã¯äžã€ã²ãšã€ã®å·¥çšã§ããªããã®å質ãå¿
èŠãªã®ãããè«ççã«èããããšããå§ããŠã¿ãŠãã ããã ãã®ç©ã¿éãããå°æ¥çãªå¹Žåã¢ãããããŠãŒã¶ãŒã«æããããµãŒãã¹éçºãžãšç¢ºå®ã«ã€ãªãã£ãŠããã§ãããã QAæ¥åå¹çåãªãPractiTest ãã¹ã管çã®å¹çå ã«ã€ããŠãæ©ã¿ã§ã¯ãããŸãããïŒãããªãšãã¯ãã¹ãè³ç£ã®äžå
管çãããããšã§ å·¥æ°ã20%åæžã§ãã ç·åãã¹ã管çããŒã«ã PractiTest ããããããã§ãïŒ PractiTest (ãã©ã¯ãã£ãã¹ã) ã«é¢ãã ãåãåãã ãã©ã€ã¢ã«ã¢ã«ãŠã³ããç³ã蟌ã¿ãã補åãã¢ã®äŸé Œã æ©èœã«ã€ããŠã®åãåãããªã©ãæ°è»œã«ãåãåãããã ããã ãåãåãã ãã®èšäºã®ç£ä¿® Dr.Tããã¹ããšã³ãžãã¢ã PractiTestãšãã³ãžã§ãªã¹ãã 倧åŠåæ¥åŸãå€è»çŽæ£Naviéçºã®ãã¹ããšã³ãžãã¢ãšããŠãã£ãªã¢ãã¹ã¿ãŒããDTVãã¥ãŒãéçºäŒç€Ÿã第äžè
æ€èšŒäŒç€Ÿçãæ°ã
ã®ãããã¯ãã®æ€èšŒæ¥åã«åŸäºã 2017å¹Žæ ªåŒäŒç€Ÿã¢ã³ãã«ã³ããžå
¥ç€ŸãããããŒãžã¡ã³ãæ¥åã®åããèªãããã¹ããšã³ãžãã¢ãšããã¹ãã³ã³ãµã«ãPractiTestã®å°å
¥ãµããŒããªã©ãæ
åœããŠããã èšäºå¶äœïŒ å·äžãµãã· ïŒããŒã±ã¿ãŒãååäŒç€Ÿããã¯ãŒãšä»£è¡šïŒ
åå Gensparkãšã¯ïŒãã玹ä»ããŸããããä»å㯠Genspark ã®é³å£°å
¥åããŒã« Speakly ã玹ä»ããŸãã ãšãŒãžã§ã³ãåAI Gensparkãšã¯ïŒ 次äžä»£åAIãªãŒã«ã€ã³ã¯ã³ã¯ãŒã¯ã¹ããŒã¹ GensparkïŒãžã§ã³ã¹ããŒã¯ïŒAI ã¯ãŒã¯ã¹ããŒã¹ 3.0 ã«ã€ããŠç޹ä»ããŸãã blog.usize-tech.com 2026.03.24 Speakly ãšã¯ïŒ SpeaklyïŒã¹ããŒã¯ãªãŒïŒ ãšã¯ããšãŒãžã§ã³ãåAIïŒAIãšãŒãžã§ã³ãïŒGenspark ãéçºã»æäŸããã æ¬¡äžä»£AIé³å£°å
¥åããŒã« ã§ã2026幎1æã«ãªãªãŒã¹ãããã¿ã€ãã³ã°ããããŠã話ãã ãããšããã³ã³ã»ããã§çŸåšéåžžã«æ³šç®ãéããŠããŸãã åŸæ¥ã®é³å£°å
¥åããŒã«ïŒiOSé³å£°å
¥åãGoogleé³å£°å
¥åãªã©ïŒã¯ã声ãæåã«ããã ããã§ããããSpeaklyã¯ç°ãªããŸãã ã¿ã€ãã³ã°ã®4åéã§å
¥å 話ããèšèããªã¢ã«ã¿ã€ã ã§ããã¹ãåãäžè¬çãªã¿ã€ãã³ã°ãšæ¯ã¹ãŠçŽ4åã®ã¹ããŒãã§ã¢ã€ãã¢ãã¢ãŠããããã§ããŸãã AIèªåç·šéæ©èœïŒãã£ã©ãŒé€å»ã»æŽåœ¢ïŒ 話ããå
容ããã®ãŸãŸæåã«ããã®ã§ã¯ãªããAIãæèãçè§£ããŠèªç¶ãªæç« ã«æŽããŠãããŸãã ãããŒã£ãšã仿¥ããããšãã3ã€ãã£ãŠãããŒããŸãã¡ãŒã«è¿ããŠãããšãã¬ããŒãä»äžããŠãããšäŒè°ã®è³æäœãããšé³å£°çºé³ãããå ŽåããããŒã£ãšãããã®ãŒããªã©ã®ãã£ã©ãŒãèªåé€å»ããèšãçŽããæ€åºãæçµçãªæå³ãä¿æãç®æ¡æžããå¥èªç¹ãèªåãã©ãŒããããããããšã§ã仿¥ã®ToDoãªã¹ãïŒâ ã¡ãŒã«è¿ä¿¡ â¡ ã¬ããŒã宿 ⢠äŒè°è³æäœæããšåºåãããŸãã ãªã¢ã«ã¿ã€ã 翻蚳ïŒ100èšèªä»¥äžå¯Ÿå¿ïŒ æ¥æ¬èªã§è©±ããèšèãããã®ãŸãŸè±èªã»äžåœèªã»éåœèªãªã©ã«ç¿»èš³ããŠããã¹ãå
¥åããããšãå¯èœã§ãã ãšãŒãžã§ã³ãã¢ãŒãïŒAIãPCãæäœïŒ ãããæå€§ã®å·®å¥åãã€ã³ããšãªããŸããããã¡ã³ã¯ã·ã§ã³ããŒïŒããã©ã«ãã§ã¯å³[Alt]ããŒïŒãæŒäžã Speaklyãèµ·åãã声ã ãã§Gensparkãžæç€ºãéãããªã©ãå£°ã§æ§ã
ãªæäœãè¡ãããšãã§ããŸãã 2026幎3ææç¹ã§ãWindowsãMacãiOSïŒiPhone/iPadïŒãAndroidãžå¯Ÿå¿ããOutlookãGmailãSlackãªã©æ§ã
ãªã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿå¿ããŠãããå
¥åãã£ãŒã«ããããå Žæãªãã©ãã§ãSpeaklyã§ã®é³å£°å
¥åã䜿ããŸãã Gensparkã®ææãã©ã³ã®ãŠãŒã¶ãŒã¯ç¡æã§å©çšãå¯èœãšãªã£ãŠãããææãã©ã³ãŠãŒã¶ãŒä»¥å€ã¯ã7æ¥éã®ç¡æãã©ã€ã¢ã«ããããåéãæåŸ
ããæ¯ã«30æ¥éãã©ã€ã¢ã«ãå»¶é·ãããŸãã Speakly ã€ã³ã¹ããŒã«ãšå©ç𿹿³ã«ã€ã㊠Speaklyã®ã€ã³ã¹ããŒã«ãããšäžèšãã°ã€ã³ç»é¢ã衚瀺ãããŸãïŒç»é¢ã¯Windows çïŒ Speaklyã«ããã¹ããä»»æã®ããã¹ãããã¯ã¹ã«è²Œãä»ããããšããã€ã¯ã䜿çšããããšãèš±å¯ããŸãã ãã€ã¯ã®ãã¹ããè¡ããŸãã Speaklyã®é³å£°å
¥åãè¡ãããã®ã·ã§ãŒãã«ããããŒã®ãã¹ããè¡ããŸãã Windowsçã®Speaklyã®å Žåã®ããã©ã«ãã®ã·ã§ãŒãã«ããã¯ãå³ã®[Alt]ããŒïŒRight AltïŒã§ãããåŸã§å€æŽå¯èœã§ãã ããããå®éã«ã·ã§ãŒãã«ããããŒãæŒããŠé³å£°å
¥åã®ãã¹ããè¡ããŸããNotionâOutlookâSlackãšãã¹ããè¡ããŸãã æ¬¡ããSpeaklyã®æ¬é ãšãèšããŸãããããã¹ãã®æžãæããè¡ããŸãã ããã¹ããéžæïŒãã€ã©ã€ãïŒãã ã·ã§ãŒãã«ããããŒãæŒãããŸãŸããããã§ãã·ã§ãã«ãªã¡ãŒã«ã«æžãæããŠããšããã³ãããé³å£°å
¥å ããŸãã ãããšå
ã»ã©ã®éžæããããã¹ãã”ãããã§ãã·ã§ãã«ãªã¡ãŒã«ãž”æžãæããããŸããã ã€ãŸãã Gensparkãç«ã¡äžããŠãããã³ãããžææžãå
¥åïŒã³ããŒïŒããŒã¹ãïŒããæç€ºãåºããŠãåºæ¥äžãã£ãææžãå
ã®ã¢ããªãžã³ããŒïŒããŒã¹ãããæéãçãã ãšèšãèš³ã§ãã æ¬¡ã¯ãæ¥æ¬èªã§å
¥åãããŠããããã¹ããéžæãã ã·ã§ãŒãã«ããããŒãæŒãããŸãŸãè±èªã«ç¿»èš³ããŠããšé³å£°å
¥å ããŸãã ãããšå
ã»ã©ã®éžæããããã¹ããè±èªã«æžãæããããŸãïŒãã®ãã¥ãŒããªã¢ã«ã§ã¯ãSpeaklyã®å¥ãŠã£ã³ããŠãç«ã¡äžãããŸããïŒ èŠããã«ãããã³ãããžã³ããŒïŒããŒã¹ããããææžãéžæããSpeaklyã®é³å£°å
¥åæç€ºãè¡ãããšã§ãGensparkãå©çšããããšãã§ããã®ããSpeaklyã®ã¡ãªãããšãªããŸãã ã·ã§ãŒãã«ããããŒã2åæŒããšGensparkã®å
¥åãŠã£ã³ããŠãèµ·åããŸã ã®ã§ãã·ã§ãŒãã«ããããŒãæŒãããŸãŸé³å£°å
¥åãããšãã©ãŠã¶ã§Gensparkãç«ã¡äžãããŸãã ãã¡ãã¯ãã©ãŠã¶ãèµ·åããGensparkã®ãµã€ããéãã®ãçãããšèšãèš³ã§ãã èšèªã¯100以äžãµããŒãããŠããŸãã åºæ¬çã«ã¯å
¥åãã£ãŒã«ããããã°ãã©ã®ãããªã¢ããªã±ãŒã·ã§ã³ã§ãå©çšããããšãå¯èœã§ãã iOSïŒiPhoneïŒã®å Žåã¯ãããŒããŒãã®äžã«ãã¿ããããŠè©±ããã®ãã¿ã³ãåºãŠããŸããã·ã§ãŒãã«ããããŒã¯ãããŸãããåºæ¬çã«ã¯åãåäœãšãªããŸãã å®éã®æ¥åå©çšã«ã€ã㊠å®éã«æ¥åã§å©çšããã±ãŒã¹ãšããŠãã¡ãŒã«äœæããéãã¡ãŒã«æ¬æã«ãŠãSpeaklyã® ã·ã§ãŒãã«ããããŒãæŒãããŸãŸãæ¥é±ä»¥éã§ãªã³ã©ã€ã³æã¡åããã®åè£æ¥ã2ã3ãã ããããšé³å£°å
¥åããåŸã§ããã®ããã¹ããéžæããã·ã§ãŒãã«ããããŒãæŒãããŸãŸãããžãã¹ã¡ãŒã«ã«å€æããŠãã ããããšé³å£°å
¥åããã ãã§ããžãã¹ã¡ãŒã«ãžå€æãããŸãã ã·ã§ãŒãã«ããããŒãæŒãããŸãŸä»¥äžãé³å£°å
¥åïŒæåã®å
¥åïŒ æ¥é±ä»¥éã§ãªã³ã©ã€ã³æã¡åããã®åè£æ¥ã2ã3ãã ãã äžèšããã¹ããéžæããã·ã§ãŒãã«ããããŒãæŒãããŸãŸãããžãã¹ã¡ãŒã«ã«å€æããŠãã ããããšé³å£°å
¥å ãäžè©±ã«ãªã£ãŠãããŸãã æ¥é±ä»¥éã®æ¥çšã«ã€ããŸããŠããªã³ã©ã€ã³ã«ãŠãæã¡åããããããŠé ããã°ãšåããŸãã ã€ããŸããŠã¯ããéœåã®ããããåè£æ¥ã2ã3ã»ã©ããã ããŸãã§ããããã ãå¿ãããšããæçž®ã§ãããã確èªã®ã»ã©äœåãããããé¡ãç³ãäžããŸãã ããã«ãäžèšããã¹ããéžæãã ã·ã§ãŒãã«ããããŒãæŒãããŸãŸãè±èªã«å€æããŠãã ããããšé³å£°å
¥å Thank you for your continued support. Regarding the schedule for next week onwards, I would like to request an online meeting with you. Could you please provide two or three candidate dates and times that would be convenient for you? I apologize for taking up your time, and I appreciate your kind cooperation. é·æã®ããã¹ããéžæããSpeaklyã§ãèŠç¹ããŸãšããŠããèŠçŽããŠããç®æ¡æžãã«ããŠããè±æããã¹ãããæ¥æ¬èªã§èŠç¹ããŸãšããŠããå¯èœã§ãã Speakly 以å€ã®é³å£°å
¥åããŒã«ã䜿ã£ãŠããªãã£ãã®ã§ãSpeaklyã®é³å£°èªè粟床ã®è¯ãæªãã¯åãããããŸããã誀èªèã¯èš±å®¹ã§ããå°ãªããªã®ã ãšã¯æããŸããæ¯èŒççºçããŸãã ãŸããSpeaklyã®æäœãèŠããïŒæèããïŒã®ã«æ
£ããå¿
èŠãªã®ãšãã·ã§ãŒãã«ãããããŸãèµ·åããªãããšãåäœãäžå®å®ã§ãã£ãããæ£çŽãªãšãã話é¡ã«ãªã£ãŠããããäžè¬ã®ç¹ã«äŒæ¥ã§ã®å©çšã¯é²ãŸãªãã®ã§ã¯ãªãããšæããŸããç¹ã«ãåšå®
å€åãªãé³å£°å
¥åïŒã²ãšãã§è©±ãããŠããŠãïŒåé¡ã¯ãªãã§ãããäŒæ¥ã§åšãã«äººãå±
ãç¶æ³ã§é³å£°å
¥åãããã®ã¯æµææããããšæããŸãã ã¿ã€ãã³ã°ããé³å£°å
¥åãæ©ãã®ã¯å®æããããŸããã4åã®æ¥åå¹çãå³ãããšèšããããšéåæããããŸããæ£çŽãªãšããããã®Speaklyã®èšäºã Speakly ã®é³å£°å
¥åã§ãã¹ãŠäœæããããšããŸããããå¹çãæªãã®ã§éäžã§è«ŠããŸããã ãããªãå©ç𿹿³ã«ã€ã㊠Speaklyã®èšå®ç»é¢ã§ãã·ã§ãŒãã«ããããŒã®å€æŽãå¯èœã§ãã ãŸããããããã®ã·ã§ãŒãã«ããããèªåã§ããã³ãããèšå®ããŠã·ã§ãŒãã«ãããäœæããããšãã§ããŸãã äºåã«ã»ãããããŠããã è±èªã«ç¿»èš³ ãã«ã¯ç·šéã§å®éã®ããã³ããã確èªããããšãã§ããããã³ããã«ã¯ä»¥äžïŒè±èªïŒãã»ãããããŠããããè±èªã«ç¿»èš³ããã·ã§ãŒãã«ããããŒã§èµ·åãããšãé³å£°å
¥åããå
容ããè±èªã«ç¿»èš³ãããŠåºåãããŸãã Translate the text into natural, fluent English. If it’s already in English, just clean it up and improve clarity. Keep proper nouns, brand names, and technical terms unchanged. Output only the translated text without any explanations. ïŒããã¹ããèªç¶ã§æµæ¢ãªè±èªã«ç¿»èš³ããŠãã ããããã§ã«è±èªã®å Žåã¯ãæç« ãæŽçããŠèªã¿ãããããŠãã ãããåºæåè©ããã©ã³ãåãå°éçšèªã¯å€æŽããªãã§ãã ããã説ææã¯å«ããã翻蚳ãããããã¹ãã®ã¿ãåºåããŠãã ãããïŒ ã ãããã§ãã·ã§ãã«æ ¡æ£ ãã®ããã³ããã«ã¯ä»¥äžïŒè±èªïŒãã»ãããããŠãããããããã§ãã·ã§ãã«æ ¡æ£ããã·ã§ãŒãã«ããããŒã§èµ·åãããšãé³å£°å
¥åããå
容ãããããã§ãã·ã§ãã«æ ¡æ£ãè¡ãããŠåºåãããŸãã Rewrite the following content into polished, professional workplace communication. Rewriting Requirements: – Show empathy and perspective-taking – Use a warm, collaborative, and mature tone – Emphasize win-win outcomes; prefer starting with “we” or “together” – Offer value before making requests – Actively listen and affirm the other party – Create shared goals – Use positive feedback – Replace “but” with “and” or “at the same time” – Preserve the original meaning while making it more professional, respectful, and collaborative – Output only the rewritten content, no explanations or prefixes. ïŒä»¥äžã®å
容ããæŽç·Žããããããã§ãã·ã§ãã«ãªè·å Žã³ãã¥ãã±ãŒã·ã§ã³ã®ã¹ã¿ã€ã«ã«æžãçŽããŠãã ããã æžãæãã®èŠä»¶ïŒ – å
±æã瀺ããçžæã®ç«å Žã«ç«ã£ãŠèããå§¿å¢ã瀺㠖 æž©ãã¿ããããååçã§ãæçããå£èª¿ãçšãã – åæ¹ã«ã¡ãªããã®ããçµæãéèŠãããç§ãã¡ãããäžç·ã«ããšããèšèããå§ããããšãæšå¥šãã – äŸé Œãããåã«ãçžæãžã®äŸ¡å€ãæäŸãã – çžæã®è©±ãç©æ¥µçã«èããè¯å®ãã – å
±éã®ç®æšãèšå®ãã – è¯å®çãªãã£ãŒãããã¯ãçšãã – ããããããããããŠããŸãã¯ãåæã«ãã«çœ®ãæãã – å
ã®æå³ãä¿ã¡ã€ã€ãããå°éçã§ãæ¬æããããååçã«ãªãããæžãæãã – æžãæããå
容ã®ã¿ãåºåãã説æãå眮ãã¯å«ããªããïŒ èªåã§ã·ã§ãŒãã«ãããäœæã§ããã®ã§ãããã³ãããèªç±ã«äœæããããšãå¯èœã§ãã ãŸãšã Genspark ã® Speakly ã玹ä»ããŸããã Speaklyã®åºæ¬çãªåããšããŠã¯ä»¥äžãšãªããŸãã Speaklyã䜿ã£ãé³å£°å
¥å ããã¹ãéžæããSpeaklyã®é³å£°å
¥åã«ããããã³ããæç€º ã«ã¹ã¿ã ã·ã§ãŒãã«ãããäœæããSpeaklyã®é³å£°å
¥åå
容ã®ç¬èªAIåŠç ä»åŸãäžè¬äŒæ¥ã§ã®å©çšãé²ãã®ãã©ããã¯åãããŸããããé³å£°å
¥åã¯éåžžã®ã¿ã€ãã³ã°ã«æ¯ã¹ãŠ4åéãããšãå«ããé³å£°å
¥åã«ããããã³ããæç€ºãç¬èªAIåŠçã«ããæ¥åå¹çåãå¯èœãªã®ã§ãäžåºŠ Speakly ã詊ãããŠã¿ãŠã¯ã©ãã§ããããïŒ ã¡ãªã¿ã«ãGenspark ã«äººæ°ã®ãã Genspark æ©èœé äœïŒTop10ïŒãæããŠããšå°ãããšä»¥äžã®åçã«ãªããŸããã ã¹ãŒããŒãšãŒãžã§ã³ãïŒSuper AgentïŒ ããªãã§ãã§ããAIåžä»€å¡ã AI ãã£ããïŒMixture of AgentsïŒ ãè€æ°AIãååãæé«ã®çããåºãã ãã£ãŒããªãµãŒãïŒDeep ResearchïŒ ãAIã培åºçã«èª¿æ»ã»åæãããªãµãŒããšã³ãžã³ã AI ã¹ã©ã€ãïŒAI SlidesïŒ ãããå質ã®ãã¬ãŒã³ãç¬æã«äœæã é»è©±ä»£è¡ãšãŒãžã§ã³ãïŒCall for MeïŒ ãAIã代ããã«é»è©±ããããŠãããã AI ç»å/åç»ïŒAI Image/AI Video GenerationïŒ ãããã¹ãããç»åã»åç»ãçæã AI ã·ãŒãïŒAI SheetïŒ ãããŒã¿åæã»å¯èŠåãèªååã AI ããããããŒïŒAI DebeloperïŒ ãèªåŸåã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã AI ããã¥ã¡ã³ãïŒAI DocsïŒ ãããåè³ªã®ææžã峿çæã AI ã»ã¯ã¬ã¿ãªãŒïŒAI SecretaryïŒ ãã¡ãŒã«ã»ã«ã¬ã³ããŒã»ã¿ã¹ã¯ãäžžããšç®¡çã ãŸããæ¬¡ã®èšäºã§ã¯ãGenspark ã®äººæ°ã®ããæ©èœã玹ä»ããããšæããŸãã
ã¯ããã« ã¯ãããŸããŠã KINTO ãã¯ãããžãŒãºã§ KINTO Unlimited Android ã¢ããªãéçºããŠãã JR.Liang ã§ãã æ¬èšäºã§ã¯ãKINTO Unlimited ã¢ããªã«ãŠæäŸããããããªã«ã¬ã€ããã¹ãã£ã³æ©èœã® AR ãšãã§ã¯ãã«ã€ããŠãAndroid ã«ãããæè¡çãªæ€èšŒã玹ä»ããŸãã ç¹ã« MediaPipe ã®ãœãªã¥ãŒã·ã§ã³ãçšããŠå¹
åºã Android ããã€ã¹ã§ AR ãšãã§ã¯ããå®çŸããå®è£
ã«ãã©ãŒã«ã¹ããŸãã ãããªã«ã¬ã€ããšã¯ ããããªã«ã¬ã€ãã㯠ARïŒæ¡åŒµçŸå®ïŒã掻çšããŠãè»å
ã¹ã€ããã®çšéãäœ¿ãæ¹ãããã¹ããšåç»ã§æ¡å
ããæ©èœã§ãã玹ä»åç»ãã芧ãã ããã https://youtube.com/watch?v=E8zfNzuHr7g&embeds_referring_euri=https%3A%2F%2Fcorp.kinto-jp.com%2F&source_ve_path=MjM4NTE äžèšã®ç޹ä»åç»ã¯ iOS ã¢ããªã§ã®åäœã瀺ããŠããŸããã¹ã€ããäžã«è¡šç€ºãããé»è²ã®äžž ð¡ ããAR æè¡ã§å®çŸããä»®æ³ã³ã³ãã³ãã§ãã æ©èœå
šäœã®ä»çµã¿ã¯ä»¥äžã®æµãã§ããæ¬èšäºã§ã¯ 3 çªç®ïŒæç»ïŒã«é¢ããå
å®¹ãæ±ããŸãã 1. ã¢ããªã®ã«ã¡ã©ãèµ·åãã«ã¡ã©ç»åãååŸ 2. æ©æ¢°åŠç¿ã«ãããç©äœèªèãçšããŠãè»å
ã®ã¹ã€ãããæ€åº 3. æ€åºãã座æšãå
ã«ããã¿ã³ãšããã¹ãããã¬ãŒã äžã«æç» 4. ãã¿ã³ãã¿ããããŠãåœè©²ã¹ã€ããã®ããã¹ããšåç»ã衚瀺 Android AR æè¡æ€èšŒã®çµç·¯ åœåã® Android çããããªã«ã¬ã€ããã®ã¹ãã£ã³æ©èœã§ã¯ãCanvas ãå©çšããŠæ¯ãã¬ãŒã æ€åºããã座æšã«æç»ããå®è£
ã§ããããã®ããæ€åºã®æéå·®ã«ãããã¹ããïŒã«ã¡ã©ïŒãåãããšæç»ã®ãºã¬ãçããŠããŸããã 2D Canvas 幞ããMediaPipe ã®ãœãªã¥ãŒã·ã§ã³ã§ãã Instant Motion Tracking ã¢ãžã¥ãŒã«ã§ çŽ æ©ããã€å®å®ãã AR ãšãã§ã¯ããå®çŸã§ããããšãããããAndroid ãžã®å°å
¥ãæ€èšŒããŸããã 3D OpenGL MediaPipe Instant Motion Tracking MediaPipe 㯠Google ãéçºãããªãŒãã³ãœãŒã¹ã® ML ãã¬ãŒã ã¯ãŒã¯ã§ã顿€åºã»æã®ãã©ããã³ã°ã»å§¿å¢æšå®ãªã©ãªã¢ã«ã¿ã€ã æ ååŠçã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã ãã®äžã® Instant Motion Tracking ã¯ãçŸå®äžçã®ã·ãŒã³äžã« 3D ä»®æ³ã³ã³ãã³ãããªã¢ã«ã¿ã€ã ã§æ£ç¢ºã«é
眮ã§ãã AR ãã©ããã³ã°æ©èœã§ããåæåãå³å¯ãªãã£ãªãã¬ãŒã·ã§ã³ãäžèŠã§ã鿢é¢ãåããŠããé¢ã®äžã«ã³ã³ãã³ãã眮ãããšãå¯èœã§ãã @ card Android + MediaPipe AR ã¢ãŒããã¯ã㣠graph TB A(Android CameraX) --> |Camera Frame| B(Instant Motion Tracking) B --> |Camera Image| C(TensorFlow Object Detection) C --> |Detections Information| B(Instant Motion Tracking) B --> |Output Stream| D(Android Surface Rendering) CameraX ã§ååŸãããã¬ãŒã ã Instant Motion Tracking ã«æž¡ããTensorFlow Lite ã§ç©äœæ€åºããæ
å ±ãå
ã« AR ã³ã³ãã³ããæç»ã»è¿œåŸããããã€ãã©ã€ã³ã§ãã MediaPipe ã©ã€ãã©ãªã®äœæ MediaPipe ã§ã¯ Bazel ã䜿çšããŠããã±ãŒãžããã«ãããŸããAndroid ã«é©åãã AAR ãšããŠæžãåºããŠã¢ããªã«çµã¿èŸŒã¿ãŸãã https://chuoling.github.io/mediapipe/getting_started/android_archive_library.html AAR ããã«ããã BUILD ãã¡ã€ã«ãäœæãã instant_motion_tracking ãåºç€ãšããå®çŸ©ãèšè¿°ããŸãã load("//mediapipe/java/com/google/mediapipe:mediapipe_aar.bzl", "mediapipe_aar") mediapipe_aar( name = "mediapipe_ar", calculators = ["//mediapipe/graphs/instant_motion_tracking:instant_motion_tracking_deps"] ) MediaPipe 㯠C++ ãäžæ žã®ãããC++ ã©ã³ã¿ã€ã ã§ãã libc++_shared.so ã AAR ã«å梱ããå¿
èŠããããŸãã https://github.com/google-ai-edge/mediapipe/blob/v0.10.32/third_party/BUILD#L399-L403 ãŸã Instant Motion Tracking ã§ã¯ç»ååŠçã©ã€ãã©ãª OpenCV ãå©çšããAR ãã©ããã³ã°ãè¡ããŸãã https://github.com/google-ai-edge/mediapipe/blob/v0.10.32/WORKSPACE#L649-L655 äžèšãµãŒãããŒãã£ã®ã©ã€ãã©ãªãå«ããŠã以äžã®ã³ãã³ãã§ AAR ããã«ãããŸãã bazel build -c opt --strip=ALWAYS \ --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \ --fat_apk_cpu=arm64-v8a \ --linkopt=-Wl,-z,max-page-size=16384 \ //path/to/the/aar/build/mediapipe_ar:mediapipe_ar.aar åžå Žã«æµéããŠãã Android ããã€ã¹ã¯äž»ã« arm64-v8a ã¢ãŒããã¯ãã£ã®ãããAAR ã®ãµã€ãºãæããç®çã§ fat_apk_cpu=arm64-v8a ã«ããŸãã C++ ã©ã€ãã©ãªã® 16KB page-size ã«å¯Ÿå¿ããããã max-page-size=16384 ã远å ããŸãã ãŸã AAR ãå©çšããã«ã¯ã°ã©ãæ§é ãå®çŸ©ãããã¡ã€ã«ïŒ binarypb ïŒãå¿
èŠã§ãã bazel build -c opt mediapipe/graphs/instant_motion_tracking:instant_motion_tracking.binarypb Instant Motion Tracking ã®å°å
¥ AAR ãã¢ããªã«çµã¿èŸŒãã§ãAndroid åŽã®å®è£
ã解説ããŠãããŸãã äžèšã¯ AAR ã«çµã¿èŸŒãã instant_motion_tracking ã®å
šäœæ§é ã§ãã instant_motion_tracking.pbtxt ã®æ§æ ã°ã©ãå®çŸ©ãã¡ã€ã« instant_motion_tracking.pbtxt ã¯ãCalculatorïŒåŠçããŒãïŒã»å
¥åºåã¹ããªãŒã ã»ãµã€ããã±ããã® 3 èŠçŽ ã§æ§æãããŸãã Calculator å Calculator ããã€ãã©ã€ã³äžã§ã©ã®åŠçãæ
ããã瀺ããŸãã Calculator åœ¹å² ImageTransformationCalculator ã«ã¡ã©ãã¬ãŒã ã 320Ã320ïŒFITïŒã«ãªãµã€ãºãç©äœæ€åºã¢ãã«ã®å
¥åãµã€ãºã«åããã GpuBufferToImageFrameCalculator GPU ãã¯ã¹ãã£ã CPU ã® ImageFrame ã«å€æãTensorFlow Lite æšè«ã«äœ¿çš StickerManagerCalculator Sticker Proto ãããŒã¹ããåæã¢ã³ã«ãŒã®åº§æšã»å転ã»ã¹ã±ãŒã«ã»ã¬ã³ããªã³ã°çš®å¥ã«åè§£ RegionTrackingSubgraph ããã¯ã¹ãã©ããã³ã°ã§ã¢ã³ã«ãŒäœçœ®ã远åŸãå
éšã« TrackedAnchorManagerCalculator ïŒã¢ã³ã«ãŒç®¡çïŒãš BoxTrackingSubgraphGpu ïŒGPU ãã©ããã³ã°ïŒãæã€ MatricesManagerCalculator ãã©ããã³ã°çµæã»å転ã»ã¹ã±ãŒã«ã»FOVã»ã¢ã¹ãã¯ãæ¯ãã OpenGL çš 4Ã4 ã¢ãã«è¡åãçæ GlAnimationOverlayCalculator ã¢ãã«è¡åãšãã¯ã¹ãã£ãçšããŠãå
ã®ã«ã¡ã©ãã¬ãŒã äžã« AR ã³ã³ãã³ãã OpenGL ã§æç»ã output_video ãšããŠåºå input_stream / output_stream input_stream ã¯ãã¬ãŒã ããšã« Android åŽããéä¿¡ããããŒã¿ã output_stream ã¯ã°ã©ãã®åŠççµæã§ãã ã¹ããªãŒã å C++ å æ¹å çšé input_video GpuBuffer Input ã«ã¡ã©ãã¬ãŒã sticker_proto_string String(Serialized Proto) Input ã¹ããã«ãŒã®åº§æšã»ã¹ã±ãŒã«çïŒSticker ProtoïŒ sticker_sentinels vector Input 座æšããªã»ããããã¹ããã«ãŒ ID ã®é
å gif_textures vector Input AR ã³ã³ãã³ãã® Bitmap ãã¯ã¹ãã£é
å gif_aspect_ratios vector Input åãã¯ã¹ãã£ã®ã¢ã¹ãã¯ãæ¯ output_video GpuBuffer Output AR æç»æžã¿ãã¬ãŒã input_side_packet input_side_packet ã¯åæåæã«äžåºŠã ãæž¡ã宿°ã§ãã°ã©ãå®è¡äžã¯å€åããŸããã ãã±ããå çšé vertical_fov_radians ã«ã¡ã©ã®åçŽ FOVïŒã©ãžã¢ã³ïŒ aspect_ratio ã«ã¡ã©ã®ã¢ã¹ãã¯ãæ¯ width / height ã«ã¡ã©è§£å床 gif_texture ããã©ã«ããã¯ã¹ãã£ïŒ1x1 ãã¬ãŒã¹ãã«ãïŒ gif_asset_name AR ãã¯ã¹ãã£æç»çšã®ããªãŽã³ã¡ãã·ã¥ïŒ .obj ïŒãã¡ã€ã«å Android ãžã®å°å
¥ã«åœãã£ãŠãå
¬åŒãµã³ãã«ã®ã³ãŒããåèã«ããŸãã https://github.com/google-ai-edge/mediapipe/tree/master/mediapipe/examples/android/src/java/com/google/mediapipe/apps/instantmotiontracking 1. åæå MediaPipe ã䜿çšããåã«ããã€ãã£ãã©ã€ãã©ãªã®èªã¿èŸŒã¿ãšã¢ã»ãããããŒãžã£ãŒã®åæåãå¿
èŠã§ãã companion object { init { System.loadLibrary("mediapipe_jni") System.loadLibrary("opencv_java4") } } // onCreate çžåœã®åŠç AndroidAssetUtil.initializeNativeAssetManager(context) mediapipe_jni : MediaPipe ã®ã³ã¢åŠçãè¡ã JNI ã©ã€ãã©ãª opencv_java4 : AR ãã©ããã³ã°ã«äœ¿çšãã OpenCV ã©ã€ãã©ãª initializeNativeAssetManager : ãã€ãã£ãã³ãŒãããã¢ã»ããïŒbinarypb çïŒã«ã¢ã¯ã»ã¹ããããã«å¿
èŠ 2. ã«ã¡ã©ãèµ·åãã å
¬åŒãµã³ãã«ãåèã«ã以äžã®é åºã§ãã€ãã©ã€ã³ãæ§ç¯ããŸãã ããŒã¿ãããŒïŒ CameraX â ExternalTextureConverter â FrameProcessor â SurfaceView 2.1 EGL ç°å¢ãš FrameProcessor ã®åæå val eglManager = EglManager(null) val frameProcessor = FrameProcessor( context, eglManager.nativeContext, "instant_motion_tracking.binarypb", "input_video", "output_video" ).apply { videoSurfaceOutput.setFlipY(true) setInputSidePackets( mapOf( "gif_asset_name" to packetCreator.createString("gif.obj.uuu"), "vertical_fov_radians" to packetCreator.createFloat32(fovRadians), "aspect_ratio" to packetCreator.createFloat32(resolution.width.toFloat() / resolution.height.toFloat()), "width" to packetCreator.createInt32(resolution.width), "height" to packetCreator.createInt32(resolution.height), "gif_texture" to packetCreator.createRgbaImageFrame(createBitmap(1, 1)) ) ) } EglManager : OpenGL ES ã® EGL ã³ã³ããã¹ããäœæã»ç®¡çãMediaPipe ã®ã°ã©ãå
GPU CalculatorïŒ GlAnimationOverlayCalculator çïŒã OpenGL ã§æç»ããããã«å¿
èŠ FrameProcessor : EGL ã³ã³ããã¹ããåãåããã°ã©ãã®èªã¿èŸŒã¿ã»å
¥åºåã¹ããªãŒã ã®ç®¡çã»ãã¬ãŒã ããšã®ã°ã©ãå®è¡ãè¡ã instant_motion_tracking.binarypb : .pbtxt ã Bazel ã§ã³ã³ãã€ã«ããã°ã©ãå®çŸ©ãã€ã㪠input_video : MediaPipe ã°ã©ããžã«ã¡ã©ãã¬ãŒã ãå
¥å output_video : ã°ã©ãã§åŠçïŒAR æç»ãªã©ïŒãããæ åãåºå videoSurfaceOutput.setFlipY(true) : OpenGL ãšã«ã¡ã©ã® Y 軞æ¹åãéã®ãããåºåæ åãäžäžå転ããŠæ£ããåãã«ãã setInputSidePackets : ã°ã©ãã® input_side_packet ã«å¯Ÿå¿ãã宿°ããŸãšããŠèšå®ãã«ã¡ã©ã® FOVã»ã¢ã¹ãã¯ãæ¯ã»è§£å床ãªã©ãã°ã©ãå®è¡äžã«å€åããªãå€ãåæåæã«äžåºŠã ãæž¡ã gif_asset_name 㯠AR ãã¯ã¹ãã£ãæç»ããããã® ããªãŽã³ã¡ãã·ã¥ïŒé ç¹ããŒã¿ïŒ ãããã§ã¯å
¬åŒãµã³ãã«ã® gif.obj.uuu ãå©çš 2.2 ã«ã¡ã©æ åã®å€æãã€ãã©ã€ã³æ§ç¯ val externalTextureConverter = ExternalTextureConverter(eglManager.context, 2).apply { setFlipY(true) setConsumer(frameProcessor) setDestinationSize(resolution.width, resolution.height) } val cameraHelper = object : CameraXPreviewHelper() { override fun getCameraCharacteristics(context: Context?, lensFacing: Int?) = cameraCharacteristics }.apply { setOnCameraStartedListener(onCameraStartedListener) startCamera( context, lifecycleOwner, CameraHelper.CameraFacing.BACK, externalTextureConverter.surfaceTexture, Size(resolution.height, resolution.width) ) } ExternalTextureConverter : ã«ã¡ã©ã® GL_EXTERNAL_OES ãã¯ã¹ãã£ã MediaPipe ãåŠçã§ããæšæºãã¯ã¹ãã£ã«å€æ setFlipY(true) : ã«ã¡ã©æ åã®äžäžå転ãè£æ£ setDestinationSize(resolution.width, resolution.height) : ãã€ãã©ã€ã³ã®åŠçãµã€ãºã¯ããŒãã¬ãŒã座æšïŒäŸ: 960Ã1280 ïŒã§æå® CameraXPreviewHelper : CameraX ã§ããã¯ã«ã¡ã©ãèµ·åããConverter ã® SurfaceTexture ã«åºå startCamera(targetSize = Size(resolution.height, resolution.width)) : CameraX ã¯ã»ã³ãµãŒåº§æšïŒã©ã³ãã¹ã±ãŒãïŒãæåŸ
ãããããwidth ãš height ãå
¥ãæ¿ããŠæž¡ã å
¬åŒãµã³ãã«ã§ã¯ CameraXPreviewHelper ããã®ãŸãŸäœ¿çšããå
éšã§ CameraManager ããã«ã¡ã©ç¹æ§ãååŸããŸãã https://github.com/google-ai-edge/mediapipe/blob/v0.10.32/mediapipe/java/com/google/mediapipe/components/CameraXPreviewHelper.java#L558-L560 æ¬å®è£
ã§ã¯ getCameraCharacteristics ããªãŒããŒã©ã€ãããäºåã«ååŸæžã¿ã® CameraCharacteristics ãçŽæ¥æž¡ããŸããããã«ãã FOV ãã¢ã¹ãã¯ãæ¯ã®ç®åºã«äœ¿ãã«ã¡ã©æ
å ±ããã¢ããªåŽã§äžå
管çã§ããŸãã 2.3 åºåå
SurfaceViewã®èšå® SurfaceView(context).apply { holder.addCallback(object : SurfaceHolder.Callback { override fun surfaceCreated(holder: SurfaceHolder) { frameProcessor.videoSurfaceOutput.setSurface(holder.surface) } override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) { val displaySize = cameraHelper.computeDisplaySizeFromViewSize(Size(width, height)) val (displayWidth, displayHeight) = if (cameraHelper.isCameraRotated) { displaySize.height to displaySize.width } else { displaySize.width to displaySize.height } externalTextureConverter.setDestinationSize(displayWidth, displayHeight) } override fun surfaceDestroyed(holder: SurfaceHolder) { frameProcessor.videoSurfaceOutput.setSurface(null) } }) } SurfaceHolder.Callback : SurfaceView ã®ã©ã€ããµã€ã¯ã«ã«å¿ã㊠FrameProcessor ã®åºåå
ã管ç surfaceCreated : FrameProcessor ã®åºåå
ãšã㊠Surface ãèšå® surfaceChanged : ç»é¢å転ã»ãµã€ãºå€æŽæã«åºåè§£å床ãèª¿æŽ surfaceDestroyed : ãªãœãŒã¹è§£æŸ 3. æ€åºåº§æšãã°ã©ãã«æž¡ã ç©äœæ€åºïŒTensorFlow Lite çïŒã§åŸããã座æšã MediaPipe ã°ã©ãã«æž¡ããAR ã³ã³ãã³ããé
眮ããŸãã 3.1 ã°ã©ããã倿æžã¿ç»åãååŸ MediaPipe ã°ã©ãå
ã§ ImageTransformationCalculator ãš GpuBufferToImageFrameCalculator ã«ãã£ãŠå€æãããç»åã addPacketCallback ã§åãåããç©äœæ€åºã«äœ¿çšããŸãã frameProcessor.addPacketCallback("transformed_input_video_cpu") { packet -> packet ?: return@addPacketCallback // 倿æžã¿ç»åãç©äœæ€åºïŒTensorFlow LiteïŒã«æž¡ã val bitmap = PacketGetter.getBitmapFromRgba(packet) objectDetector.detect(bitmap) { detections -> // æ€åºçµæãåŠç } } transformed_input_video_cpu : 倿åŸã®ç»åãåºåããã¹ããªãŒã å 3.2 座æšã®æ£èŠå ç©äœæ€åºçµæã®ãã¯ã»ã«åº§æšããMediaPipe ãæåŸ
ããæ£èŠå座æšã«å€æããŸãã // ãã¯ã»ã«åº§æš â æ£èŠååº§æš (0.0ã1.0) val normalizedX = pixelX / imageWidth.toFloat() val normalizedY = pixelY / imageHeight.toFloat() 3.3 Sticker Proto ã®æ§é Instant Motion Tracking ã§ã¯ãAR ãªããžã§ã¯ãã®äœçœ®æ
å ±ã Protocol Buffers 圢åŒã§å®çŸ©ããŸãã message Sticker { int32 id = 1; // ãŠããŒã¯ID float x = 2; // æ£èŠåXåº§æš (0.0ã1.0) float y = 3; // æ£èŠåYåº§æš (0.0ã1.0) float rotation = 4; // å転è§åºŠ float scale = 5; // ã¹ã±ãŒã« int32 render_id = 6; // ã¬ã³ããªã³ã°ID } message StickerRoll { repeated Sticker sticker = 1; } 3.4 ãã¬ãŒã ããšã«ãã±ãããéä¿¡ setOnWillAddFrameListener ã䜿çšããŠãåãã¬ãŒã åŠçåã«æ€åºåº§æšãã°ã©ããžéä¿¡ããŸãã frameProcessor.setOnWillAddFrameListener { timestamp -> with(frameProcessor.graph) { // æ€åºãããç©äœã®åº§æšæ
å ±ããã±ãããšããŠéä¿¡ val stickerRoll = StickerRoll.newBuilder() .addAllSticker(detectedObjects.map { detection -> Sticker.newBuilder() .setId(detection.id) .setX(detection.normalizedX) // 0.0ã1.0 .setY(detection.normalizedY) // 0.0ã1.0 .setScale(detection.scale) .build() }) .build() val stickersPacket = packetCreator.createSerializedProto(stickerRoll) addPacketToInputStream("sticker_proto_string", stickersPacket, timestamp) } } FrameProcessor.setOnWillAddFrameListener : åãã¬ãŒã ãã°ã©ãã«éãããçŽåã«åŒã°ããã³ãŒã«ãã㯠FrameProcessor.graph.addPacketToInputStream : å
¥åã¹ããªãŒã ã«ãã±ããã远å sticker_proto_string : ã°ã©ãå®çŸ©ã§æå®ãããå
¥åã¹ããªãŒã å 4. ãã¯ã¹ãã£ïŒBitmapïŒã®æç»ãšéä¿¡ äœçœ®æ
å ±ãšåæã«ãAR ã³ã³ãã³ããšããŠæç»ãã Bitmap ãã¯ã¹ãã£ãã°ã©ãã«æž¡ããŸãã 4.1 Bitmap ãã¯ã¹ãã£ã®çæ æ€åºãããåã¹ã€ããã«å¯ŸããŠãäžžã¢ã€ã³ã³ãšã©ãã«ããã¹ããå«ã Bitmap ãçæããŸãã val bitmap = createBitmap(width.toInt(), height.toInt()).apply { with(Canvas(this)) { concat(Matrix().apply { preScale(-1.0f, 1.0f, width / 2f, height / 2f) // X軞ãå転ããŠæç» }) drawCircle(circleX, circleY, CIRCLE_RADIUS, circlePaint) drawRect(rectLeft, rectTop, rectRight, rectBottom, backgroundPaint) } } Matrix().preScale(-1.0f, 1.0f) ã§ Bitmap ãå·Šå³å転ããŠããŸãã以äžã® IMU è¡åã«åãããããã§ãã float imu_matrix[9] = { -1.0f, 0.0f, 0.0f, // X軞 â å転(-X) 0.0f, 0.0f, 1.0f, // Y軞 â Z軞㞠0.0f, 1.0f, 0.0f // Z軞 â Y軞㞠}; ãã®è¡å㯠OpenGL ã¢ãã«è¡åïŒ4x4ïŒã®å転æåãšããŠäœ¿ãããY/Z 軞ã®å
¥ãæ¿ããš X 軞å転ã§ãã¯ã¹ãã£ãã«ã¡ã©å¹³é¢ã«å¹³è¡ã«åºå®ããŸãã æ¬æ¥ã¯ããã€ã¹ã® IMU ã»ã³ãµãŒããå転è¡åãåãåãã端æ«ã®åŸãã«è¿œåŸãããŸãã https://github.com/google-ai-edge/mediapipe/blob/0.10.32/mediapipe/examples/android/src/java/com/google/mediapipe/apps/instantmotiontracking/MainActivity.java#L218-L220 æ¬å®è£
ã§ã¯åºå®å€ã«ããããšã§ åžžã«ã«ã¡ã©æ£é¢ãåã ïŒãã«ããŒã广ïŒããã«ãã (0,0) ã® -1.0 ã«ãã X 軞å転ã Bitmap åŽã® preScale(-1.0f, 1.0f) ã§æã¡æ¶ããŸãã 4.2 ãã¯ã¹ãã£ã®éä¿¡ // ãã¯ã¹ãã£ç»åïŒBitmapé
åïŒ val texturesPacket = packetCreator.createRgbaImageFrameVector( renderStickers.map { it.bitmap }.toTypedArray() ) addPacketToInputStream("gif_textures", texturesPacket, timestamp) // ã¢ã¹ãã¯ãæ¯ïŒãã¯ã¹ãã£ã®çžŠæšªæ¯ïŒ val aspectRatiosPacket = packetCreator.createFloat32Vector( renderStickers.map { it.aspectRatio }.toFloatArray() ) addPacketToInputStream("gif_aspect_ratios", aspectRatiosPacket, timestamp) PacketCreator.createRgbaImageFrameVector : è€æ°ã® Bitmap ã RGBA 圢åŒã®ãã±ããã«å€æ gif_textures : ãã¯ã¹ãã£ç»åã®å
¥åã¹ããªãŒã gif_aspect_ratios : åãã¯ã¹ãã£ã®ã¢ã¹ãã¯ãæ¯ïŒæ£ããã¹ã±ãŒãªã³ã°ã«å¿
èŠïŒ å
¬åŒãµã³ãã«ã§ã¯ createRgbaImageFrame ã䜿çšã㊠åäžã®ãã¯ã¹ã㣠ãã°ã©ãã«æž¡ããŸãã https://github.com/google-ai-edge/mediapipe/blob/0.10.32/mediapipe/examples/android/src/java/com/google/mediapipe/apps/instantmotiontracking/MainActivity.java#L608-L610 æ¬å®è£
ã§ã¯ãè€æ°ã®æ€åºãªããžã§ã¯ãã«å¯Ÿå¿ãããã createRgbaImageFrameVector ã§ è€æ°ãã¯ã¹ãã£ãåæã«éä¿¡ ãã gif_aspect_ratios ã createFloat32Vector ã§ åãã¯ã¹ãã£ã«å¯Ÿå¿ããã¢ã¹ãã¯ãæ¯ã®é
å ãæž¡ãããæ¡åŒµããŸããããã«ãããæ€åºãããåã¹ã€ããã«ç°ãªãã©ãã«ïŒããã¹ãä»ãBitmapïŒãæ£ãã瞊暪æ¯ã§è¡šç€ºã§ããŸãã ãããŸã§ã§ AR ã³ã³ãã³ããã«ã¡ã©äžã«è¡šç€ºã§ããŸããã 5. 座æšã®æŽæ° ãã©ããã³ã°äžã®ã¹ããã«ãŒåº§æšãæŽæ°ããã«ã¯ãæ°ãã座æšãæã€ sticker_proto_string ãšããªã»ãã察象㮠ID ãå«ã sticker_sentinels ãåäž timestamp ã§éä¿¡ããŸãã TrackedAnchorManagerCalculator ãè©²åœ ID ã®ãã©ããã³ã°ããã¯ã¹ãç Žæ£ããæ°ãã座æšã§ãã©ããã³ã°ãåéããŸãã // æŽæ°ãã座æšã§ Sticker Proto ãåæ§ç¯ val stickersPacket = packetCreator.createSerializedProto(stickerRoll) addPacketToInputStream("sticker_proto_string", stickersPacket, timestamp) // ãªã»ãã察象ã®ã¹ããã«ãŒ ID ãéä¿¡ val stickerSentinels = packetCreator.createInt32Vector(updateIds) addPacketToInputStream("sticker_sentinels", stickerSentinels, timestamp) å
¬åŒãµã³ãã«ã§ã¯ sticker_sentinel ã§ åäžã®ã¹ããã«ãŒ ID ãéä¿¡ããŸãã https://github.com/google-ai-edge/mediapipe/blob/0.10.32/mediapipe/examples/android/src/java/com/google/mediapipe/apps/instantmotiontracking/MainActivity.java#L342-L344 æ¬å®è£
ã§ã¯ sticker_sentinels ãšã㊠createInt32Vector ã§ è€æ°ã®ã¹ããã«ãŒ ID ãé
å ã§æž¡ãããæ¡åŒµããç©äœæ€åºã§åº§æšãæŽæ°ãããè€æ°ã®ã¹ããã«ãŒãåæã«ãªã»ããã§ããããã«ããŸãã æåŸã« 以äžã MediaPipe Instant Motion Tracking ãçšããæè¡çãªå®è£
解説ã§ãããæ±ºããŠå®¹æã«å°å
¥ã§ããææ³ã§ã¯ãããŸããããæ¬æ©èœã®èŠä»¶ã«å¯Ÿã㊠Android ã«æãé©ãã解決çã ãšèããŠããŸãã 以åã« ARCore ã®æ€èšŒãè¡ããŸããããARCore 㯠SLAM æè¡ã«ããäºåã® 3D ãããã³ã°ã«æéãèŠãã çŽ æ©ããã€å®å®ãã AR ãšãã§ã¯ãã®å®çŸã«ã¯é©ããªãã£ããããæ€èšŒãæå¿µããŸããã äž¡ãã¬ãŒã ã¯ãŒã¯ã®éãã以äžã«ãŸãšããŸããAR æè¡ã®æ€èšã§åèã«ãªãã°å¹žãã§ãã é
ç® Instant Motion Tracking ARCore ä»çµã¿ 2D ããã¯ã¹ãã©ããã³ã° + OpenGL æç» ç°å¢ãããã³ã° + 平颿€åºïŒSLAMïŒ ããã€ã¹èŠä»¶ OpenGL ES 察å¿ã§ããã°åäœ ARCore 察å¿ããã€ã¹ã®ã¿ïŒGoogle èªå®å¿
é ïŒ å®å®æ§ æ€åºåº§æšã«äŸåããããè£æ£ãå¿
èŠ ç©ºéèªèãé«ç²ŸåºŠã§å®å® å°å
¥ã³ã¹ã Bazel ãã«ãã»C++ Calculator ã®ã«ã¹ã¿ãã€ãºãå¿
èŠ SDK å°å
¥ã®ã¿ã§æ¯èŒç容æ ãªãŒãã³ãœãŒã¹ ããïŒApache 2.0ïŒ ãªãïŒãããã©ã€ãšã¿ãªïŒ ã«ã¹ã¿ãã€ãºæ§ Calculator ã®è¿œå ã»å€æŽã§æè»ã«æ¡åŒµå¯èœ SDK ã® API ç¯å²å
ã«éå® ããã©ãŒãã³ã¹ 軜éïŒ2D ãã©ããã³ã°ããŒã¹ã®ãã CPU/GPU è² è·ãäœãïŒ é«è² è·ïŒç°å¢ã® 3D 空éãããã³ã°ãåžžæå®è¡ïŒ åŠç¿ã³ã¹ã é«ãïŒBazelã»C++ã»OpenGLã»Protocol Buffers ã®ç¥èãå¿
èŠïŒ äœãïŒAndroid SDK ã®ç¥èŠã§å°å
¥å¯èœïŒ



























