ãåç¥ã®ããã«ãç§ãã¡ã®äž»ãªæŽ»åã¯PVS-Studioã³ãŒãã¢ãã©ã€ã¶ãŒã®éçºã§ãã ãããŠãç§ãã¡ã¯ãããé·ãéè¡ã£ãŠããŸããããç§ãã¡ã«ã¯æããããã«ãç§ãã¡ã¯ããŸããã£ãŠããŸãããæè¿ãç§ãã¡ã¯çããã¢ã€ãã¢ãæãã€ããŸããã ããã§ããã¯ã©ã€ã¢ã³ããšåãã¢ãŒãã§ããŒã«ã䜿çšããããšã¯ãããŸããã ãããããã¡ãããPVS-Studioã䜿çšããŠPVS-Studioã³ãŒãããã§ãã¯ããŸãã ããããççŽã«èšã£ãŠãPVS-Studioãããžã§ã¯ãã¯ããã»ã©å€§ãããããŸããã ãŸããPVS-Studioã³ãŒãã§ã®äœæ¥ã¯ãããšãã°ChromiumãLLVMã³ãŒãã§ã®äœæ¥ãšã¯ã¹ã¿ã€ã«ãç¹åŸŽãç°ãªããŸãã
åœç€Ÿã®ããŒã«ãé·æãããžã§ã¯ãã§ã©ã®ããã«äœ¿çšãããŠããããç解ããããã«ãç§ãã¡ã¯ã¯ã©ã€ã¢ã³ãã®ç«å Žã«ãªãããã£ãã®ã§ãã å®éãç§ãã¡ãå®æçã«è¡ã£ãŠãããããžã§ã¯ããå€ãã®èšäºãæžããŠãããããžã§ã¯ãã®ãã§ãã¯ã¯ãç§ãã¡ãç©æ¥µçã«å察ããŠããã¢ãã©ã€ã¶ãŒã®äœ¿çšã¹ã¿ã€ã«ã«éããŸããã ãããžã§ã¯ãã§ã¯ã³ã¿ã€ã ã¢ãã©ã€ã¶ãŒãå®è¡ããããã€ãã®ãšã©ãŒãä¿®æ£ãã1幎åŸã«ãããç¹°ãè¿ãã®ã¯ééã£ãŠããŸãã ã³ãŒããèšè¿°ãããšããã¢ãã©ã€ã¶ãŒã¯æ¯æ¥å®æçã«äœ¿çšããå¿ èŠããããŸãã
ãŸããããã¯äœã®ããã§ããïŒ ä»ã®ãããžã§ã¯ãã«ææŠããããšããçè«çãªæ¬²æ±ã¯ãåŸã ã«ææ¡ããå§ããå®çšçãªææ¡ãšäžèŽããŸããã æšå¹Žãç§ãã¡ã¯äŒç€Ÿã®ããŒã ãéžã³åºããŸãã-ãã©ãŒïŒ -ã«ã¹ã¿ã éçºã ã€ãŸãã圌女ã¯ãµãŒãããŒãã£ã®ãããžã§ã¯ãã«ããã°ã©ããŒãšããŠåå ããŸããã ãããŠãé·æçã§ããªã倧èŠæš¡ãªãããžã§ã¯ãã«åå ããããšã¯èå³æ·±ããã®ã§ããã å°ãªããšã2ã3人ã®éçºè ãšå°ãªããšã6ãæã®éçºã 2ã€ã®ç®æšããããŸããã
- å¥ã®ã¿ã€ãã®ããžãã¹ïŒè£œåéçºã«å ããŠã«ã¹ã¿ã éçºïŒãè©ŠããŠãã ããã
- é·æãããžã§ã¯ãã§ã®PVS-Studioã®äœ¿çšãèªåã§ç¢ºèªããŠãã ããã
æåãš2çªç®ã®ã¿ã¹ã¯ã¯äž¡æ¹ãšãæåããŸããã ãããããã®èšäºã¯ã«ã¹ã¿ã éçºã®ããžãã¹ã«ã€ããŠã§ã¯ãªããç§ãã¡ã®çµéšã«ã€ããŠã§ãã ããã¯çµç¹çãªçµéšã§ã¯ãããŸããã ããã«ã€ããŠã¯éåžžã«å€ãã®èšäºããããŸãã ä»ã®äººã®ãããžã§ã¯ãã®ã³ãŒããæ±ã£ãçµéšã«ã€ããŠã ããã«ã€ããŠè©±ãããã§ãã
èå³æ·±ãç¹
ãµãŒãããŒãã£ã®ãããžã§ã¯ãã¯å€ãã®ããšãæããŠãããŸãã ãã®ãããã¯ã«è€æ°ã®èšäºãæ§ãããšæããŸãã 次ã«ãèå³æ·±ã芳å¯ããå§ããŸãã 倧èŠæš¡ã§å€ããããžã§ã¯ãã«ããããšãå€æããã³ãŒãã®3ã€ã®æããæ©èœã«æ°ä»ããŸããã æéãçµã€ã«ã€ããŠãä»ã®èŠ³å¯çµæã«ã€ããŠã®åºçç©ãåºããšç¢ºä¿¡ããŠããŸãã
ãã©ãããã©ãŒã ã®å®¹éã32ããããã64ãããã«å€æŽããããšã«é¢ããèšäºããããããããŸãã å€ãã®ãšã©ãŒã¯ç§»æ€ã«é¢é£ããŠããã64ãããããã°ã©ã ã«çŸãå§ããŸãã 64ããããšã©ãŒãšåŒã³ãŸãã
ãã ãã64ãããã·ã¹ãã ãžã®ç§»è¡ã«å ããŠãã³ãŒãã«ã¯ããã»ã©ç®ç«ããªãå€æŽãå ããããŠããŸãã ããã¯ãã³ã³ãã€ã©ãã©ã€ãã©ãªã®éçºãããã³ãããžã§ã¯ãèªäœã®æçã«é¢é£ããŠèµ·ãããŸããã ãããã®å€æŽã®çµæã¯ãé·ãéçºå±¥æŽãæã€ã³ãŒãã§ã¯ã£ãããšèŠããŸãã ãããã«ã€ããŠè°è«ããããšããå§ãããŸãã ç§ã¯ãããé¢çœããŠäŸ¿å©ã«ãªããšæããŸãã 誰ããå€ãã³ãŒãã確èªããŠãåæ§ã®åé¡ãç¹å®ããããšæããããããŸããã
èæ ®ããããšã©ãŒãã¿ãŒã³ã¯ãPVS-Studioã¢ãã©ã€ã¶ãŒã®ãããã§æ°ã¥ããŸããã ãããã®ãšã©ãŒã®å€ãã¯é ãããŠããŸãã ã³ãŒãã¯ãéã®ãããã§ã»ãšãã©æ©èœããŸãã ãã ãããã®ãããªãã¹ã¯ãã¹ãŠããã€ã§ãçºç ²ã§ããå°ããªæéç匟ã§ãã
ã泚æ NDAã®å¶éãåé¿ããããã«ãååãå€æŽããã³ãŒããç·šéããŸããã å®éãããã¯ããã°ã©ã ã«ãã£ãã³ãŒãã§ã¯ãããŸããã ãã ããããã¹ãŠã¯å®éã®ã€ãã³ãã«åºã¥ããŠããŸããã
æ°ãããªãã¬ãŒã¿ãŒã®åäœã®å€æŽ
æã ããnewãæŒç®åã¯ã¡ã¢ãªå²ãåœãŠãšã©ãŒã®å Žåã«NULLãè¿ããŸããã ãã®åŸãã³ã³ãã€ã©ã¯ææ°ã®C ++æšæºããµããŒããå§ãããã®ãããªç¶æ³ã§std :: bad_allocäŸå€ãã¹ããŒããŸããã ãnewãæŒç®åã«åŒ·å¶çã«NULLãè¿ãããšãã§ããŸãããä»ã¯ããããã€ã³ãã§ã¯ãããŸããã
ã©ãããããããã®å€æŽã¯ããã°ã©ãã®ã³ãã¥ããã£ã«ãã£ãŠéåžžã«è¡šé¢çã«æ°ã¥ãããããã§ãã ãã®äºå®ã«æ³šæããæ°ããåäœãèæ ®ããŠã³ãŒããæžãå§ããŸããã ãã¡ããããæ°ãããæŒç®åãäŸå€ãã¹ããŒããããšããŸã ç¥ããªãããã°ã©ããŒãããŸãã ããããç§ãã¡ã¯éåžžã®é©åãªããã°ã©ããŒã«ã€ããŠè©±ããŠããã 20幎åã®ããã«ãäœãç¥ããããªããã¹ã¿ã€ã«ãæžãç¶ããããšæã人ã¯ãç§ãã¡ã«ã¯èå³ããããŸããã
ãã ãããæ°ãããæŒç®åãåäœãå€æŽããããšãç¥ã£ãŠãã人ã§ããæ¢åã®ã³ãŒãã確èªããŠããŸããã 誰ããåã«æ°ã¥ããªãã£ãã 誰ããæãã§ããŸãããã圌ã«ã¯æéããããŸããã§ããããããŠããããå¿ããŸããã ãã®çµæãã¡ã¢ãªãå²ãåœãŠãããšãã§ããªãç¶æ³ã®èª€ã£ãããã»ããµã¯ãèšå€§ãªæ°ã®ããã°ã©ã ã§çãç¶ããŸãã
äžéšã®ã³ãŒãã¯ç¡å®³ã§ãã
int *x = new int[N]; if (!x) throw MyMemoryException(); // 1 int *y = new int[M]; if (!y) return false; // 2
æåã®ã±ãŒã¹ã§ã¯ãMyMemoryExceptionã®ä»£ããã«std :: bad_allocäŸå€ãã¹ããŒãããŸãã ã»ãšãã©ã®å Žåããããã®äŸå€ã¯åãæ¹æ³ã§åŠçãããŸãã åé¡ãããŸããã
2çªç®ã®å Žåããã§ãã¯ã¯æ©èœããŸããã é¢æ°ã¯å€ãfalseããè¿ããŸããã 代ããã«ãåŸã§åŠçãããäŸå€ãçºçããŸãã ããã¯ééãã§ãã ããã°ã©ã ã®åäœãå€æŽãããŸããã ãããå®éã«ã¯ãããã¯ã»ãšãã©åé¡ã«ã€ãªãããŸããã ããã°ã©ã ãã¡ã¢ãªäžè¶³ã«å¯ŸããŠå°ãç°ãªãåå¿ãããã ãã§ãã
ããã°ã©ã ã®åäœãå°ãã ãã§ã¯ãªããéåžžã«å€§ããå€åããå Žåã«ã€ããŠèŠåããããšãããéèŠã§ãã 倧èŠæš¡ãªå€ããããžã§ã¯ãã«ã¯ããã®ãããªç¶æ³ããããããããŸãã
ååãªã¡ã¢ãªããªããšãã«ç¹å®ã®ã¢ã¯ã·ã§ã³ãå®è¡ããå¿ èŠãããå Žåã®äŸã次ã«ç€ºããŸãã
image->SetBuffer(new unsigned char[size]); if (!image->GetBuffer()) { CloseImage(image); return NULL; } FormatAttribute *pAttrib = new FormatAttribute(sName, value, false); if (pAttrib ) { m_attributes.Insert(pAttrib); } else { TDocument* pDoc = m_state.GetDocument(); if (pDoc) pDoc->SetErrorState(OUT_OF_MEMORY_ERROR, true); }
ãã®ãããªã³ãŒãã¯ã¯ããã«å±éºã§ãã ããšãã°ãã¡ã¢ãªäžè¶³ã®å ŽåããŠãŒã¶ãŒã¯ããã¥ã¡ã³ãã®å 容ã倱ãå¯èœæ§ããããŸãããããã¥ã¡ã³ãããã¡ã€ã«ã«ä¿åããæ©äŒãäžããããšã¯ããªãå¯èœã§ãã
æšå¥šäºé ã ããã°ã©ã å ã®ãã¹ãŠã®ãæ°ãããã¹ããŒãã¡ã³ããèŠã€ããŸãã ãã€ã³ã¿ãŒããŒãã®å Žåãããã°ã©ã ãäœããã®ã¢ã¯ã·ã§ã³ãå®è¡ãããã©ããã確èªããŸãã ãã®ãããªå ŽæãæžãçŽããŠãã ããã
PVS-Studioã¢ãã©ã€ã¶ãŒã¯ã V668蚺æã䜿çšããŠæå³ã®ãªããã§ãã¯ãæ€åºããã®ã«åœ¹ç«ã¡ãŸãã
char *ãstd :: stringã«çœ®ãæãã
CããC ++ãžã®ç§»è¡ãšæšæºã©ã€ãã©ãªã®äººæ°ã®é«ãŸãã«ãããstd :: stringãªã©ã®æååã¯ã©ã¹ãããã°ã©ã ã§åºã䜿çšãããããã«ãªããŸããã ããã¯ç解ã§ããç解ã§ããŸãã char *ãã€ã³ã¿ãŒã§ã¯ãªããæ¬æ Œçãªæååã䜿çšããæ¹ãç°¡åã§å®å šã§ãã
æååã¯ã©ã¹ã¯ãæ°ããã³ãŒãã ãã§ãªããããã€ãã®å€ããã©ã°ã¡ã³ãã®å€æŽã«ã䜿çšããå§ããŸããã ããã«ãããã©ãã«ãçºçããå¯èœæ§ããããŸãã 泚æã匱ããã ãã§ååã§ãããã³ãŒããå±éºã«ãªã£ããå®å šã«äžæ£ã«ãªã£ããããŸãã
ããããæãããã§ã¯ãªãã楜ãã¿ããå§ããŸãããã ãã®ãããªéå¹ççãªã«ãŒããçºçããå ŽåããããŸãã
for (i = 0; i < strlen(str.c_str()); ++i)
æããã«ãå€æ° 'str'ãéåžžã®ãã€ã³ã¿ãŒã§ãã£ãå Žåã ã«ãŒãã®åå埩ã§strlenïŒïŒé¢æ°ãåŒã³åºãã®ã¯è¯ããããŸããã ããã¯é·ãè¡ã§ã¯éåžžã«éå¹ççã§ãã ãããããã€ã³ã¿ãŒãstd :: stringã«å€ããåŸãã³ãŒãã¯ããã«æãã«èŠãå§ããŸããã
åã®å€æŽã軜çã«è¡ãããããšã¯ããã«ããããŸãã ããã«ãããåæ§ã®éå¹ççãªã³ãŒãããšã©ãŒãçºçããå¯èœæ§ããããŸãã ééãã«ã€ããŠè©±ããŸãããïŒ
wstring databaseName; .... wprintf("Error: cannot open database %s", databaseName); // 1 CString s; .... delete [] s; // 2
æåã®ã±ãŒã¹ã§ã¯ããã€ã³ã¿ãŒãwchar_t *ãããwstringãã«å€ãããŸããã ããŒã¿ããŒã¹ãéãããšãã§ãããã¡ãã»ãŒãžãå°å·ããå¿ èŠãããå Žåãåé¡ãçºçããŸãã ã³ãŒãã¯ã³ã³ãã€ã«ãããŸãããã¢ãã©ã«ããã©ãç»é¢ã«å°å·ãããŸãã ãŸãã¯ãããã°ã©ã ã¯éåžžã¯ã©ãã·ã¥ããŸãã çç±-c_strïŒïŒãžã®åŒã³åºããè¿œå ããã®ãå¿ããã æ£ãããªãã·ã§ã³ïŒ
wprintf("Error: cannot open database %s", databaseName.c_str());
2çªç®ã®ã±ãŒã¹ã¯äžè¬çã«å£®å€§ã§ãã é©ãããšã§ã¯ãããŸãããããã®ãããªã³ãŒãã¯æ£åžžã«ã³ã³ãã€ã«ãããŸãã éåžžã«äººæ°ã®ããæååã¯ã©ã¹CStringã䜿çšãããŸãã CStringã¯ã©ã¹ã¯æé»çã«ãã€ã³ã¿ãŒã«å€æã§ããŸãã ãããããã§èµ·ãã£ãŠããããšã§ãã ãã®çµæãããã«ãããã¡ãŒãåé€ãããŸãã
æšå¥šäºé ã ãã€ã³ã¿ãŒãæååã¯ã©ã¹ã«å€æŽããå Žåã¯ãæ éã«è¡ã£ãŠãã ããã åã±ãŒã¹ã確èªããã«ãã«ã¯äº€æã䜿çšããªãã§ãã ããã ã³ãŒããã³ã³ãã€ã«ããããããšãã£ãŠããããæ©èœãããšã¯éããŸããã ã³ãŒããç·šéããå¿ èŠããªãå Žåã¯ããã€ã³ã¿ã®ã¿ã䜿çšããŠã³ãŒããæ®ãããšããå§ãããŸãã ã³ãŒããã¯ã©ã¹ã§èª€ã£ãŠåäœãããããããã€ã³ã¿ã§æ£ããåäœããæ¹ãé©åã§ãã
PVS-Studioã¢ãã©ã€ã¶ãŒã¯ãã¯ã©ã¹ãã€ã³ã¿ãŒã®çœ®æãåå ã§çºçãããšã©ãŒã®äžéšãæ€åºããã®ã«åœ¹ç«ã¡ãŸãã ããã«ã¯ã V510 ã V515ãªã©ã®èšºæã圹ç«ã¡ãŸãã ããããã¢ãã©ã€ã¶ãŒã«å®å šã«äŸåããããšã¯äŸ¡å€ããããŸããã éåžžã«åµé çãªã³ãŒãããã£ããã§ããŸãããã®å Žåããšã©ãŒã¯ã¢ãã©ã€ã¶ãŒã ãã§ãªããçµéšè±å¯ãªããã°ã©ããŒã§ãèŠã€ããããšãã§ããŸãã
charãwchar_tã«çœ®ãæãã
ãããžã§ã¯ãã¯éçºäžã§ãããã¢ããªã±ãŒã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ãå€èšèªã«ããããšããèŠæããããŸãã ãŸããããæç¹ã§ãcharãwchar_tã«å€§éã«çœ®ãæããããŸãã ã³ã³ãã€ã©ãŒã«ãã£ãŠçæããããšã©ãŒãä¿®æ£ããŸããã ã¢ããªã±ãŒã·ã§ã³ã®ãæºåå®äºããŠãã³ãŒãããŒãžã§ã³ã
å®éã«ã¯ããã®ãããªäº€æã®åŸãã¢ããªã±ãŒã·ã§ã³ã¯ãµããã«å€ãããŸãã ãã®ãããªäº€æåŸã«çºçãããšã©ãŒã¯ãæ°å幎ã«ããã£ãŠçŸããåçŸããã®ãå°é£ã§ãã
ããã¯ã©ã®ããã«ã§ããŸããïŒ ãšãŠãç°¡åã§ãã å€ãã®ã³ãŒãã¯ãæåã®ãµã€ãºãå€æŽããæºåãã§ããŠããŸããã ã³ãŒãã¯ãšã©ãŒãèŠåãªãã§ã³ã³ãã€ã«ãããŸãã ãã ããã50ïŒ ãã§ã®ã¿æ©èœããŸãã ããã§ãç§ãã¡ã®æå³ãç解ã§ããŸãã
ã泚æ åŠçããåãåã£ãæªãã³ãŒãã«è ããããŠããªãããšãæãåºãããŠãã ããã ããã°ã©ããŒç掻ã®å³ããçŸå®ã«ã€ããŠè©±ããŠããŸãã 倧èŠæš¡ã§å€ããããžã§ã¯ãã§ã¯ããã®ãããªãšã©ãŒã¯å¿ ç¶çã«çºçããŸãã ãããŠããããã¯äœçŸããããŸãã çå£ã«ã æ°çŸ
äŸïŒ
wchar_t tmpBuffer[500]; memset(tmpBuffer, 0, 500); // 1 TCHAR *message = new TCHAR[MAX_MSG_LENGTH]; memset(charArray, 0, MAX_MSG_LENGTH*sizeof(char)); // 2 LPCTSTR sSource = ...; LPTSTR sDestination = (LPTSTR) malloc (_tcslen(sSource) + 12); // 3 wchar_t *name = ...; fprintf(fp, "%i : %s", i, name); // 4
åè ã®å Žåãããã°ã©ããŒã¯ãã£ã©ã¯ã¿ãŒã®ãµã€ãºãæéãšãšãã«å€åãããšã¯ãŸã£ããèããŠããŸããã§ããã ãããã£ãŠããããã¡ãŒã®ååã®ã¿ãã¯ãªã¢ããŸããã ãããç§ã®èšèã®çŽ50ïŒ ã®ç±æ¥ã§ãã
2çªç®ã®ã±ãŒã¹ã§ã¯ãããã°ã©ããŒã¯ãã£ã©ã¯ã¿ãŒã®ãµã€ãºãå€ãããšæšæž¬ããŸããã ãã ããã* sizeofïŒcharïŒããšãããã³ãã¯ã倧éã®åã®çœ®æã«ã¯åœ¹ç«ã¡ãŸããã§ããã ééã£ãããšãããå¿ èŠããããŸããã æ£ãããªãã·ã§ã³ïŒ
memset(charArray, 0, MAX_MSG_LENGTH * sizeof(charArray[0]));
3çªç®ã®äŸã åã¯ãã¹ãŠåé¡ãããŸããã é¢æ°_tcslenïŒïŒã¯ãæååã®é·ããèšç®ããããã«äœ¿çšãããŸãã äžèŠããã¹ãŠãçŽ æŽãããã§ãã ãã ããæåã®ã¿ã€ãããwchar_tãã«ãªãå§ãããšãããã°ã©ã ã¯åã³50ïŒ ã§åäœãå§ããŸããã
å¿ èŠãªã¡ã¢ãªã®2åã®ã¡ã¢ãªãå²ãåœãŠãããŸãã å®éãã¡ãã»ãŒãžã®é·ããå¯èœãªæ倧é·ã®ååãè¶ ãããŸã§ãããã°ã©ã ã¯æ£åžžã«åäœããŸãã é·ãéã³ãŒãã«æ®ã£ãŠããäžå¿«ãªãšã©ãŒã
4çªç®ã®äŸã printfïŒïŒãsprintfïŒïŒãªã©ãä¿®æ£ããŸããããfrintfïŒïŒã®ç¢ºèªãå¿ããŠããŸããã ãã®çµæããã¿ããã¡ã€ã«ã«æžã蟌ãŸããŸãã 次ã®ãããªããšãããå¿ èŠããããŸããã
fwprintf(fp, L"%i : %s", i, name);
ãŸãã¯ãéåžžã®ASCIIãã¡ã€ã«ã®å ŽåïŒ
fprintf(fp, "%i : %S", i, name);
ã泚æ ä»ãç§ã¯Windowsã®èŠ³ç¹ãããçŽ50ïŒ ã話ããŠãããšæã£ãã Linuxã§ã¯ãwchar_tåã¯2ãã€ãã§ã¯ãªã4ãã€ãã䜿çšããŸãã ãããã£ãŠãLinuxã®äžçã§ã¯ãããã°ã©ã ã¯äžè¬ã«25ïŒ ããåäœããŸãã:)ã
æšå¥šäºé ã æ¢ã«charãwchar_tã«å€§éã«çœ®ãæããŠããå Žåãäœã圹ç«ã€ãããããŸããã ããã¯å€ãã®èå³æ·±ãééããç¯ãå¯èœæ§ããããŸãã wcahr_tã䜿çšãããŠãããã¹ãŠã®å Žæã綿å¯ã«ç¢ºèªããããšã¯çŸå®çã§ã¯ãããŸããã éšåçã«ã¯ãéçã³ãŒãã¢ãã©ã€ã¶ãŒã圹ç«ã¡ãŸãã 圌ã¯ããã€ãã®ãšã©ãŒãæããã«ããŸãã äžèšã®ãšã©ãŒã¯ãPVS-Studioã¢ãã©ã€ã¶ãŒã«ãã£ãŠæ€åºãããŸãã charãwchar_tã«çœ®ãæããããšã®çµæã¯éåžžã«å€æ§ã§ãããããŸããŸãªèšºæã§æããã«ãªããŸãã ãããããªã¹ãããã®ã¯æå³ããããŸããã äŸãšããŠã V512 ã V576 ã V635ãªã©ã«ååãä»ããããšãã§ããŸãã
ãŸã 亀æãè¡ã£ãŠããªãããèšç»ããŠããå Žåã¯ãçå£ã«ã¢ãããŒãããŠãã ããã ã¿ã€ããèªåçã«çœ®ãæããã³ã³ãã€ã«ãšã©ãŒãä¿®æ£ããã«ã¯ãããšãã°2æ¥ããããŸãã ã³ãŒãã衚瀺ããŠåã眮æãæåã§è¡ãã«ã¯ã1æ¡é·ãæéãããããŸãã ããšãã°ã2é±éãè²»ãããŸãã ããããããã¯2幎åŸã«æ°ãããšã©ãŒããã£ãããããããåªããŠããŸãã
- æååã®èª€ã£ããã©ãŒãããã
- å²ãåœãŠãããã¡ã¢ãªãããã¡ã®å¢çãè¶ãã;
- ååã¯ãªã¢ããããããã¡ãŒã§äœæ¥ããŸãã
- ååã«ã³ããŒããããããã¡ãŒãåŠçããŸãã
- ãªã©ãªã©ã
ãããã«
ãµãŒãããŒãã£ã®ã«ã¹ã¿ã ã¡ã€ãã®éçºã«åå ããçµéšã«æºè¶³ããŠãããããäžçãããŸããŸãªç®ã§èŠãããšãã§ããŸããã éçºè ãšããŠãµãŒãããŒãã£ã®ãããžã§ã¯ãã«åŒãç¶ãåå ããŸãã®ã§ããã®ãããã¯ã«ã€ããŠèª°ããšè©±ããããšæã£ããæžããŠãã ããã åŸã§ããªãã«ã€ããŠã®æãããªèšäºãèŠã€ããããšãæããŠããå ŽåïŒèŠã€ãã£ããšã©ãŒã«ã€ããŠïŒããšã«ããæžã蟌ã¿ãŸã-NDAãç§ãã¡ãã¹ãŠãå©ããŠãã ããïŒ