ããã©ãŒãã³ã¹ã®æé©å: Android çšã¢ããªãäœæããããã®ãã³ã
ããã©ãŒãã³ã¹ãæé©åããé«å質㮠Android ã¢ããªãäœæããããã®å°éå®¶ã®ãã³ããšãã¹ã ãã©ã¯ãã£ã¹ãã芧ãã ããã Android Studioãã¡ã¢ãªç®¡çãããããªãŒã®æé©åãã¬ã³ããªã³ã°ãªã©ã«ã€ããŠåŠã³ãŸãã

ã³ãŒãã®æé©åãšã¢ãžã¥ãŒã«å
é«å質㮠Android ã¢ã㪠ã®äœæã¯ãã¯ãªãŒã³ã§ã¢ãžã¥ãŒã«åãããæé©åãããã³ãŒããèšè¿°ããããšããå§ãŸããŸããã³ãŒãã®æé©åãšã¢ãžã¥ãŒã«åã«ãããã¢ããªã®ä¿å®ããã©ãã«ã·ã¥ãŒãã£ã³ã°ãé·æã«ãããæ¡åŒµã容æã«ãªããŸãã Android ã¢ããªçšã«æé©åãããã³ãŒããäœæããã®ã«åœ¹ç«ã€ãã³ããããã€ã玹ä»ããŸãã
- ã¯ãªãŒã³ã§èªã¿ãããã³ãŒããäœæãã: ã³ãŒãã£ã³ã°ã®ãã¹ã ãã©ã¯ãã£ã¹ãšã¹ã¿ã€ã« ã¬ã€ãã䜿çšããŠãã³ãŒããèªã¿ããããä¿å®ããããããããã°ã容æã§ããããšã確èªããŸããäžè²«ããã€ã³ãã³ããšåœåèŠåãç¶æããŠãã³ãŒãã®å¯èªæ§ãé«ããŸãã
- Android ã¢ãŒããã¯ã㣠ã³ã³ããŒãã³ãã䜿çšãã: Android ã¢ãŒããã¯ã㣠ã³ã³ããŒãã³ãã¯ãã³ãŒãå ã®è²¬ä»»ã®åé¢ã容æã«ãã管çãšãã¹ãã容æã«ããã©ã€ãã©ãªã®ã»ããã§ãã ViewModelãLiveDataãRoom ãªã©ã®ã³ã³ããŒãã³ãã䜿çšããŠãä¿å®å¯èœãªã¢ã㪠ã¢ãŒããã¯ãã£ãæ§ç¯ããŸãã
- ããŒã¿æ§é ãšã¢ã«ãŽãªãºã ãæé©åãã: ã¢ããªã®ç¹å®ã®èŠä»¶ãåŠçããããã«é©åãªããŒã¿æ§é ãšã¢ã«ãŽãªãºã ãéžæããæéãšç©ºéã®è€éãã®ç¹ã§å¹ççã§ããããšãä¿èšŒããŸãããŸããããã©ãŒãã³ã¹ã®ããã«æé©åãããçµã¿èŸŒã¿ãŸãã¯ãµãŒãããŒãã£ã® Java ãŸã㯠Kotlin ã©ã€ãã©ãªã®äœ¿çšãæ€èšããŠãã ããã
- ãªããžã§ã¯ããšãªãœãŒã¹ãåå©çšãã: ã¡ã¢ãªäœ¿çšéãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®å¢å ã«ã€ãªããå¯èœæ§ããããäžå¿ èŠãªãªããžã§ã¯ãããªãœãŒã¹ã®äœæãé¿ããŸãã代ããã«ããªããžã§ã¯ã ãã£ãã·ã¥ãŸãã¯ããŒãªã³ã°æè¡ã䜿çšããŠãæ¢åã®ãªããžã§ã¯ããåå©çšãããªãœãŒã¹å²ãåœãŠã®ãªãŒããŒããããæå°éã«æããŸãã
- ã©ã€ãã©ãªãå¹ççã«äœ¿çšãã: RetrofitãOkHttpãGlide ãªã©ã®ã©ã€ãã©ãªã广çã«äœ¿çšããŠããããã¯ãŒã¯ãç»åã®èªã¿èŸŒã¿ãåŠçãªã©ã®åéã§ããã©ãŒãã³ã¹ãåäžãããŸãããã ããã¢ããªã®å®è¡å¯èœãã¡ã€ã«ã®ãµã€ãºã倧ãããªããªãããã«ãå¿ èŠãªã©ã€ãã©ãªã®ã¿ã䜿çšããããã«ããŠãã ããã
- ã³ãŒãã®å®è¡ãæé©åãã: Android Studioã® Android Profiler ã䜿çšããŠãã¢ããªã®ããã©ãŒãã³ã¹ãç£èŠããæ¹åãå¿ èŠãªé åãç¹å®ããŸããã³ãŒããããã¡ã€ãªã³ã°ã宿œããŠå®è¡ã®ããã«ããã¯ãçè§£ããããã©ãŒãã³ã¹ãåäžãããããã®æé©åãå®è£ ããŸãã
ã¡ã¢ãªç®¡ç
å¹ççãªã¡ã¢ãªç®¡çã¯ãäºæãã¬ã¯ã©ãã·ã¥ãå¿çæéã®é ãããšãã«ã®ãŒæ¶è²»éã®å€ããªã©ã®åé¡ãé²ãããšãã§ããããã髿§èœ Android ã¢ããªã«ãšã£ãŠéåžžã«éèŠã§ãã Android ã¢ããªã§ã¡ã¢ãªã广çã«ç®¡çããããã®ãã³ããããã€ã玹ä»ããŸãã
- åç¶æéã®é·ããªããžã§ã¯ãã®æ°ãæå°éã«æãã: åç¶æéã®é·ããªããžã§ã¯ãã®æ°ãæå°éã«æããŸããããã«ãããã¡ã¢ãªäœ¿çšéãšã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®ãªãŒããŒããããå¢å ããå¯èœæ§ããããŸãã Android Studioã®ã¡ã¢ãª ãããã¡ã€ã©ã䜿çšããŠã¢ããªã®ã¡ã¢ãªäœ¿çšéãç£èŠããããšã§ãåç¶æéã®é·ããªããžã§ã¯ããç¹å®ããŠæé©åããŸãã
- é©åãªããŒã¿æ§é ã䜿çšãã: ã¢ããªã®ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«åãããŠãã¡ã¢ãªäœ¿çšéãšããã©ãŒãã³ã¹ã®æé©ãªãã©ã³ã¹ãæäŸããããŒã¿æ§é ãéžæããŸããããšãã°ã远å ã®ã¡ã¢ãªå²ãåœãŠãå¿ èŠãªå Žåã§ããç¹å®ã®ç¶æ³ã§ã¯ ArrayList ã䜿çšããæ¹ã LinkedList ããå¹ççã§ããå ŽåããããŸãã
- ã¡ã¢ãª ãªãŒã¯ãåé¿ãã: ã¡ã¢ãª ãªãŒã¯ã¯ãäžèŠã«ãªã£ããªããžã§ã¯ãããŸã åç §ãããŠãããšãã«çºçããã¬ããŒãž ã³ã¬ã¯ã¿ãŒãã¡ã¢ãªãè§£æŸã§ããªããªããŸããã¡ã¢ãª ãªãŒã¯ãé²ãããã«ãå¿ èŠã«å¿ã㊠WeakReferences ã䜿çšããŸãããŸããLeakCanary ã©ã€ãã©ãªãŸãã¯Android Studioã® Memory Profiler ã䜿çšããŠãæœåšçãªãªãŒã¯ã調æ»ããŸãã
- ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãç£èŠãã: ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãé »ç¹ã«çºçããããæéãããããããããããšãããã©ãŒãã³ã¹ã®äœäžãçºçããå¯èœæ§ããããŸããã¡ã¢ãª ãããã¡ã€ã©ãŒã䜿çšããŠã¢ããªã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ ã€ãã³ããç£èŠããã³ãŒãã倿ŽããŠã€ãã³ãã®é »åºŠãšããã©ãŒãã³ã¹ãžã®åœ±é¿ã軜æžããŸãã
- Android ã©ã³ã¿ã€ã (ART) æ©èœã䜿çšãã: Android ã©ã³ã¿ã€ã ã«ã¯ãã¡ã¢ãªç®¡çãšã¢ããªã®ããã©ãŒãã³ã¹ã®åäžã«åœ¹ç«ã€åæã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãäºå (AOT) ã³ã³ãã€ã«ãªã©ã®æ©èœãå«ãŸããŠããŸããããŸããŸãª Android ããŒãžã§ã³ãšæ§æã®ããã€ã¹ã§ãã¹ãããŠãã¢ããªããããã®æ©èœã掻çšããŠããããšã確èªããŠãã ããã
ããããªãŒã®æé©å
Android ã¢ããªã®ããããªãŒäœ¿çšéãæé©åããããšã¯ãæºè¶³ã®ããæ°žç¶çãªãŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«äžå¯æ¬ ã§ããããããªãŒã®ããã©ãŒãã³ã¹ãäœããšããŠãŒã¶ãŒãã¢ããªãã¢ã³ã€ã³ã¹ããŒã«ãã代æ¿ã¢ããªãæ¢ãå¯èœæ§ããããŸããããããªãŒã®äœ¿çšãæé©åããã«ã¯ã次ã®ãã³ããèæ ®ããŠãã ããã
- ããã¯ã°ã©ãŠã³ãäœæ¥ãæžãã: ã¢ããªã䜿çšãããŠããªããšãã§ããããã¯ã°ã©ãŠã³ã ã¿ã¹ã¯ãšãµãŒãã¹ã«ããããããªãŒé»åãæ¶è²»ãããããšããããŸãã JobScheduler API ãŸã㯠WorkManager ã©ã€ãã©ãªã䜿çšããŠããã¯ã°ã©ãŠã³ãäœæ¥ãå¶éããã¿ã¹ã¯ãããå¹ççã«ã¹ã±ãžã¥ãŒã«ããŠå®è¡ããŸãã
- å¹ççãªã¢ã©ãŒã ãšãŠã§ã€ã¯ããã¯ã䜿çšãã: ã¢ã©ãŒã ãšãŠã§ã€ã¯ããã¯ã¯ããã¯ã°ã©ãŠã³ã ã¿ã¹ã¯ã®ç®¡çã«åœ¹ç«ã¡ãæ£ãã䜿çšããªããšããããªãŒé»åã倧éã«æ¶è²»ããå¯èœæ§ããããŸããäžæ£ç¢ºãªã¢ã©ãŒã ã䜿çšãããŠã§ã€ã¯ããã¯ã®äœ¿çšãæå°éã«æããŠãããããªãŒã®å¹ççãªæ¶è²»ã確ä¿ããŸãã
- Android ã®çé»åæ©èœãå©çšãã: Android ã¯ãDoze ã¢ãŒããã¢ã㪠ã¹ã¿ã³ãã€ãããããªãŒ ã»ãŒããŒãªã©ãããããªãŒäœ¿çšéã®æé©åã«åœ¹ç«ã€ããã€ãã®æ©èœãš API ãæäŸããŸãã Android ãæšå¥šããããããªãŒæé©åã®ãã¹ã ãã©ã¯ãã£ã¹ã«åŸã£ãŠãã¢ããªããããã®çé»åæ©èœãšäºææ§ã®ãããã®ã«ããŸãã
- ããããªãŒæ¶è²»ãç£èŠãã: Android Studioã®ããããªãŒ ãããã¡ã€ã©ãŒã䜿çšããŠãã¢ããªã®ããããªãŒæ¶è²»ãåæããæ¹åã®äœå°ãããé åãç¹å®ããŸããã¢ããªã®ã³ãŒããšæ§æãæé©åããŠãããããªãŒã®äœ¿çšéãæå°éã«æãããŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
- ãããã¯ãŒã¯äœ¿çšéãæé©åãã: ãããã¯ãŒã¯èŠæ±ã¯ãããããªãŒæ¶èã®äž»ãªåå ãšãªãå¯èœæ§ããããŸãããããã¯ãŒã¯ ãªã¯ãšã¹ãããããåŠçããããŒã¿è»¢éãæå°éã«æããVolley ã Retrofit ãªã©ã®å¹ççãªãããã¯ãŒã¯ ã©ã€ãã©ãªã䜿çšããŠããããã¯ãŒã¯ã®äœ¿çšãæé©åããããããªé»åãç¯çŽããŸããããã«ãé »ç¹ãªãããã¯ãŒã¯èŠæ±ã®å¿ èŠæ§ãæžããããã«ããã£ãã·ã¥æŠç¥ã®äœ¿çšãæ€èšããŠãã ããã
ãããã®ãã³ããšã AppMaster ã®ãããªåŒ·å㪠ããŒã³ãŒã ãã©ãããã©ãŒã ã®äœ¿çšã«ãããAndroid ã¢ããªã®ããã©ãŒãã³ã¹ãšå質ãå€§å¹ ã«åäžããå¯èœæ§ãããããšã«æ³šæããŠãã ãããã¢ããªã®ã³ãŒããã¡ã¢ãªç®¡çãããããªãŒäœ¿çšéãæé©åããããšã§ãåªãããŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ãæäŸããAndroid ã¢ããªã®æåãä¿èšŒã§ããŸãã

Android ããŒã«ãšãããã¡ã€ã©ãŒã䜿çšãã
Android ã¢ããªã®ããã©ãŒãã³ã¹ãåäžãããå Žåã¯ã Android StudioããŒã«ã®äœ¿çšããå§ããã®ãæé©ã§ãã Android Profiler ã¹ã€ãŒãã¯ãããŸããŸãªããã©ãŒãã³ã¹ ã¡ããªãã¯ãç£èŠããã®ã«åœ¹ç«ã¡ãæœåšçãªããã«ããã¯ã®ç¹å®ãšæé©åã容æã«ããŸããæŽ»çšãã¹ãéèŠãªããŒã«ãšãããã¡ã€ã©ãŒãããã€ã玹ä»ããŸãã
CPUãããã¡ã€ã©
CPU ãããã¡ã€ã©ãŒã¯ãã¢ããªã® CPU 䜿çšçãåæããŠããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸããããã䜿çšãããšãããŸããŸãªã¹ã¬ãããã¡ãœããåŒã³åºãã«è²»ãããã CPU æéãç£èŠã§ããéå°ãª CPU ãµã€ã¯ã«ãæ¶è²»ããç¹å®ã®ã¡ãœãããç¹å®ã§ããŸããããã«ãCPU ãããã¡ã€ã©ãŒã¯ãã·ã¹ãã ã³ãŒã«ã®ãã¬ãŒã¹ãšãã¢ããªã Android ãã¬ãŒã ã¯ãŒã¯ãšã©ã®ããã«å¯Ÿè©±ãããããã§ãã¯ããããšããµããŒãããŸããåé¡ã®ããã¡ãœãããæé©åããã³ã¹ãã®ãããæäœãããå¹ççãªä»£æ¿ææ®µã«çœ®ãæããŸãã
ã¡ã¢ãªãããã¡ã€ã©
ã¡ã¢ãª ãããã¡ã€ã©ã¯ãã¢ããªã®ã¡ã¢ãªäœ¿çšéã远跡ããããã®éèŠãªããŒã«ã§ããããã«ãããã¢ããªãæéã®çµéãšãšãã«æ¶è²»ããã¡ã¢ãªéã調æ»ããã¡ã¢ãª ãªãŒã¯ã®å¯èœæ§ãç¹å®ã§ããŸããã¡ã¢ãª ãªãŒã¯ã¯ãªãœãŒã¹ã®äžå¿ èŠãªæ¶è²»ã«ã€ãªãããã¢ããªãå¿çããªããªã£ãããã¯ã©ãã·ã¥ãããããããšããããŸããã¡ã¢ãª ãããã¡ã€ã©ã䜿çšãããšãããŒã ã¡ã¢ãªãå²ãåœãŠæ°ãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ ã€ãã³ããç£èŠããããšã§ãã¡ã¢ãª ãªãŒã¯ãæ€åºããã¢ããªã®ã¡ã¢ãªç®¡çãæ¹åã§ããŸãã
ããããªãŒãããã¡ã€ã©ãŒ
å¹çç㪠Android ã¢ããªãäœæããããã®éèŠãªåŽé¢ã¯ãããããªãŒã®äœ¿çšéãæé©åããããšã§ãã Battery Profiler ã䜿çšãããšãã¢ããªã®ãšãã«ã®ãŒæ¶è²»ãç£èŠã§ããã©ã®æäœãããããªãŒå¯¿åœãæ¶èããŠãããã倿ããã®ã«åœ¹ç«ã¡ãŸãããã®ããŒã«ã¯ãWi-Fi ãã¢ãã€ã«ç¡ç·ã¢ã¯ãã£ããã£ãGPS ãªã¯ãšã¹ããé«ã CPU 䜿çšçãªã©ã®ã€ãã³ããç¹å®ããã®ã«åœ¹ç«ã¡ãã¢ããªã®ãšãã«ã®ãŒå¹çãæé©åã§ããŸãã
ãããã¯ãŒã¯ãããã¡ã€ã©ãŒ
ãããã¯ãŒã¯ ããã©ãŒãã³ã¹ã¯ãAndroid ã¢ããªã®ãŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ã«å€§ããªåœ±é¿ãäžããŸãããããã¯ãŒã¯ ãããã¡ã€ã©ãŒã䜿çšãããšãéåä¿¡ãããããŒã¿éããããã¯ãŒã¯ ãªã¯ãšã¹ããå¿çæéãªã©ãã¢ããªã®ãããã¯ãŒã¯ ã¢ã¯ãã£ããã£ãç£èŠã§ããŸãããããã¯ãŒã¯ ãã©ãã£ãã¯ã調æ»ããããšã§ãã¢ããªã®ãããã¯ãŒã¯åŒã³åºããæé©åããå¿çæéãççž®ãã垯åå¹ ã®äœ¿çšéãåæžã§ããŸãã
Systrace ããŒã«
Systrace ã¯ãã¢ããªã®ããã©ãŒãã³ã¹ãã·ã¹ãã ã¬ãã«ã§åæããããã®åŒ·åãªããŒã«ã§ãã Android ãã¬ãŒã ã¯ãŒã¯ãããŒããŠã§ã¢ ãµãã·ã¹ãã ããã®ããŒã¿ãšãšãã«ãã¢ããªã®å®è¡ã«é¢ãã詳现æ å ±ããã£ããã£ããŠè¡šç€ºããŸãããã®æ å ±ã¯ãã¢ããªã®éå¹çæ§ãæããã«ããæé©åãã¹ãé åãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
ã¬ã€ã¢ãŠãã€ã³ã¹ãã¯ã¿ãŒ
ã¬ã€ã¢ãŠã ã€ã³ã¹ãã¯ã¿ãŒã¯ãã¢ããªã®ãŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ (UI) ããããã°ããã³æé©åããããã®äŸ¿å©ãªããŒã«ã§ããããã«ããããã¥ãŒéå±€ãæ€æ»ããåã ã®èŠçŽ ã®ããããã£ãåæã§ãããããã¢ããªã®ã¬ã€ã¢ãŠããšå€èгãæé©åããããšã容æã«ãªããŸãã Layout Inspector ã¯ãã¢ããªã®ã¬ã³ããªã³ã° ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ã®ããéè€ãã¥ãŒããã®ä»ã®ã¬ã€ã¢ãŠãã®åé¡ãæ€åºããã®ã«ã圹ç«ã¡ãŸãã
UIãšã¬ã³ããªã³ã°ã®ããã©ãŒãã³ã¹
Android ã¢ããªã® ãŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ (UI) ãšã¬ã³ããªã³ã° ããã©ãŒãã³ã¹ãæé©åããããšã¯ããŠãŒã¶ãŒã«ã¹ã ãŒãºã§å¿çæ§ã®é«ããšã¯ã¹ããªãšã³ã¹ãæäŸããããã«éèŠã§ããã¢ããªã® UI ãšã¬ã³ããªã³ã°ã®ããã©ãŒãã³ã¹ãåäžãããããã®ãã³ããããã€ã玹ä»ããŸãã
å¹ççãªã¬ã€ã¢ãŠãã䜿çšãã
ã¢ããªã® UI ã«é©åãªã¬ã€ã¢ãŠããéžæããŸããã¬ã³ããªã³ã°ã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããæ·±ããã¹ããããã¬ã€ã¢ãŠããè€éãªã¬ã€ã¢ãŠãã¯é¿ããŠãã ããã ConstraintLayout ã䜿çšããŠãã©ããã§å¹ççãªã¬ã€ã¢ãŠããäœæããå¿ èŠã«å¿ã㊠RelativeLayout ãŸã㯠FrameLayout ã䜿çšããŸããããã«ãåé·ãŸãã¯äžèŠãªãã¥ãŒãåé€ããŠã¬ã€ã¢ãŠããæé©åããŸãã
ãªãŒããŒãããŒãæå°éã«æãã
åäžãã¬ãŒã å ã§ãã¯ã»ã«ãè€æ°åæç»ããããšãªãŒããŒãããŒãçºçããã¬ã³ããªã³ã°ã®ããã©ãŒãã³ã¹ãäœäžããŸãããªãŒããŒãããŒãæå°éã«æããã«ã¯ããGPU ãªãŒããŒãããŒã衚瀺ãéçºè åããªãã·ã§ã³ã䜿çšããŠãã¢ããªå ã®ãªãŒããŒãããŒé åãèŠèŠåããŸããäžèŠãªãã¥ãŒ ã¬ã€ã€ãåé€ããå¿ èŠãªå Žåã«ã®ã¿ãã¥ãŒã«éæãªèæ¯ãèšå®ããclipChildren 屿§ãš ClipToPadding 屿§ãé©åã«äœ¿çšããŠãã¬ã€ã¢ãŠããæé©åããŸãã
ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãæå¹ã«ããŸã
ããŒããŠã§ã¢ ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯ GPU ãæŽ»çšããŠãã¢ããªã®ã¬ã³ããªã³ã° ããã©ãŒãã³ã¹ãåäžãããŸããããã¹ã ãŒãºã§å¿çæ§ã®é«ã UI ã¬ã³ããªã³ã°ãå®çŸããã«ã¯ãããŒããŠã§ã¢ ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãããã©ã«ãã§æå¹ã«ãªã£ãŠããããšã確èªããŸãã
ã¢ãã¡ãŒã·ã§ã³ãæžãã
è€éãªã¢ãã¡ãŒã·ã§ã³ã¯ãç¹ã«ããŒãšã³ã ããã€ã¹ã§ã¢ããªã®ããã©ãŒãã³ã¹ã劚ããå¯èœæ§ããããŸããã¢ãã¡ãŒã·ã§ã³ã¯æ éã«äœ¿çšãããŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ãäœäžãããªãæ¹æ³ã§å®è£ ããŠãã ããã ViewPropertyAnimatorãLottieãAnimatedVectorDrawable ãªã©ã® Android ã®çµã¿èŸŒã¿ã¢ãã¡ãŒã·ã§ã³ ã©ã€ãã©ãªã䜿çšããŠã¢ãã¡ãŒã·ã§ã³ãæé©åããŸãã
ãã¯ã¿ãŒ ãããŒã¢ãã«ã®äœ¿çš
ãã¯ã¿ãŒ ãããŒã¢ãã«ã¯è§£å床ã«äŸåããªããããã¢ããªã¯ãã¡ã€ã« ãµã€ãºãå¢ããããå質ãæãªãããšãªãã°ã©ãã£ãã¯ãæ¡å€§çž®å°ã§ããŸããæŽç·Žãããå¹çç㪠UI èŠçŽ ãäœæããã«ã¯ãå¯èœãªéããã¯ã¿ãŒ ãããŒã¢ãã«ã䜿çšããŸãã
ã«ã¹ã¿ã ãã¥ãŒã®æé©å
ã¢ããªã§ã«ã¹ã¿ã ãã¥ãŒã䜿çšããŠããå Žåã¯ãã¬ã³ããªã³ã° ããã©ãŒãã³ã¹ãåäžãããããã«ã«ã¹ã¿ã ãã¥ãŒãæé©åããŸãã onDraw() ã¡ãœããã§è€éãªèšç®ãå®è¡ããããšãé¿ãããã€ã³ã ãªããžã§ã¯ããåå©çšããŠãªããžã§ã¯ãã®å²ãåœãŠãæå°éã«æããŸããããã«ãç»é¢å€ãé®èœããããã¥ãŒã®äžå¿ èŠãªæç»ãé¿ããããã«ããã¥ãŒ ã«ãªã³ã°ã®å®è£ ãæ€èšããŠãã ããã

ã¹ãã¬ãŒãžãšãããã¯ãŒã¯
é«å質㮠Android ã¢ããªãäœæããã«ã¯ãå¹ççãªã¹ãã¬ãŒãžãšãããã¯ãŒã¯ãäžå¯æ¬ ã§ããã¢ããªã®ã¹ãã¬ãŒãžãšãããã¯ãŒã¯ã®ããã©ãŒãã³ã¹ãåäžãããããã®ãã¹ã ãã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãã
é©åãªããŒã¿ ã¹ãã¬ãŒãž ãªãã·ã§ã³ãéžæãã
ã¢ããªã®ããŒã¿ ããŒãºã«å¿ããŠãé©åãªããŒã¿ ã¹ãã¬ãŒãž ãªãã·ã§ã³ãéžæããŠãã ããã Android ã¯ãåçŽãªããŒãšå€ã®ãã¢ã® SharedPreferencesãæ§é åããŒã¿ã® SQLite ããŒã¿ããŒã¹ãããé«åºŠãªããŒã¿ ã¹ãã¬ãŒãž ãœãªã¥ãŒã·ã§ã³ã® Room æ°žç¶ã©ã€ãã©ãªãªã©ãããŸããŸãªãªãã·ã§ã³ãæäŸããŸããéžæããã¹ãã¬ãŒãžæ¹æ³ãå¹ççã§ãããã¢ããªã®ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«æé©åãããŠããããšã確èªããŠãã ããã
ããŒã¿ã¢ã¯ã»ã¹ã®æé©å
ããŒã¿ ã¢ã¯ã»ã¹æäœãæé©åããããšã§ãã¢ããªã®ããã©ãŒãã³ã¹ãåäžãããŸããã€ã³ããã¯ã¹äœæãããŒãžããŒã·ã§ã³ããã£ã«ã¿ãªã³ã°ãªã©ã®å¹ççãªã¯ãšãªææ³ã䜿çšããŠãããŒã¿ããŒã¹ã®è² è·ãšååŸæéãççž®ããŸãããŸããããŒã¿ããŒã¹ ã¯ãšãªããããã¯ãŒã¯ ãªã¯ãšã¹ãã®ç¹°ãè¿ããæå°éã«æããããã«ãé »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ããã£ãã·ã¥ããããšãæ€èšããŠãã ããã
UIã¹ã¬ããã®ãããã¯ãåé¿ãã
ãã¡ã€ã« I/Oããããã¯ãŒã¯ãããŒã¿åŠçãªã©ãã¡ã€ã³ UI ã¹ã¬ããã§ã®é·æéã®æäœãåé¿ããŠãã¢ããªã®å¿çæ§ãç¶æããŸãã代ããã«ãAsyncTaskãAsyncTaskLoaderããŸãã¯ããã¯ã°ã©ãŠã³ã ã¹ã¬ããã䜿çšããŠããŠãŒã¶ãŒã®å¯Ÿè©±ããããã¯ããã«ãããã®æäœãå®è¡ããŸãã
å¹ççãªãããã¯ãŒã¯ ã©ã€ãã©ãªã䜿çšãã
ã¢ããªå ã§ãããã¯ãŒã¯èŠæ±ãšå¿çãåŠçããã«ã¯ãå¹ççãªãããã¯ãŒã¯ ã©ã€ãã©ãªãéžæããŸãã VolleyãRetrofitãOkHttp ãªã©ã®ã©ã€ãã©ãªã¯ããããã¯ãŒã¯ ã¿ã¹ã¯ãç°¡çŽ åããå®åã³ãŒããåæžããããã©ãŒãã³ã¹ãåäžãããã®ã«åœ¹ç«ã¡ãŸãããªã¯ãšã¹ãããããåŠçããããŒã¿è»¢éãæå°éã«æããå§çž®ã䜿çšãããããã¯ãŒã¯ ãšã©ãŒãé©åã«åŠçããããšã§ããããã¯ãŒã¯ã®äœ¿çšç¶æ³ãæé©åããŸãã
ãããã®ã¬ã€ãã©ã€ã³ã«åŸãã AppMasterno-codeãã©ãããã©ãŒã ãªã©ã®åŒ·åãªéçºããŒã«ã䜿çšããããšã§ããŠãŒã¶ãŒãæºè¶³ãããé«å質ã§ããã©ãŒãã³ã¹ã®é«ã Android ã¢ããªãäœæã§ããŸããåªããã¢ããªã®ããã©ãŒãã³ã¹ãšãŠãŒã¶ãŒæºè¶³åºŠãç¶æããã«ã¯ãç¶ç¶çãªæé©åãäžå¯æ¬ ã§ãã
ãããã質å
Android ã¢ããªã®ã³ãŒããæé©åããæ¹æ³ã«ã¯ãã¯ãªãŒã³ã§ã¢ãžã¥ãŒã«åãããã³ãŒãã®äœæãããŒã¿æ§é ã®æé©åãã©ã€ãã©ãªã®å¹ççãªäœ¿çšãªã©ããããŸããããã«ã Android Studioã® Android Profiler ã䜿çšããŠãã¢ããªã®ããã©ãŒãã³ã¹ãç£èŠããæœåšçãªåé¡ãç¹å®ããããšãã§ããŸãã
Android ã¢ããªã®ã¡ã¢ãªç®¡çãæ¹åããã«ã¯ãæå¹æéã®é·ããªããžã§ã¯ãã®æ°ãæå°éã«æããé©åãªããŒã¿æ§é ã䜿çšããã¡ã¢ãª ãªãŒã¯ãåé¿ããå¿ èŠããããŸããããã«ãã¡ã¢ãª ãããã¡ã€ã©ãŒã䜿çšããŠã¢ããªã®ã¡ã¢ãªäœ¿çšéãšã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãç£èŠããæœåšçãªåé¡ãç¹å®ããŸãã
ããã¯ã°ã©ãŠã³ãäœæ¥ãåæžããå¹ççãªã¢ã©ãŒã ãšãŠã§ã€ã¯ããã¯ã䜿çšããAndroid ã® JobScheduler ãŸã㯠WorkManager ãå©çšããããšã§ãAndroid ã¢ããªã®ããããªãŒäœ¿çšéãæé©åããŸãããŸããBattery Profiler ã䜿çšããŠããããªãŒæ¶è²»ãç£èŠãããªã¯ãšã¹ãããããåŠçããŠããŒã¿è»¢éãæå°éã«æããããšã§ãããã¯ãŒã¯äœ¿çšéãæé©åããŸãã
å¹ççãªã¬ã€ã¢ãŠãã䜿çšãããªãŒããŒãããŒãæå°éã«æããããŒããŠã§ã¢ ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãæå¹ã«ããã¢ãã¡ãŒã·ã§ã³ãåæžããããšã§ãAndroid ã¢ããªã® UI ãšã¬ã³ããªã³ã° ããã©ãŒãã³ã¹ãæé©åããŸãã Android Studioã® Layout Inspector ãš GPU Profiler ãå©çšããŠãæœåšçãªåé¡ãç¹å®ããã¢ããªã®å€èгãšããã©ãŒãã³ã¹ãæé©åããŸãã
Android ã¢ããªã®ã¹ãã¬ãŒãžãšãããã¯ãŒã¯ã«é¢ãããã¹ã ãã©ã¯ãã£ã¹ã«ã¯ãSharedPreferencesãSQLiteãRoom æ°žç¶ã©ã€ãã©ãªãªã©ã®é©åãªããŒã¿ ã¹ãã¬ãŒãž ãªãã·ã§ã³ã®äœ¿çšãããŒã¿ ã¢ã¯ã»ã¹ã®æé©åãUI ã¹ã¬ããã®ãããã¯ã®åé¿ãVolleyãRetrofitãOkHttp ãªã©ã®å¹ççãªãããã¯ãŒã¯ ã©ã€ãã©ãªã®äœ¿çšãªã©ãå«ãŸããŸããããã«ãããŒã¿ã®ãã£ãã·ã¥ãšå§çž®ã¯ããã©ãŒãã³ã¹ã®æé©åã«åœ¹ç«ã¡ãŸãã
Android Studio ãAndroid ã¢ããªéçºçšã®å ¬åŒçµ±åéçºç°å¢ (IDE) ã§ããã³ãŒã ãšãã£ã¿ãŒãã¬ã€ã¢ãŠã ãšãã£ã¿ãŒããšãã¥ã¬ãŒã¿ãŒããããã¡ã€ã©ãŒãªã©ãAndroid ã¢ããªã±ãŒã·ã§ã³ãå¹ççã«éçºããã¹ãããããã°ããããã®ããŒã«ãšæ©èœãæäŸããŸãã
Android Profiler ã¯ãéçºè ã CPUãã¡ã¢ãªããããã¯ãŒã¯äœ¿çšéãªã©ã®ã¢ããªã®ããã©ãŒãã³ã¹ãç£èŠããã®ã«åœ¹ç«ã€Android Studioå ã®ããŒã« ã»ããã§ããããã¯ãæœåšçãªããã©ãŒãã³ã¹ã®åé¡ãç¹å®ãããŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ãåäžãããããã«ã¢ããªãæé©åããæ¹æ³ã«ã€ããŠã®æŽå¯ãæäŸããã®ã«åœ¹ç«ã¡ãŸãã
ãªãŒããŒãããŒãšã¯ãåäžãã¬ãŒã å ã§åããã¯ã»ã«ãè€æ°åæç»ããããã»ã¹ãæããAndroid ã¢ããªã®ã¬ã³ããªã³ã° ããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãããªãŒããŒãããŒã®æé©åã«ã¯ãå¹ççãªã¬ã€ã¢ãŠãã®äœ¿çšãäžå¿ èŠãªãã¥ãŒ ã¬ã€ã€ã®åæžãèæ¯è²ãšç»åã®é©åãªèšå®ãå«ãŸããåããã¯ã»ã«ã®è€æ°ã®æç»ãæå°éã«æããããŸãã


