Android Logcatã¯åŒ·åãªãããã°ããŒã«ã§ãã ãã®å©ããåããŠãã¿ã€ã ã¹ã¿ã³ããåç §ããŠãã·ã¹ãã ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã«é¢ããå€ãã®æçšãªæ å ±ãååŸã§ããŸãã Androidã¯ãããŒã¿ãèšé²ããããã®æšæºAPIãéçºè ã«æäŸããŸãã ãããã®APIã¯ãã¢ããªã±ãŒã·ã§ã³ãéçºããã³ãããã°ãããšãã«äœ¿çšãããšäŸ¿å©ã§ãã察å¿ããã³ãã³ãã®åŒã³åºããããã°ã©ã ã³ãŒãã®é©åãªå Žæã«è¿œå ããã ãã§ãã ã³ãã³ãã¯ãLogcatã§è¡šç€ºå¯èœãªã¡ãã»ãŒãžã衚瀺ããŸãã
å°çšã·ã¹ãã çšã®VTuneã¢ã³ãã¯ããããã¡ã€ãªã³ã°çšã®ãœãããŠã§ã¢ããã±ãŒãžã§ãã ããã«ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåæããã³æé©åã§ããŸãã VTuneã¢ã³ãã«ã¯ãéåžžã«äŸ¿å©ãªããŒã«ã§ããã¿ã€ã ã©ã€ã³ããã«ããããŸãã éçºè ã¯ãæéã«é¢é£ããããã©ãŒãã³ã¹æ å ±ã衚瀺ã§ããŸãã
LogcatããVTune Amplifierã¿ã€ã ã©ã€ã³ã«ã¡ãã»ãŒãžããããã³ã°ããæ¹æ³ã¯ïŒ ããã«ãããéçºè ã¯Logcatããã®ã¡ãã»ãŒãžãšVTune Amplifierã¿ã€ã ã©ã€ã³ããã®ããã©ãŒãã³ã¹æ å ±ãèŠãããšãã§ããŸãã ãã®çµæãç¹å®ã®æéã«äœãèµ·ãã£ãããæ£ç¢ºã«ææ¡ãããã®ã€ãã³ããŸãã¯ãã®ã€ãã³ãã«ãã£ãŠã·ã¹ãã ã«ã©ã®ãããªè² è·ãããã£ããããããããã©ãŒãã³ã¹ã«ã©ã®ããã«åœ±é¿ããããããã«ç解ã§ããŸãã
Intel VTune Amplifierã¯ãè¿œå ã®ããã©ãŒãã³ã¹æ å ±ãåŠçããçµã¿èŸŒã¿ããŒã«ã䜿çšããŠååŸããç¬èªã®ããŒã¿ã»ããã«çµ±åã§ããŸãã å€éšããŒã¿ã³ã¬ã¯ã¿ãŒã䜿çšãããããã¹ã察象ã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠååŸã§ããŸãã VTuneã¢ã³ãã«å€éšããŒã¿ãè¿œå ããã«ã¯ãåéãããæ å ±ãããç¹å®ã®æ§é ãæã€CSVãã¡ã€ã«ãå¿ èŠã§ãã ãã®ãã¡ã€ã«ã¯ãããã«äœæ¥ããããã«ãVTuneã¢ã³ãã«ããŒãããå¿ èŠããããŸãã
ç¬èªã®CSVããŒã¿ãã¡ã€ã«ã®äœæã®è©³çŽ°ã«ã€ããŠã¯ãVTune Amplifier User Guideãåç §ããŠãã ããã ç¹ã«ãVTune Amplifier> User's Guide> External Data Importã»ã¯ã·ã§ã³ã«ã¯ããã®ãããªãã¡ã€ã«ã®äœææ¹æ³ã«é¢ããæ å ±ãå«ãŸããŠããŸãã å éšæ§é ã®äŸããããŸãã Logcatããã®ã¡ãã»ãŒãžãVTuneã¿ã€ã ã©ã€ã³ã«è¡šç€ºããã«ã¯ãããã¥ã¢ã«ã«åŸã£ãŠã¡ãã»ãŒãžãCSVãã¡ã€ã«ã«å€æããçµæã®ãã¡ã€ã«ãVTune Amplifierã«ããŒãããå¿ èŠããããŸãã
äŸ
äŸãèããŠã¿ãŸãããã ã¢ããªã±ãŒã·ã§ã³ãcom.example.Thread1ãããããŸãã éãèšç®ãå®è¡ããæ©èœããããŸãã äžè¬çãªçšèªã§ã¯æ¬¡ã®ããã«ãªããŸãã
void myfunction () { Log.v("MYTEST", "start block 1"); { ...// 1 } Log.v("MYTEST", "start block 2"); { ...// 2 } Log.v("MYTEST", "my computation finished"); }
VTune Amplifierã䜿çšããŠAndroidã¢ããªã±ãŒã·ã§ã³ããããã¡ã€ãªã³ã°ããåã«ãã¢ããªã±ãŒã·ã§ã³ãæºåããå¿ èŠãããããšã«æ³šæããŠãã ããã ã€ãŸããAndroidManifest.xmlãã¡ã€ã«ã®<application>ã»ã¯ã·ã§ã³ã§ããããã°æ©èœãæå¹ã«ããå¿ èŠããããŸãã
<application android:debuggable="true" ... >
ããšãã°ãæšæºã®Android StudioããŒã«ã䜿çšããŠãAndroidããã€ã¹ã«ã¢ããªã±ãŒã·ã§ã³ã®ãããã°ããŒãžã§ã³ãã€ã³ã¹ããŒã«ã§ããŸãã ãããŠãAndroid Studioã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããåŸããããéããå¿ èŠããããŸããããããªããšãVTune Amplifierã¯ããŒã¿ãåéã§ããŸããã Logcatã¡ãã»ãŒãžã®ã³ã¬ã¯ã·ã§ã³ãšVTune Amplifierã§ã®ãããã¡ã€ãªã³ã°ãçµã¿åãããã«ã¯ãLogcatãã³ãã³ãã©ã€ã³ããå®è¡ããå¿ èŠããããŸãã Windowsã§äœæ¥ãã人ãšLinuxã䜿çšãã人ã®äž¡æ¹ã«é©ããæ±çšããŒã«ã¯bashã·ã§ã«ã§ãã
Linuxã·ã¹ãã ã§ã¯ãããã©ã«ãã§bashãååšããŸãã ãã ãããã¹ãã·ã¹ãã ãWindowsã®å Žåãè¿œå ã®ãœãããŠã§ã¢ãå¿ èŠã«ãªããŸãã Cygwinããå§ãããŸã ã ãã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšãããšãWindowsã§bashç°å¢ã䜿çšã§ããŸãã ã³ãã³ãã©ã€ã³ããã®Logcatã®æäœã®è©³çŽ°ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
ããã©ã«ãã§ã¯ãããšãã°ãã³ãã³ãã$ adb logcat -v threadtimeãã§Logcatãèµ·åãããšãããŒã¿ãç»é¢ã«è¡šç€ºãããŸãã åºåãå€éšãã¡ã€ã«ã«ãªãã€ã¬ã¯ãããæ¹ãã¯ããã«äŸ¿å©ã§ãã ããã¯ã次ã®ã³ãã³ãã§å®è¡ãããŸãã
$ adb logcat -v threadtime > log.txt
Logcatããã®åºåãlog.txtãã¡ã€ã«ã«ãªãã€ã¬ã¯ãããŸãããã®ãã¡ã€ã«ã¯çŸåšã®ãã£ã¬ã¯ããªã«é 眮ãããŸãã
VTune Amplifierã§ãããã¡ã€ãªã³ã°ãéå§ããåã«LogcatããŒã¿ã®åéãéå§ãããã®åŸã§åæ¢ïŒã³ãã³ãã©ã€ã³ã§Ctrl + CïŒããå¿ èŠããããŸãã
äŸã«æ»ããŸãããã 以äžã«ç€ºãVTuneã¢ã³ãã®ã¿ã€ã ã©ã€ã³ããå€æãããšããã®æ©èœã¯6åå®è¡ãããŸããã ã¢ããªã±ãŒã·ã§ã³ã®ã¡ã€ã³ã¹ã¬ããIDã¯12271ã§ããè¶è²ã®åã¯ãVTune Amplifierã䜿çšãããããã¡ã€ãªã³ã°äžã«åéãããããã©ãŒãã³ã¹ïŒCPUæéïŒæ å ±ã§ãã
VTune Amplifierã¿ã€ã ã©ã€ã³ã§ã¢ããªã±ãŒã·ã§ã³åæçµæã衚瀺
é¢æ°ãå®è¡ããããã³ã«ããlogcat -v threadtimeããšãã圢åŒã®ã³ãã³ãã§Logcatã¡ãã»ãŒãžãåéãããšã以äžã«ç€ºãããŒã¿ã»ãããååŸãããŸãã
01-12 11:13:19.090 2174 2174 V MYTEST : start block 1 01-12 11:13:19.260 2174 2174 V MYTEST : start block 2 01-12 11:13:19.500 2174 2174 V MYTEST : my computation finished
ãã®ããŒã¿ãåãåã£ãããVTuneã¢ã³ããžã®ããŒãã«é©ããé©åãªåœ¢åŒã®CSVãã¡ã€ã«ã«å€æã§ããŸãã VTune Amplifierã®ããã¥ã¡ã³ãã«ãããšãå¿ èŠãªCSVãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
name,start_tsc.UTC,end_tsc,pid,tid V/MYTEST : start block 1,2015-01-12 03:13:19.090,2015-01-12 03:13:19.090,2174,2174 V/MYTEST : start block 2,2015-01-12 03:13:19.260,2015-01-12 03:13:19.260,2174,2174 V/MYTEST:my computation finished,2015-01-12 03:13:19.500, 2015-01-12 03:13:19.500, 2174, 2174
ããã§ã¯ãããŒã¿åã®ãååããšããŠããã®ã³ã°äžã«äœ¿çšãããã¿ã°ãšã¡ãã»ãŒãžè¡ã䜿çšãããŸãã ã¡ãã»ãŒãžæéã¯ãstart_tsc.UTCããã³end_tscåã«åé¡ãããŸãã ããã»ã¹IDãšã¹ããªãŒã IDã¯ãããããCSVãã¡ã€ã«ã§pidãštidãšããŠè¡šãããŸãã ãã£ãŒã«ãã¯ã³ã³ãã§åºåãããŸãã
次ã«ãVTuneã¢ã³ãã«ç§»åããŠã[åæã¿ã€ã]> [CSVããã€ã³ããŒã]ã³ãã³ããå®è¡ããã€ã³ããŒãããããã«äœæããããŒã¿ãã¡ã€ã«ãéžæããå¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ããŒã¿ãããŠã³ããŒãããããã©ãŒãã³ã¹æ å ±ãšãšãã«ã¿ã€ã ã©ã€ã³ã«Logcatããã¡ãã»ãŒãžã衚瀺ããŸãã 次ã®å³ã¯ãã¡ãã»ãŒãžã®å Žæãæãå°ããªé»è²ã®äžè§åœ¢ã«ããŠã¹ã移åãããšãã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠçæãããLogcatã®ããŒã¿ããããã¢ãããŠã£ã³ããŠã«è¡šç€ºãããæ§åã瀺ããŠããŸãã
VTuneã¢ã³ãã®ã¿ã€ã ã©ã€ã³ã§Logcatã¡ãã»ãŒãžã衚瀺ãã
CSVãã¡ã€ã«ãäœæããããã®ãã³ãã次ã«ç€ºããŸãã
- Logcatã«è¡šç€ºãããã¿ã€ã ã¹ã¿ã³ãã¯ãAndroid OSããååŸãããŸãã ãããã¯ãããã€ã¹ã«èšå®ãããŠããã¿ã€ã ãŸãŒã³ã«é¢é£ä»ããããŠããŸãã CSVãã¡ã€ã«ãäœæãããšãã¯ãUTCæšæºã®ã¿ã€ã ã¹ã¿ã³ãã«å€æŽããå¿
èŠããããŸãã VTune Amplifierãžã®ããŒã¿ã®ã€ã³ããŒããæåãããããã«å¿
èŠã§ãã
- CSVãã¡ã€ã«ã®ååã«ã¯ããµãŒãããŒãã£ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠããŒã¿ãåéããããã¹ãåïŒãã¹ãåïŒãå«ãŸããŠããå¿
èŠããããŸãã ããšãã°ããã¡ã€ã«åã®æ§é ã¯æ¬¡ã®ãšããã§ãã[ãŠãŒã¶ãŒå®çŸ©] -hostname- <hostname-of-system> .csvã Androidãå®è¡ããŠããã¿ãŒã²ããããã€ã¹ã®å Žåããã¹ãåã¯ãã¡ã€ã«/ proc / sys / kernel / hostnameã«ãããŸãã ADBã·ã§ã«ã䜿çšããŠè¡šç€ºã§ããŸãã
- ãååãåã«ããæååããŒã¿ã¯ãéçºè
ã®ããŒãºã«å¿ããŠã«ã¹ã¿ãã€ãºã§ããŸãã äžèšã®äŸã§ã¯ãããªã«ãªãã§è¡ããŸãããLogcatã¡ãã»ãŒãžå
šäœããååãåã«é
眮ãããŸããã ãnameãåã察象ãšããæååããŒã¿ã«ã¯ã³ã³ããå«ããªãã§ãã ããã ã³ã³ãã¯ãè¡ã«è¡šç€ºãããã¹ãã§ã¯ãªãäºçŽæžã¿ã®åºåãæåã§ãã
- ãŸããã·ã¹ãã ã®ã«ãŒãã«ããã®ã¡ãã»ãŒãžãCSV圢åŒïŒãdmesgããªã©ïŒã«å€æããVTune Amplifierã«ã€ã³ããŒãããŠãã¿ã€ã ã©ã€ã³ã§è¡šç€ºããããšãã§ããŸãã ãã®æ©èœã¯ãã·ã¹ãã ããã°ã©ããŒãããšãã°ã«ãŒãã«ã¢ãžã¥ãŒã«ãããã€ã¹ãã©ã€ããŒãéçºãããŠãŒã¶ãŒã«ãšã£ãŠéåžžã«äŸ¿å©ã§ãã ã·ã¹ãã ã®ã«ãŒãã«ããã®ã¡ãã»ãŒãžã®å Žåãããã»ã¹IDãšã¹ã¬ããIDã0ã«èšå®ããå¿ èŠããããŸããã·ã¹ãã ã¡ãã»ãŒãžïŒããšãã°ãåããdmesgãããã®ïŒã®ã«ãŠã³ãããŠã³ã¯ãã·ã¹ãã ãèµ·åããç¬éããå§ãŸããŸãã ã¡ãã»ãŒãžåºåã®UTCæéã瀺ãããã«å€æããå¿ èŠããããŸãã ããšãã°ã次ã®åŒã䜿çšããŠã¡ãã»ãŒãžã®ã¿ã€ã ã¹ã¿ã³ããèšç®ã§ããŸãããã¡ãã»ãŒãžæéã=ãçŸåšã®æéã-ãã·ã¹ãã ãåäœãéå§ããŠããã®æéã+ãã¡ãã»ãŒãžã®ã¿ã€ã ã¹ã¿ã³ããã ããã§ã®ãçŸåšæå»ããšã¯ãçŸåšã®ã·ã¹ãã æå»ãæå³ããŸãã ADBã·ã§ã«ã®ãdateãã³ãã³ãã䜿çšããŠååŸã§ããŸãã ãã·ã¹ãã ã®éå§ããã®æéãã¯ãOSããŒãã®éå§ããçµéããæéã§ãã ã/ proc / uptimeããã¡ã€ã«ã«ãããŸãã
ãã«ããŒã¹ã¯ãªãã
äžèšã®æé ãç°¡ç¥åã§ããå®éšçãªbashã¹ã¯ãªããïŒlogcat2vtune.shïŒãäœæããŸããã ããã䜿çšããŠãLogcatããŒã¿ã®åéãšCSVãã¡ã€ã«ã®äœæãèªååã§ããŸãã ã¹ã¯ãªããã¯ãã·ã¹ãã ã«ãŒãã«ããã®ã¡ãã»ãŒãžã ãã§ãªããLogcatã¢ããªã±ãŒã·ã§ã³ã«è¡šç€ºãããã¡ãã»ãŒãžãåéã§ããŸãã ããã«ãã¿ãŒã²ããã·ã¹ãã ã«é¢ããæ å ±ãèªã¿åãããã®ã³ã°çµæã解æããCSVãã¡ã€ã«ãèªåçã«çæããŸãã
ãã®ã¹ã¯ãªããã䜿çšããã«ã¯ãbashç°å¢ãå¿ èŠã§ãã åè¿°ã®ããã«ãLinuxã·ã¹ãã ã§ã¯ããã¯æšæºã®äœæ¥ç°å¢ã§ãããWindowsã§ã¯ãããšãã°Cygwinã䜿çšã§ããŸãã
VTune Amplifierã䜿çšããŠãããã¡ã€ãªã³ã°äžã«ããŒã¿ãå«ãCSVãã¡ã€ã«ãååŸããã«ã¯ã以äžãå®è¡ããå¿ èŠããããŸãã
- ã³ãã³ãã©ã€ã³ãããadbãã䜿çšå¯èœãã©ããã確èªããŸãã ãã®åŸãå¿
èŠãªããŒãæå®ããŠãlogcat2vtune.shã¹ã¯ãªãããå®è¡ããŸãã ããšãã°ã次ã®ããã«ãªããŸãã> ./logcat2vtune.sh -c logcat -g MYTEST
- VTune Amplifierã§ããã©ãŒãã³ã¹ããŒã¿åéãå®è¡ããŸãã ããã¯ãã¢ããªã±ãŒã·ã§ã³ãŠã£ã³ããŠãšã³ãã³ãã©ã€ã³ã®äž¡æ¹ããå®è¡ã§ããŸãã
- VTune Amplifierã§ã®ããŒã¿åéãåæ¢ããŸãã
- logcat2vtune.shãå®è¡ãããŠããã³ãã³ããŠã£ã³ããŠã®ä»»æã®ãã¿ã³ãæŒããŠãããŒã¿åéãåæ¢ããŸãã ã¹ã¯ãªããã¯ãåéããããã°ããŒã¿ãèªã¿åããbashæ£èŠè¡šçŸã䜿çšããŠè§£æããCSVãã¡ã€ã«ã«å€æããŸãã ãã®ãã¡ã€ã«ã¯ãã³ãã³ãã©ã€ã³ããäœæ¥ããŠããçŸåšã®ãã©ã«ããŒã«ãããŸãã
- çµæã®CSVãã¡ã€ã«ãVTune Amplifierã«ããŠã³ããŒãããŸãã Logcatã¡ãã»ãŒãžãã¿ã€ã ã©ã€ã³ã§è¡šç€ºã§ããããã«ãªããŸããã
å žåçãªã¹ã¯ãªããã®äœ¿çšäŸã次ã«ç€ºããŸãã
$logcat2vtune.sh -c logcat -g MYTEST
ãã®ã³ãã³ãã䜿çšãããšãLogcatããŒã¿ãåéããæååãMYTESTããæã€ã¡ãã»ãŒãžãéžæããŠãCSVãã¡ã€ã«ãçæã§ããŸãã Logcatã¹ã¯ãªããã¯ã次ã®ã³ãã³ãã䜿çšããŠããŒã¿ãåéããŸãã
$adb shell logcat -v threadtime
ãMYTESTãã¯ãLogcatããã®ã¡ãã»ãŒãžããã£ã«ã¿ãªã³ã°ãããè¡ã§ãã Logcatã¯éåžžã«é·ãã¡ãã»ãŒãžã®ãªã¹ãã衚瀺ã§ãããããéçºè ã¯éåžžãããã»ã¹ããã®ã¡ãã»ãŒãžã®ã¿ã«é¢å¿ãããããããã£ã«ã¿ãŒã®äœ¿çšã匷ããå§ãããŸãã ãã£ã«ã¿ãŒãšããŠãLogcatã¡ãã»ãŒãžã¿ã°åãããã»ã¹IDãã¹ã¬ããIDããŸãã¯ãã®ä»ã®æååã䜿çšã§ããŸãã ããã§ã«ã³ãã䜿çšã§ããŸããè€æ°ã®è¡ãæå®ã§ããŸãã ã-gãã¹ã€ããã䜿çšããŠã¹ã¯ãªãããå®è¡ãããšãã«æå®ãããä»»æã®è¡ãšäžèŽããã¡ãã»ãŒãžãéžæãããCSVãã¡ã€ã«ãšããŠæŽçãããŸãã
$logcat2vtune.sh -c dmesg -g MYDRIVER
ãã®ã³ãã³ãã䜿çšãããšããdmesgãããã¡ãã»ãŒãžãåéãããMYDRIVERãè¡ã§ãã£ã«ã¿ãªã³ã°ããŠCSVãã¡ã€ã«ãäœæã§ããŸãã
$logcat2vtune.sh -c logcatk -g MYTEST,MYDRIVER
ãã®ã³ãã³ãã䜿çšãããšãLogcatããã®éåžžã®ã¡ãã»ãŒãžãšã«ãŒãã«ããã®ã¡ãã»ãŒãžã®äž¡æ¹ãåéãããMYTESTããŸãã¯ãMYDRIVERãã®è¡ã§ãã£ã«ã¿ãªã³ã°ããŠCSVãã¡ã€ã«ãäœæã§ããŸãã ãã®çµæãVTuneã¢ã³ãã®ã¿ã€ã ã©ã€ã³ã§ã¯ãéåžžã®ãŠãŒã¶ãŒã¬ãã«ã®ã¢ããªã±ãŒã·ã§ã³ããã®ã¡ãã»ãŒãžãšãdmesgãããã®ã«ãŒãã«ã¡ãã»ãŒãžã衚瀺ã§ããŸãã ã¹ã¯ãªããã¯ã次ã®ã³ãã³ãã䜿çšããŠãã®ããŒã¿ãåéããŸãã
>adb shell logcat -v threadtime -f /dev/kmsg | adb shell cat /proc/kmsg
ãã®å Žåãã¿ã€ã ã©ã€ã³äžã§TID 0ã®vmlinuxããã®ã¡ãã»ãŒãžãšTID 1922ã®Logcatããã®ãŠãŒã¶ãŒã¬ãã«ã®ãã°ã衚瀺ã§ããŸãã
VTune Amplifierã¿ã€ã ã©ã€ã³äžã®ããŸããŸãªã¹ããªãŒã ããåä¿¡ããLogcatã¡ãã»ãŒãžã衚瀺ãã
ã¹ã¯ãªããã®æäœã®è©³çŽ°ã«ã€ããŠã¯ããlogcat2vtune.sh âhãã³ãã³ãã䜿çšããŠãã ããã
å¿ èŠã«å¿ããŠãç¬èªã®ããŒãºã«åãããŠã¹ã¯ãªãããã«ã¹ã¿ãã€ãºã§ããŸãã ãlogcat2vtune.shãã¯å®éšçãªãããžã§ã¯ãã§ãããå æ¬çãªãã¹ãã«åæ ŒããŠããªãããšã«æ³šæããŠãã ããã 圌ãšä»äºãããŠãããšãã«äœãåé¡ã«ééããããããã«ã€ããŠæããŠãã ããã
çµè«
ããã§èª¬æããå 容ã¯ãIntel System Studio 2015ããã³Intel System Studio 2016補åã«é©çšãããWindowsïŒIA-32ãIntel 64ïŒããã³LinuxïŒIA32ãIntel 64ïŒãã¹ãã·ã¹ãã ã§ã®åäœã«ã€ããŠèª¬æããŠããŸãã Android OSã¯ã¿ãŒã²ããã·ã¹ãã ãšèŠãªãããŸãã
äžèšã®ããŒã«ãšææ³ã䜿çšããŠãAndroid Logcatã®æ å ±ãšVTune Amplifierã®ããã©ãŒãã³ã¹ããŒã¿ãçµã¿åãããããšã§ãAndroidã¢ããªã±ãŒã·ã§ã³ã®ãããã¡ã€ãªã³ã°ãšãããã°ãããé«ãã¬ãã«ã«é²ããããšãã§ããŸãã ããã«ãããã¢ããªã±ãŒã·ã§ã³ãçç£æ§ãšè²»çšå¯Ÿå¹æã®æ°ããªé«ã¿ãåŸæããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã